Saltar al contenido
Docs

El validador y sus códigos

Qué revisa greengames validar y en qué orden, la forma de un problema y la lista completa de códigos GB con su nivel, su mensaje y cómo resolver cada uno.

Corresponde aFormato 1, API 1 Para quien escribe código Esta página se genera desde las fuentes del SDK.

En esta página

Qué revisa y en qué orden#

Revisa, en este orden: que los archivos existan y sean JSON; que el script se pueda unir; los tipos del script con TypeScript (solo conoce JavaScript estándar y la API: fetch o setTimeout son errores de tipo); los esquemas; y las reglas del formato. Cada problema es un objeto:

ts
interface Problema {
  nivel: 'error' | 'aviso';   // un error impide empaquetar y probar
  codigo: string;             // estable: GB001, GB210...
  archivo: string;            // 'juego.json', 'escenas/principal.json', 'scripts/principal.ts', 'pruebas/bot.json'
  ruta: string;               // dentro del archivo: 'piezas[3].tamano' o 'linea 40, columna 16'
  mensaje: string;
  sugerencia?: string;        // cómo corregirlo
}

--json escribe { "<slug>": { "valido": boolean, "errores": Problema[], "avisos": Problema[] } }.

Los problemas del script traen el archivo y la línea del código fuente (scripts/principal.ts, linea 48), no del script unido. Un error de esquema en una escena no produce errores falsos de piezas o zonas inexistentes. Con --idioma en (o validarPaquete(paquete, { idioma: 'en' })) el mensaje y la sugerencia salen en inglés; codigo, archivo, ruta y nivel no cambian.

En español los mensajes salen sin tildes, tal como los escribe la herramienta: así los puedes buscar en esta página.

Grupos de códigos#

GrupoCódigosQué revisan
LecturaGB001 a GB003JSON mal escrito, archivo que falta, id distinto del directorio
ManifiestoGB101 a GB122esquema, dificultades, tablas, escena inicial, portada, textos iguales en ambos idiomas; máximo de jugadores y modos de multijugador
EscenasGB200 a GB248esquema, ids repetidos, colores, esferas y cilindros, movimiento, apariciones sin suelo; aire reservado, colores, bloques y biomas que no existen o se repiten, tabla sin biomas de tierra, estructuras; piezas con forma lamina y mapas de baldosas
ScriptGB300 a GB330imports no permitidos, error de sintaxis, tamaño, vacío; usa algo que no existe en la sala (red, DOM, temporizadores, eval, async); avisos por Date y Math.random; avisos: nunca llama a terminar, no registra alIniciar; claves de texto, piezas, zonas, apariciones o tablas que no existen; errores de tipos de TypeScript
Guion del botGB400 a GB419esquema, destinos que no existen, condiciones incompletas
PaqueteGB501 a GB521formato, cantidad de escenas, recursos, tamaños
LáminasGB600 a GB606esquema de cada lámina, medidas de los cuadros, colores de su paleta, animaciones y cantidad de láminas
Modelos, texturas y sonidosGB700 a GB742contenedor, direcciones externas (GB703), extensiones no admitidas (GB704), datos libres (GB705), partes no admitidas (GB706), triángulos (GB707), huesos (GB708), nodos y partes (GB709), texturas (GB710, GB711), clips (GB712, GB713), caja (GB714), colisión (GB715); Cantidad y tamaño de modelos, texturas y sonidos; total de binarios (GB723); triángulos de modelos por escena (GB730), piezas que nombran un modelo, clip o textura que no existe; formato, recurso que no existe, recursos sin crédito (aviso); el formato de cada modelo (.glb), sus ajustes de colisión, las texturas y los sonidos del juego, sus presupuestos, las piezas con forma modelo y los créditos

Lectura#

CódigoNivelQué significaCómo resolverlo
GB001errorel archivo no es JSON valido: {msg}Abre el archivo en la línea y la columna que indica ruta. Revisa comas sobrantes o faltantes, comillas dobles en todas las claves y que no haya comentarios.
GB002errorno existe el archivo
la ruta del script sale del directorio del juego
Crea el archivo que nombra archivo. Un juego necesita juego.json, escenas/, scripts/, recursos/ y pruebas/; el script es el de la ruta que dice "script" en juego.json, y esa ruta no puede salir del directorio del juego.
GB003errorel id "{id}" no coincide con el nombre del directorio ("…")Escribe en "id" el nombre del directorio, o renombra el directorio para que coincida con el id.

Manifiesto#

