Capítulo de Creator de la guía de Neblla — el portal de creación: el muñeco, Flat, Templates, Mundo y Eco, «Mandar a mi app», las rutas de /api/creator y /api/store y las dos licencias de la tienda. El contrato base está en core.txt; el motor 3D, en mundo.txt.

Neblla Creator

Neblla Creator (https://creator.neblla.com) es donde se hacen las cosas que una app necesita y que no son código: un personaje, un sprite o un atlas, el aspecto de la interfaz, un modelo 3D. Lo usan las personas (con una cuenta Neblla) y los developers; tu agente no lo maneja, pero lo que sale de él acaba en la app de tu developer y el agente lo lee con las herramientas de siempre.

Los cinco estudios

Flat, Templates, Mundo y Eco piden una cuenta de developer; el muñeco no. Un estudio que no está listo sale en la portada como «pronto».

Animar en Flat y los sprites con estados

Flat tiene dos modos: Dibujar y Animar (el interruptor de la barra). En Animar aparece abajo la línea de tiempo común: una fila por capa, una celda por fotograma (se arrastran para moverlas; con Alt se enlazan) y un rombo por cada posición clave. Una posición clave mueve, gira, escala o aclara una capa de cualquier tipo (píxel, vector o texto) en un fotograma, y Flat calcula los de en medio con una curva (lineal, suave o rebote); las llaves no están en la capa, así una celda enlazada sigue siendo la misma en varios fotogramas. El GIF, el WebP, el atlas y la secuencia de PNG salen con los fotogramas ya calculados; «Convertir en dibujo» fija un fotograma calculado como dibujo de píxeles.

Las etiquetas de los fotogramas (andar, saltar, agacharse) son los estados de un sprite. El panel «Estados» da a cada uno si se repite, a qué estado pasa al acabar, si no se interrumpe (un golpe) y de qué otro es el espejo («andar a la izquierda» es andar con flip, sin dibujarlo); y a cada fotograma su anclaje (los pies), una caja de choque, una caja de golpe y eventos con nombre (paso). Exportar → Atlas → «Sprite con estados» da nombre.png y nombre.nbsprite, que es además un atlas Aseprite (Phaser 3 lo abre con load.aseprite). Para jugarlo en una página:


<script type="module">
  import { sprite } from 'https://neblla.com/sdk/neblla-sprite.js';
  const mario = await sprite('/img/mario.nbsprite');        // el PNG se lee de la misma carpeta
  mario.on('paso', () => /* sonar un efecto */ 0);          // evento puesto en Flat, en su fotograma
  mario.play('andar', { flip: true });                      // andar a la izquierda
  // en tu bucle de juego: mario.update(msDesdeElÚltimo); mario.draw(ctx, x, y);  (x, y: donde cae el anclaje)
  // mario.frame() da la celda del atlas, el anclaje y las cajas (relativas al anclaje, espejadas si hay flip) para otro motor
</script>

play(estado) devuelve false si el estado no existe o si el que suena es «no se interrumpe» y no ha acabado. Un estado que no repite pasa solo a su next (de saltar a caer). on('end' | 'loop' | 'state' | <evento>, fn) avisa. Un fichero que no pasa checkSprite se rechaza con la lista de motivos (error.errors).

Mis creaciones

Todo lo que hace un estudio es una creación: un documento editable (su «receta», que solo lee su estudio) con nombre, tipo (flat, template, block, mundo), miniatura y versiones, guardado en la cuenta de la persona. Se abre, se duplica, se renombra, se borra y se exporta. Una creación guarda hasta 20 versiones (las 10 con nombre no se pierden nunca) y una persona puede tener 500. El resto de límites (tamaño de la receta, ficheros por exportación, nota) los devuelve GET /api/creator/creations en limits.

«Mandar a mi app»

Exportar pone lo que el estudio dibuja en los Medios de una app del developer, en la colección creator. Hasta 10 ficheros por exportación (un atlas lleva su imagen y su mapa), con una nota para la IA del developer: qué es y cómo lo usa client.js. Tu agente la lee con neblla_media (la nota viene en cada medio) y escribe el código que lo usa. Hace falta poder editar esa app (el dueño o su equipo). Lo mismo, en sentido contrario, es «Abrir desde mi app»: un estudio abre un medio de la app para seguir editándolo.

Una plantilla va por otro camino, «Ver en mi app»: escribe el aspecto en el borrador de la app (main.css, y con layout también las pantallas). Los ids que la app declara en client.js tienen que estar todos en la plantilla (template_missing_ids, con los nombres, antes de escribir nada). Con publish el borrador se publica; bajo los 14 años nada se publica (modo familia). «Volver al diseño anterior» lo deshace.

Las rutas de /api/creator

Son las que llaman las páginas de Creator, con la sesión Neblla de la persona (cookie). Las escrituras solo se aceptan desde las páginas de Neblla (forbidden_origin desde otro origen); sin login, 401 login_required. No son una API para el código de una app.

La tienda y sus dos licencias

La tienda (https://creator.neblla.com/store) vende lo que hacen los estudios. Lo que hay a la venta y cómo se usa en un juego está en mundo.txt («El catálogo de cosas de Neblla»); aquí, lo que importa de las licencias:

Las rutas, con la sesión Neblla:

Errores

Todos responden { error: '<código>' }. Los de Creator empiezan por creation_ (creation_export_forbidden si no puedes editar esa app, creation_export_too_many, creation_file_bad, creation_note_bad), template_ (template_missing_ids, template_duplicate_ids, template_checklist_failed, template_not_applied) o avatar_; los de la tienda, por store_ (store_payouts_needed: conecta tu cuenta de cobros antes de vender).