Capítulo de Creator de la guía de Neblla — el portal de creación: el muñeco, Flat, Templates y Mundo, «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 cuatro estudios
- El muñeco (
/doll): la persona que juega diseña su personaje, el mismo en todos los juegos de Mundo (neblla.avatar, en mundo.txt). Basta una cuenta Neblla. - Flat (
/flat): imágenes y animaciones en 2D: sprites, hojas de sprites (un atlas con su mapa JSON, también girado y con anclas con nombre), iconos, tipografías (las que escoges se guardan con la creación, también en árabe y de derecha a izquierda), SVG. Exporta PNG, WebP, SVG y GIF. - Templates (
/templates): el aspecto de la interfaz de una app (colores, tipos de letra, bloques de pantalla). Una plantilla se aplica a una app («Ver en mi app») y puede pedir ayuda con un enlace de revisión sin cuenta. - Mundo (
/mundo): modelos 3D (formas, modificadores, huesos, accesorios para el muñeco, choques y puntos con nombre). Exportaglb, queneblla.worldcarga tal cual (mundo.txt, «Modelos 3D»).
Flat, Templates y Mundo piden una cuenta de developer; el muñeco no. Un estudio que no está listo sale en la portada como «pronto».
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 sesión, 401 login_required. No son una API para el código de una app.
- Quién y qué:
GET /api/creator/me(quién es y qué estudios ve),GET /api/creator/ageyPUT /api/creator/age(la fecha de nacimiento, que decide quién puede vender),GET /api/creator/prefs/:studioyPUT /api/creator/prefs/:studio(los ajustes de exportación con nombre). - Creaciones:
GET /api/creator/creations,POST /api/creator/creations,GET /api/creator/creations/:id,PUT /api/creator/creations/:id,DELETE /api/creator/creations/:id,POST /api/creator/creations/:id/duplicate,GET /api/creator/creations/:id/versions/:n,POST /api/creator/creations/:id/restore,GET /api/creator/creations/:id/thumb. - Hacia una app:
GET /api/creator/apps(las apps a las que puede mandar),POST /api/creator/creations/:id/export(«Mandar a mi app»),GET /api/creator/apps/:appId/mediayGET /api/creator/apps/:appId/media/:id/file(abrir desde los Medios),GET /api/creator/apps/:appId/products,GET /api/creator/apps/:appId/style,GET /api/creator/apps/:appId/testflow,GET /api/creator/creations/:id/recognises/:appId,POST /api/creator/creations/:id/applyyPOST /api/creator/apps/:appId/unapply. - Paletas y letras:
GET /api/creator/palettesyPUT /api/creator/palettes,GET /api/creator/lospec/:slug,GET /api/creator/fonts/list,GET /api/creator/fonts/file,GET /api/creator/fonts/preview. - Ficheros:
GET /api/creator/blobs/:hash,HEAD /api/creator/blobs/:hashyPUT /api/creator/blobs/:hash(los ficheros grandes de una creación, por su huella). - Lo mío en el muñeco:
PUT /api/creator/own-thingsyDELETE /api/creator/own-things/:id(«Ponérmelo»: una cosa propia pasa la misma revisión que las de la tienda). - Pedir ayuda (Templates):
POST /api/creator/creations/:id/review,GET /api/creator/creations/:id/review,DELETE /api/creator/creations/:id/review/:linkId,PUT /api/creator/creations/:id/review/:linkId/comments/:cid; y, sin cuenta,GET /api/creator/review/:tokenyPOST /api/creator/review/:token/comments: quien tiene el enlace lo ve y comenta, y el token de la dirección es el permiso. - Entregar a otra persona:
POST /api/creator/creations/:id/deliver,GET /api/creator/delivery/:token(sin cuenta, para verlo) yPOST /api/creator/delivery/:token/accept. - Menores (modo familia):
GET /api/creator/family,POST /api/creator/family/invite,GET /api/creator/family/invite/:token,POST /api/creator/family/invite/:token/accept,DELETE /api/creator/family/links/:id,GET /api/creator/family/minors/:link/creations/:id,PUT /api/creator/family/minors/:link/sellyDELETE /api/creator/family/minors/:link: un adulto enlazado ve lo que hace el menor y decide si puede vender; bajo los 14 años nada se publica ni se vende.
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:
- Dos licencias, una por portal. La de persona (
person) la compra una persona y la lleva en su muñeco en todos los juegos. La de developer (dev) la compra un developer una vez y la usa en todas sus apps y en lo que él vende. Ninguna deja revender ni compartir el fichero, y no se compra dos veces la misma. - Tipos:
avatar(una cosa para el muñeco),piece,template,blockypack(plantillas y bloques de Templates, que se venden como su receta, con versiones numeradas). - Cobra el autor. Cada venta se cobra en la cuenta de Stripe del autor; las devoluciones y las disputas son suyas y Neblla se queda una comisión que baja con el precio. Mientras Neblla no abra la tienda de verdad, cobra en modo de pruebas de Stripe (
test: trueen el escaparate). - Antes de publicar, Neblla lo prueba (peso, triángulos, texturas y, para el muñeco, cinco cuerpos y cinco posturas).
- Carrito y créditos solo si Neblla los ha abierto. Hasta entonces,
store_cart_closedystore_credits_closed(409), y se compra de una en una. - Denunciar: cualquier cosa de la tienda se puede denunciar (
POST /api/store/report).
Las rutas, con la sesión Neblla:
- Escaparate:
GET /api/store/products,GET /api/store/products/:id,GET /api/store/products/:id/preview,GET /api/store/neblla(las piezas gratis del catálogo de Mundo, paginadas),GET /api/store/asset/:id(la dirección del fichero con la licencia de developer, paraworld.load('store:<id>')). - Comprar:
POST /api/store/checkout,POST /api/store/cart/quote,POST /api/store/cart,GET /api/store/mine(lo comprado),POST /api/store/adopt(llevarse una plantilla o un bloque comprado),GET /api/store/outdatedyPOST /api/store/copies/:id/upgrade(las copias que tienen versión nueva y su actualización). - Vender:
GET /api/store/author,GET /api/store/author/sales,POST /api/store/author/quote,POST /api/store/author/products,PATCH /api/store/author/products/:id,PUT /api/store/author/products/:id/file,POST /api/store/author/products/:id/publish,POST /api/store/author/products/:id/releaseyPOST /api/store/author/products/:id/withdraw. Desde un agente, lo mismo conneblla_store(mcp.txt).
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).