CódigoNivelQué significaCómo resolverlo
GB101errorEl archivo no cumple el esquema (juego.json). El mensaje es uno de los de Errores de esquema.Corrige en juego.json la propiedad que indica ruta. Ver Manifiesto.
GB110error"min" ({min}) no puede ser mayor que "max" ({max})En jugadores, deja min menor o igual que max.
GB111errorla dificultad "{id}" esta repetidaDa a cada dificultad un id distinto.
GB112error"{dificultadInicial}" no esta en "dificultades"Escribe en dificultadInicial el id de una de las dificultades, o quita esa clave si el juego no declara dificultades.
GB113avisoel juego declara {dificultades} dificultad(es); el catalogo pide tresDeclara tres dificultades, por ejemplo facil, normal y dificil. Es un aviso: el juego se empaqueta igual.
GB114errorla tabla "{id}" esta repetidaDa a cada tabla de puntajes un id distinto.
GB115avisoel juego no declara ninguna tabla de puntajes; el catalogo pide que cada juego tenga puntajeAgrega una tabla a puntajes, por ejemplo { "id": "puntos", "nombre": {...}, "orden": "mayor", "formato": "numero" }.
GB116errorno existe la escena "{escenaInicial}"Crea escenas/<escenaInicial>.json o corrige el nombre en escenaInicial.
GB117errorno existe el recurso "{portada}"Pon la imagen en la ruta que dice portada, dentro del directorio del juego, o corrige la ruta.
GB118errorfalta la clave "…" (existe en "es")
falta la clave "…" (existe en "en")
Agrega la clave que falta: textos.es y textos.en deben tener las mismas claves.
GB119errorlas variables no coinciden entre idiomas: es usa {…} y en usa {…}Usa las mismas variables entre llaves en el texto en español y en el texto en inglés de esa clave.
GB120avisoel catalogo pide que el juego funcione con teclado, tactil y mandoDeclara teclado, tactil y mando en true dentro de controles y prueba el juego con cada uno: el reproductor ya traduce los tres a las mismas acciones.
GB121errorel maximo de jugadores es 16Baja jugadores.max hasta el máximo que indica el mensaje. Ver Límites vigentes.
GB122errorUn modo de multijugador pide más jugadores que jugadores.max.
el juego admite {max} jugador(es) ("jugadores.max") y el modo local pide {max}
el juego admite {max} jugador(es) ("jugadores.max") y el modo en linea pide {max}
Sube jugadores.max o baja el max del modo que nombra ruta (multijugador.local.max o multijugador.enLinea.max). Ver Manifiesto.

Escenas#

CódigoNivelQué significaCómo resolverlo
GB200errorEl archivo no cumple el esquema (escenas/<id>.json). El mensaje es uno de los de Errores de esquema.Corrige en esa escena la propiedad que indica ruta. Ver Escenas.
GB201errorel id "{id}" no coincide con el nombre del archivo ("{clave}")Escribe en "id" el nombre del archivo de la escena, sin .json.
GB202errorla dificultad "…" no existe en juego.jsonEn la lista dificultades que indica ruta, usa solo ids declarados en dificultades de juego.json.
GB203error"desde" debe ser menor que "hasta"En ambiente.niebla, deja desde menor que hasta.
GB204errorel id "{id}" ya lo usa piezas[…]Da a cada pieza un id único en la escena. Si son varias piezas del mismo tipo, usa una etiqueta común y quita el id.
GB205errorhay {dinamicas} piezas dinamicas y el maximo es 150Deja como "fija" todo lo que no necesite moverse con la física.
GB206errorla aparicion "{id}" esta repetidaDa a cada aparición un id distinto.
GB207avisono hay ninguna pieza solida bajo la aparicion "{id}" […]: el jugador caeria al vacioPon la aparición sobre una plataforma: su posicion es donde quedan los pies.
GB208errorla zona "{id}" esta repetidaDa a cada zona un id distinto.
GB210errorel color "{color}" no existe en la paletaUsa un color de la paleta (la sugerencia del problema propone el más parecido) o agrega el tuyo en paleta de la escena.
GB211erroruna esfera necesita las tres medidas iguales, pero tiene […]
una zona esferica necesita las tres medidas iguales
Escribe las tres medidas de tamano iguales: es el diámetro.
GB212errorun cilindro necesita ancho y largo iguales (el diametro), pero tiene […]
una zona cilindrica necesita ancho y largo iguales
Escribe el ancho y el largo de tamano iguales (el diámetro). El eje del cilindro es Y; para acostarlo usa rotacion.
GB213error"movimiento" no funciona con fisica "dinamica": a esa pieza la mueve la fisicaQuita movimiento, o cambia fisica a "fija" (o a "ninguna" si es decorado).
GB214aviso"solida": false no hace falta en una pieza con fisica "ninguna" (ya es decorado sin colision)Quita "solida": false: una pieza con física "ninguna" ya no choca.
GB220erroruna pieza con forma "lamina" necesita decir cual: falta "lamina"Agrega "lamina": "<id>" a la pieza, con el id de una lámina de laminas/ (la sugerencia lista las que hay). Si no hay ninguna, crea laminas/<id>.json. Ver Escenas.
GB221errorno existe la lamina "{lamina}"Corrige el id (la sugerencia propone el más parecido o lista las láminas del juego) o crea laminas/<id>.json. También lo da una baldosa que nombra una lámina que no existe.
GB222errorla lamina "{lamina}" no tiene la animacion "{animacion}"
la lamina "{lamina}" tiene {cuadros} cuadro(s) y se pide el {animacion}
Usa una animación que la lámina declare en animaciones (la sugerencia las lista) o un número de cuadro que exista: los cuadros se cuentan desde 0. En una baldosa, corrige cuadro.
GB223avisouna lamina con fisica "dinamica" choca como una caja de su mismo tamanoNo impide empaquetar. Si la lámina es decorado, usa "fisica": "ninguna"; si de verdad debe moverla la física, ten presente que choca como una caja de su tamaño.
GB224aviso"lamina" solo se usa con "forma": "lamina" (esta pieza es "{forma}")No impide empaquetar. Quita "lamina" de la pieza, o cambia su "forma" a "lamina" si querías una imagen plana.
GB230errorhay mas de un mapa con el id "{id}"Dale a cada mapa de la escena un id distinto.
GB231errorla fila usa la baldosa "…", que no esta en "baldosas" del mapaDeclara ese carácter en baldosas del mapa o cámbialo en la fila que indica ruta. El vacío se escribe con . o con un espacio.
GB232errorla baldosa "…" no dice como se dibujaAgrega a la baldosa "material" (un color) o "lamina" (el id de una lámina).
GB234errorla colision "{col}" solo existe en mapas verticales ("plano": "xy")
la colision "suelo" solo existe en mapas de suelo ("plano": "xz")
Usa una colisión que exista en ese tipo de mapa. En un mapa de suelo ("plano": "xz"): solida, suelo, peligro o ninguna. En uno vertical ("plano": "xy"): solida, plataforma, peligro, escalera o ninguna. Ver Escenas.
GB235errorlos mapas de la escena suman {celdas} baldosas y el maximo es 200000Reparte el mundo en varias escenas o deja vacío lo que no se ve. Ver Límites vigentes.
GB236aviso"paralaje" solo se aplica a capas de fondo
"paralaje" solo se aplica en mapas verticales ("plano": "xy")
No impide empaquetar. paralaje solo actúa en capas de fondo de mapas verticales: agrega "fondo": true a la capa (las capas de fondo no chocan) o quita paralaje.
GB240errorel id de bloque "aire" esta reservado para el vacioUsa otro id para ese bloque. aire es el vacío: se escribe sin declararlo.
GB241errorel color "…" del bloque "{id}" no existe en la paleta ni es un color "#rrggbb"Usa un nombre de la paleta, uno de paleta de la escena o un color "#rrggbb". La sugerencia propone el más parecido.
GB242errorel bloque "{id}" no esta en "bloques" del terrenoDeclara ese bloque en bloques del terreno o corrige el id donde indica ruta. La sugerencia lista los declarados.
GB243errorel bioma "{id}" esta repetido
la estructura "{id}" esta repetida
Dale a cada bioma y a cada estructura un id distinto.
GB244errorla tabla de biomas no tiene ninguno de tierraDeja al menos un bioma sin zona (o con "zona": "tierra"): es donde aparecen los jugadores.
GB245errorel bioma "{b}" no esta en la tabla de biomasUsa en biomas de la estructura solo ids de la tabla de biomas. La sugerencia lista los declarados.
GB246avisoel bloque "{id}" tiene forma "cruz": una cruz nunca es solida
el bloque "{agua}" llena el mar pero no es liquido
Es un aviso. Quita solido de un bloque con forma cruz (o usa la forma cubo), y agrega "liquido": true al bloque que llena el mar para que se pueda nadar en él.
GB247error"alto" va de menor a mayor, pero dice […]Escribe alto del árbol de menor a mayor: [mínimo, máximo].
GB248errorla fila usa "…", que no esta en "leyenda" de la estructuraDeclara ese carácter en leyenda de la estructura o cámbialo en la fila que indica ruta. . no toca nada y _ deja aire.

Script#

CódigoNivelQué significaCómo resolverlo
GB300errorEl script no se pudo unir. Además de los mensajes que siguen, puede traer el error de sintaxis o de import que encontró la herramienta al unirlo.
un script en TypeScript necesita unirse antes de correr
el script importa otros archivos o usa export
Corrige la línea que indica ruta. Un script solo puede importar @greengames/sdk y archivos relativos del propio juego. Si el script está en TypeScript, únelo con greengames empaquetar.
GB301errorel script unido pesa … KB y el maximo es 512 KBMueve los datos grandes a las escenas (piezas, datos) y deja en el script solo la lógica.
GB302errorel script esta vacio
el paquete no trae script
Escribe el script: como mínimo registra juego.alIniciar(() => { ... }) y llama a juego.terminar(...) cuando la partida acabe.
GB310errorel script usa {nombre} (`…`), que no existe dentro de la salaReemplaza ese uso por el servicio que corresponde. Ver la tabla de abajo.
GB311avisoel script usa {nombre} (`…`)Es un aviso: funciona, pero conviene cambiarlo. Ver la tabla de abajo.
GB312avisoel script nunca llama a `juego.terminar(...)`: la partida no tendria finalLlama a juego.terminar({ resultado, puntaje }) cuando la partida acabe; resultado es 'victoria', 'derrota' o 'fin'.
GB313avisoel script no registra `juego.alIniciar(...)`Registra los eventos del juego dentro de juego.alIniciar(...): corre cuando la escena y los jugadores ya están listos.
GB320errorel texto "{clave}" no esta en "textos" de juego.jsonAgrega la clave en textos.es y textos.en de juego.json, o corrige el nombre en el script.
GB321errorel script nombra {que} "{id}", que no esta en ninguna escenaCorrige el id en el script o agrega esa pieza, zona o aparición a una escena.
GB322avisoel script nombra {que} "{id}", que no esta en ninguna escenaCorrige el id o agrega la pieza a una escena. Si la crea el script con mundo.crear, ignora el aviso.
GB323errorla tabla de puntajes "…" no esta declarada en "puntajes" de juego.jsonDeclara la tabla en puntajes de juego.json o usa el id de una que ya exista.
GB330errorUn error de tipos de TypeScript en el script: el número y el mensaje son los de TypeScript.
TS{code}: {mensaje}
Corrige el tipo en la línea que indica ruta. Si el error es por un nombre que no existe (console, setTimeout, localStorage, fetch), usa el servicio de la API que lo reemplaza.

Qué detectan GB310 y GB311#

El validador busca en el script estos usos. Los de nivel error dan GB310; los de nivel aviso, GB311.

Qué usa el scriptNivelQué usar en su lugar
fetcherrorLos juegos no tienen red. Empaqueta los datos en la escena o en datos de las piezas.
red (XMLHttpRequest, WebSocket, EventSource...)errorLos juegos no tienen red.
importScripts o requireerrorImporta otros archivos de scripts/ con un import relativo; al empaquetar se unen en uno solo.
import() dinámicoerrorUsa un import estático al comienzo del archivo.
el DOM (document, window, navigator, location, history)errorNo hay página dentro de la sala. Para mostrar algo usa interfaz (hud, mensaje, marcador, menu).
almacenamiento del sitio (localStorage, sessionStorage, indexedDB...)errorUsa progreso.guardar(jugador, clave, valor) y progreso.leer(...).
eval o FunctionerrorEstá bloqueado por la política de seguridad de la sala. Escribe el código directamente.
hilos y canales (Worker, BroadcastChannel, MessageChannel)errorNo están disponibles dentro de la sala.
postMessage o closeerrorLa comunicación con el reproductor la hace la sala. Usa los servicios de greengames.
temporizadores del navegador (setTimeout, setInterval, requestAnimationFrame, queueMicrotask)errorUsa reloj.despues(segundos, fn), reloj.cada(segundos, fn) o juego.cadaCuadro(fn): siguen el tiempo de la partida y respetan la pausa.
async o awaiterrorLa API es síncrona y no hay nada que esperar. Para "esperar" usa reloj.despues(segundos, fn).
el reloj del sistema (Date.now(), new Date(), performance.now())avisoUsa reloj.ahora (segundos de partida): el reloj del sistema no se detiene con la pausa y rompe las repeticiones.
Math.random()avisoUsa azar.numero(), azar.entero(a, b) o azar.elegir(lista): salen de la semilla de la partida.

Guion del bot#

CódigoNivelQué significaCómo resolverlo
GB400errorEl archivo no cumple el esquema (pruebas/bot.json, pruebas/bot-<nombre>.json). El mensaje es uno de los de Errores de esquema.Corrige en el guion la propiedad que indica ruta. Ver Guion del bot.
GB401avisoel juego no trae guion de bot: `greengames probar` no puede verificar que se pueda jugar y terminarCrea pruebas/bot.json con los pasos para ganar la partida. Ver Guion del bot.
GB410errorno existe la zona "{enZona}" en las escenas
no existe la escena "{escena}"
no existe … "{id}" en las escenas
Corrige el id: el destino de ir, la zona de enZona o la escena deben existir en el juego.
GB411errorno existe la pieza "{pieza}" en las escenasCorrige el id de la pieza en el paso o en la condición, o agrega la pieza a una escena.
GB412error"esperarPieza" necesita al menos una condicionAgrega a esperarPieza al menos una condición: cerca (con radio), con, sin o giroY.
GB413error"cerca" necesita un "radio"Agrega radio junto a cerca.
GB414errorla dificultad "…" no existe en juego.jsonEn porDificultad y esperadoPorDificultad, usa solo ids declarados en dificultades de juego.json.
GB415avisoel guion no dice con que resultado debe terminar la partidaAgrega "esperado": { "resultado": "victoria" } para que la prueba verifique que el juego se puede ganar.
GB416errorla condicion usa "con", "sin", "cerca", "giroY", "dato" o "existe" pero no dice de que pieza
"es", "mayor" y "menor" comparan el valor de una senal: falta "senal"
Agrega "pieza": "<id>" a la condición si pregunta por una pieza, o "senal": "<nombre>" si compara el valor de una señal. Para la posición del jugador usa "jugador": { "cerca": [...], "radio": 1 }.
GB417avisoel script nunca llama a juego.senalar('{senal}', ...)Llama a juego.senalar('<nombre>') en el script, o corrige el nombre de la señal: si el script no la deja, la condición no se cumple nunca.
GB418error"mantener" necesita "segundos" o "hasta"Agrega segundos o hasta al paso, por ejemplo { "mantener": "accion", "segundos": 2 }.
GB419error"aprobarCon" ({aprobarCon}) no puede ser mayor que la cantidad de semillas ({cuantas})Baja aprobarCon o agrega semillas: no puede pedir más corridas aprobadas que las que se corren.

Paquete#

CódigoNivelQué significaCómo resolverlo
GB501errorno es un paquete de Green Games de formato 1Genera el .ggx con greengames empaquetar: es un JSON comprimido con gzip que empieza con { "gbx": 1, ... }.
GB502errorel juego no tiene ninguna escenaCrea escenas/principal.json con piezas y apariciones.
GB503errorhay {claves} escenas y el maximo es 16Reduce la cantidad de escenas hasta el máximo. Ver Límites vigentes.
GB510errortipo de recurso no admitidoUsa una imagen svg, png, webp o jpg.
GB511errorel tipo declarado "{tipo}" no corresponde a la extension (se esperaba "{tipo}")Haz que el tipo del recurso corresponda a la extensión del archivo (por ejemplo image/png para .png).
GB512errorpesa … KB y el maximo por recurso es 2048 KBReduce la imagen o usa SVG.
GB520errorel paquete descomprimido pesa … MB y el maximo es 20 MBQuita o reduce contenido: lo que más pesa suelen ser las imágenes de recursos/.
GB521errorel .ggx pesa … MB y el maximo es 5 MBReduce las imágenes de recursos/: es lo que más suele pesar.

Láminas#

CódigoNivelQué significaCómo resolverlo
GB600errorEl archivo no cumple el esquema (laminas/<id>.json). El mensaje es uno de los de Errores de esquema.Corrige en esa lámina la propiedad que indica ruta. Ver Escenas.
GB601errorel cuadro tiene {filas} fila(s) y la lamina mide {alto} de alto
la fila tiene {fila} caracter(es) y la lamina mide {ancho} de ancho
Cada cuadro necesita exactamente alto filas de ancho caracteres. Completa con . (transparente) o recorta.
GB602errorla fila usa el color "…" (numero …), pero la paleta tiene {paleta} color(es)Usa solo caracteres que correspondan a un color de paleta (0 es el primero, 9 el décimo, a el undécimo) o agrega el color que falta a paleta. El punto . es transparente.
GB603errorel color "…" no existeUsa un nombre de la paleta de Green Games (la sugerencia propone el más parecido) o un color "#rrggbb".
GB604errorla animacion nombra el cuadro {mala}, pero la lamina tiene {cuadros}Corrige en animaciones el número de cuadro: los cuadros se cuentan desde 0 y el último es la cantidad de cuadros menos uno.
GB605errorhay {ids} laminas y el maximo es 128Reduce la cantidad de láminas: varias imágenes pueden ir como cuadros de una misma lámina. Ver Límites vigentes.
GB606errorel nombre de archivo "{id}" no sirve como idRenombra el archivo: minúsculas, números y guiones, por ejemplo laminas/heroe-azul.json.

Modelos, texturas y sonidos#

CódigoNivelQué significaCómo resolverlo
GB700errorel modelo no trae su archivo .glb
el documento no declara glTF 2.0
Un modelo es un archivo .glb (glTF 2.0 binario) en modelos/<id>.glb. Otros formatos se convierten: conviértelo otra vez con el importador del editor (Archivo › Importar…) o con greengames importar: escribe un .glb que cumple el formato.
GB701errorel modelo pesa … KB y el maximo es … KBUn .glb pesa como máximo 2 MB. Reduce triángulos o el tamaño de sus texturas; el importador lo hace con sus opciones de conversión.
GB702errorel documento del modelo es demasiado grande para revisarlo
el modelo trae {buffers} buffers y se admite uno (el trozo BIN)
el buffer declarado no cabe en el trozo binario del .glb
la vista de datos se sale del trozo binario o no apunta al buffer 0
el accesor no declara bien su tipo o su cantidad
el accesor no apunta a ninguna vista de datos
el accesor apunta a una vista de datos que no existe
el accesor lee mas alla de su vista de datos
la imagen no esta incrustada en el .glb (falta "bufferView")
la textura no apunta a una imagen del modelo
la textura apunta a un muestreador que no existe
el material apunta a una textura que no existe
el material no es un objeto
el modo de transparencia no es OPAQUE, MASK ni BLEND
la primitiva no declara atributos
el atributo apunta a un accesor que no existe
la primitiva no tiene posiciones (POSITION)
el accesor de posiciones debe ser VEC3 y traer "min" y "max"
los atributos de una primitiva deben tener la misma cantidad de vertices
JOINTS_0 y WEIGHTS_0 van juntos
los indices deben ser enteros sin signo
la primitiva apunta a un material que no existe
la cantidad de indices (o de vertices) no es multiplo de 3
el esqueleto nombra huesos que no existen
las matrices del esqueleto no calzan con sus huesos
la raiz del esqueleto no existe
el nodo no es un objeto
el nodo apunta a una malla que no existe
el nodo apunta a un esqueleto que no existe
el nombre de un nodo admite hasta 64 caracteres
el nodo nombra un hijo que no existe
"…" debe ser una lista de {largo} numeros
el modelo debe traer exactamente una escena (trae {escenas})
la escena nombra un nodo que no existe
la jerarquia de nodos tiene un ciclo o un nodo con dos padres
el clip no es un objeto
el muestreador apunta a accesores que no existen
los tiempos de un clip deben ser numeros de coma flotante con "min" y "max"
el canal no apunta a un muestreador del clip
el canal anima un nodo que no existe
El .glb está dañado o mal armado por dentro (buffers, vistas de datos, accesores o imágenes que no calzan). Conviértelo otra vez con el importador del editor (Archivo › Importar…) o con greengames importar: escribe un .glb que cumple el formato.
GB703errorel modelo apunta a un archivo o direccion externa ("uri")Todo va dentro del .glb: el binario en su trozo BIN y las imágenes incrustadas, sin uri. Conviértelo otra vez con el importador del editor (Archivo › Importar…) o con greengames importar: escribe un .glb que cumple el formato.
GB704errorla extension "…" no se admite
"extensions" debe ser un objeto
Solo se admiten las extensiones KHR_materials_unlit, KHR_materials_emissive_strength, KHR_mesh_quantization y EXT_texture_webp. La compresión de mallas también es una extensión: vuelve a exportar sin ella. Conviértelo otra vez con el importador del editor (Archivo › Importar…) o con greengames importar: escribe un .glb que cumple el formato.
GB705errorla clave "extras" no se admite en un modeloQuita la clave extras: son datos libres que el motor no usa. Conviértelo otra vez con el importador del editor (Archivo › Importar…) o con greengames importar: escribe un .glb que cumple el formato.
GB706errorel modelo trae camaras y no se admiten
los accesores dispersos ("sparse") no se admiten
las texturas solo pueden usar el primer juego de coordenadas (TEXCOORD_0)
los objetivos de deformacion no se admiten
solo se admiten primitivas de triangulos (mode 4)
el atributo "…" no se admite
las camaras no se admiten
la interpolacion "…" no se admite
no se puede animar "…"
El modelo trae algo que el formato no admite: cámaras, objetivos de deformación, accesores dispersos, primitivas que no son triángulos o atributos fuera de la lista. Quítalo al exportar, o conviértelo otra vez con el importador del editor (Archivo › Importar…) o con greengames importar: escribe un .glb que cumple el formato.
GB707errorel modelo tiene {triangulos} triangulos y el maximo es {triangulosPorModelo}Un modelo tiene como máximo 20 000 triángulos. Reduce triángulos; el importador lo hace con su opción de triángulos máximos.
GB708errorel modelo trae {pieles} esqueletos y el maximo es {esqueletosPorModelo}
el esqueleto tiene {j} huesos y el maximo es {huesosPorModelo}
Hasta 4 esqueletos por modelo y 64 huesos por esqueleto. Quita huesos de dedos, cara o accesorios al exportar.
GB709errorel modelo trae {materiales} materiales y el maximo es {materialesPorModelo}
el modelo trae {primitivas} primitivas y el maximo es {primitivasPorModelo}
el modelo trae {nodos} nodos y el maximo es {nodosPorModelo}
Hasta 256 nodos, 32 primitivas y 16 materiales por modelo. Une mallas que compartan material.
GB710errorel modelo trae {imagenes} imagenes y el maximo es {texturasPorModelo}Hasta 8 imágenes dentro de un modelo. Une texturas en una sola o quita las que no se usan.
GB711errorla imagen no es PNG, JPEG ni WebP
la imagen declara "…" y su contenido es {tipo}
la imagen mide {ancho} x {alto} y el maximo es {texturaLado} por lado
Las imágenes de un modelo son PNG, JPEG o WebP, de hasta 1024 píxeles por lado. Convierte o reduce la textura; el importador lo hace con su tamaño máximo de textura.
GB712errorel modelo trae {animaciones} clips y el maximo es {clipsPorModelo}
el nombre de clip … no sirve
el clip "{name}" esta repetido
Hasta 32 clips por modelo, cada uno con un nombre único de minúsculas, números y guiones, hasta 32 caracteres: caminar, ataque-fuerte.
GB713errorel clip no anima nada
los tiempos de un clip no pueden ser negativos
el clip dura … s y el maximo es {clipSegundos} s
el clip dura 0 segundos
Un clip anima algo, empieza en 0 o después y dura más de 0 y hasta 30 segundos. Recorta el clip o pártelo en varios.
GB714errorel modelo no tiene ninguna malla en su escena
la caja del modelo mide … y debe medir entre {modeloLadoMinimo} y {tamanoMaximo}
El modelo necesita al menos una malla, y su caja debe medir entre 0,001 y 500 por lado. Una unidad del mundo es más o menos medio avatar de ancho: ajusta la escala al exportar o al importar.
GB715errorla propiedad "…" no se admite en los ajustes de un modeloRevisa modelos/<id>.json: solo admite colision, que es caja, capsula, envolvente (de 4 a 32 puntos dentro de la caja del modelo) o ninguna. El importador genera la envolvente con su opción de colisión.
GB720errorhay {idsModelos} modelos y el maximo es 64Un juego trae hasta 64 modelos. Quita los que no se usan.
GB721errorhay {idsTexturas} texturas y el maximo es 64Un juego trae hasta 64 texturas sueltas. Quita las que no se usan.
GB722errorla textura no es una imagen png, jpg ni webp
pesa … KB y el maximo por textura es 1024 KB
el contenido no es una imagen {tipo}
la imagen mide {ancho} x {alto} y el maximo es 1024 por lado
Una textura suelta es PNG, JPEG o WebP, pesa hasta 1 MB y mide hasta 1024 píxeles por lado. El tipo se deduce de la extensión del archivo. Convierte o reduce la imagen; el importador lo hace.
GB723errorlos modelos, texturas y sonidos suman … MB y el maximo es 12 MBLos modelos, las texturas y los sonidos de un juego suman como máximo 12 MB. Reduce texturas y triángulos, o quita lo que no se use.
GB724errorel nombre de archivo "{id}" no sirve como idEl nombre del archivo es su id: minúsculas, números y guiones, hasta 48 caracteres, como modelos/robot-azul.glb. Renómbralo; el importador lo hace solo.
GB725errorhay {idsSonidos} sonidos y el maximo es 32
el sonido no es un archivo wav ni mp3
pesa … KB y el maximo por sonido es 1024 KB
el contenido no es un sonido {tipo}
Un juego trae hasta 32 sonidos grabados, en WAV o MP3, de hasta 1 MB cada uno. Convierte el sonido, recórtalo o baja su calidad; el importador convierte WAV y achica los que pesan más de 1 MB.
GB730errorlos modelos de la escena suman {trisDeModelos} triangulos y el maximo es 150000
hay {piezasModelo} piezas con forma "modelo" y el maximo es 300
Cada pieza que usa un modelo cuenta sus triángulos: una escena suma hasta 150 000 y tiene hasta 300 piezas con forma modelo. Usa menos copias o modelos más livianos.
GB731erroruna pieza con forma "modelo" necesita decir cual: falta "modelo"Una pieza con forma modelo dice cuál en modelo: el id de un archivo de modelos/.
GB732errorLa pieza nombra en modelo un modelo que no está en modelos/.Pon el archivo en modelos/<id>.glb o corrige el id: la sugerencia del validador lista los modelos del juego y propone el más parecido.
GB733errorla animacion de un modelo es el nombre de un clip, no un numero
el modelo "{modelo}" no tiene el clip "{animacion}"
animacion es el nombre de un clip que el modelo trae. La sugerencia lista los clips de ese modelo.
GB734aviso"lamina" y "textura" no se usan en una pieza con forma "modelo"
"modelo" solo se usa con "forma": "modelo" (esta pieza es "{forma}")
la pieza nombra una "lamina" y una "textura": se dibuja la textura
una imagen de texturas/ no tiene animaciones
Es un aviso: hay propiedades que no se usan con esa forma. modelo va solo con la forma modelo; lamina y textura no van en un modelo; si una pieza plana nombra lamina y textura, se dibuja la textura.
GB735errorUna pieza nombra una textura que no está en texturas/.Pon la imagen en texturas/<id>.png (o .jpg, .webp) o corrige el id: la sugerencia lista las texturas del juego.
GB736avisola textura del material no se dibuja en una pieza con forma "{forma}"
"textura" en la pieza solo se usa con "forma": "lamina" (esta pieza es "{forma}")
Es un aviso: la textura no se dibuja ahí. Para cubrir una pieza con una imagen, va en material.textura; para una imagen plana, textura va en la pieza con forma lamina; un modelo trae sus propias texturas.
GB740errorEl archivo no cumple el esquema (creditos.json). El mensaje es uno de los de Errores de esquema.creditos.json es una lista de entradas { recurso, titulo, autor, licencia, origen?, cambios? }. Revisa la que dice ruta.
GB741errorel credito nombra "{recurso}", que no esta en el juego
el credito de "{recurso}" esta repetido
Cada crédito nombra un recurso que está en el juego (modelos/<id>, texturas/<id> o sonidos/<id>), una sola vez. Quita el crédito o corrige el nombre.
GB742aviso{sinCredito} recurso(s) no tienen credito: ……Es un aviso. Si lo hiciste tú, anótalo con "licencia": "propia" (el taller y el importador lo hacen solos). Si viene de otra parte, anota su autor y su licencia: debes tener derecho a usarlo en tu juego.

Errores de esquema#

GB101 (juego.json), GB200 (una escena), GB400 (un guion del bot) y GB600 (una lámina) salen cuando el archivo no tiene la forma que pide su esquema. La ruta del problema dice en qué propiedad, y el mensaje es uno de estos:

  • se esperaba …, pero hay …
  • no corresponde a ninguna de las formas validas: …
  • se esperaba …, pero hay …
  • debe ser exactamente …, pero hay …
  • … no es un valor permitido. Opciones: …
  • no puede estar vacio
  • es muy corto: minimo {minLength} caracteres
  • es muy largo: {valor} caracteres, maximo {maxLength}
  • … no tiene el formato esperado
  • {valor} es menor que el minimo permitido ({minimum})
  • {valor} supera el maximo permitido ({maximum})
  • debe ser mayor que {exclusiveMinimum}, pero es {valor}
  • debe tener exactamente {minItems} elementos, pero tiene {valor}
  • debe tener al menos {minItems} elemento(s), pero tiene {valor}
  • tiene {valor} elementos y el maximo es {maxItems}
  • … esta repetido
  • falta la propiedad obligatoria "…"
  • debe tener al menos {minProperties} propiedad(es)
  • tiene {claves} propiedades y el maximo es {maxProperties}
  • propiedad desconocida "…"

Para resolverlos, corrige esa propiedad: su tipo, su nombre o su valor. La forma de cada archivo está en Manifiesto, Escenas y Guion del bot.

Sigue con#