Estructura de un paquete
Qué archivos forman un juego de Green Games, en qué unidades se mide el mundo, cómo transcurre una partida y el camino completo desde la carpeta vacía hasta el archivo .ggx.
Corresponde aFormato 1, API 1 Para quien escribe código
En esta página
Un juego de Green Games es un paquete de datos y scripts. No es una página web: no trae HTML, CSS ni código que toque el navegador o tu equipo. El juego declara su mundo en archivos JSON y su lógica en un script que solo conoce la API de Green Games. El programa que lo muestra (el portal, el launcher o el editor) es el único que dibuja, lee el teclado y guarda datos.
Esta sección es para quien escribe esos archivos a mano. Si prefieres armar el juego sin código, el editor escribe los mismos archivos por ti: Recorrido del editor.
Qué necesitas#
| Para | Necesitas |
|---|---|
| Escribir y probar código dentro del editor | El editor 0.4.0. Trae pestaña de código, validación y prueba con bot: Código en el editor. |
| Trabajar desde la terminal | La herramienta greengames. Hoy vive en el repositorio de Green Games y se corre con Node 22.18 o superior, desde la raíz del repositorio, después de npm install. |
Disponibilidad#
El contrato (formato 1, API 1) creció desde su primera versión, siempre sumando cosas. Hoy todo lo que se usa o se descarga trae el mismo motor:
| Dónde | Motor que trae | Servicios de la API |
|---|---|---|
| Portal (play.green.games) | Contrato completo | Once: juego, mundo, jugadores, interfaz, sonido, progreso, puntajes, azar, reloj, actores, camara |
Herramienta greengames del repositorio | Contrato completo | Los mismos once |
| Launcher 0.4.0 y editor 0.4.0 | Contrato completo | Los mismos once |
Esta sección de la documentación describe ese contrato completo, que hoy es la versión 1.2: actores, cámara, rótulos, vistas (tercera persona, primera persona, 2D de lado, desde arriba, isométrica), láminas, mapas de baldosas, multijugador en el mismo equipo y, con la versión 1.1, el terreno de cubos del mundo abierto, el puntero y la barra rápida, y con la versión 1.2, los modelos, las texturas y los sonidos grabados. Un .ggx que valida corre igual en los cuatro.
Lo que todavía no ofrece ninguna aplicación publicada es el multijugador en línea: el formato ya deja declararlo (multijugador.enLinea), pero no hay salas por internet. Ver Hoja de ruta.
Las carpetas de un juego#
Cada juego vive en su propio directorio. El nombre del directorio es el id del juego.
mi-juego/
juego.json manifiesto: nombre, dificultades, controles, tablas, textos
escenas/principal.json una o más escenas: piezas, apariciones, zonas, luces, vista y mapas de baldosas
laminas/moneda.json opcional: láminas, dibujos de píxeles escritos como texto
scripts/principal.ts la lógica, en TypeScript o JavaScript, con la API de Green Games
recursos/portada.svg recursos empaquetados (hoy: la imagen de la portada)
modelos/robot.glb opcional: modelos 3D (versión 1.2)
texturas/ladrillo.png opcional: imágenes para el material de las piezas (versión 1.2)
sonidos/campana.wav opcional: sonidos grabados (versión 1.2)
creditos.json autor y licencia de cada modelo, textura y sonido (versión 1.2)
pruebas/bot.json guion del bot que juega la partida de principio a fin| Archivo | Qué es | Página |
|---|---|---|
juego.json | La ficha del juego y todos sus textos. | El manifiesto |
escenas/<id>.json | El mundo, declarado pieza por pieza o con mapas de baldosas, y la vista con que se juega. Hasta 16 escenas. | Escenas |
laminas/<id>.json | Opcional. Un dibujo de píxeles guardado como datos, para piezas planas, baldosas y personajes. Hasta 128 láminas. | Láminas |
scripts/principal.ts | Qué pasa cuando alguien toca, entra, pulsa o se acaba el tiempo. Puede importar otros archivos del mismo juego. | Scripts |
recursos/ | Imágenes empaquetadas. Hoy solo se usan para la portada (svg, png, webp o jpg, máximo 2 MB). | El manifiesto |
modelos/, texturas/, sonidos/, creditos.json | Opcionales. Modelos 3D en .glb, imágenes PNG, JPEG o WebP y sonidos WAV o MP3, con el crédito de cada uno. Hasta 12 MB entre todos. | Modelos, texturas y sonidos |
pruebas/bot.json | Los pasos con que un bot juega y termina la partida. Sin guion, greengames probar no puede verificar el juego. | Pruebas con el bot |
greengames empaquetar (o Exportar en el editor) convierte esa carpeta en un archivo .ggx. El mismo .ggx corre en el portal, en el launcher y en el editor. Qué lleva dentro: El formato .ggx.
Unidades y ejes#
- Y es arriba. El avatar mira hacia +Z cuando su
rotacionYes 0. - Una unidad es más o menos medio avatar de ancho. El avatar mide 0,8 de ancho y 1,8 de alto.
- Las rotaciones van en grados, en orden Y-X-Z (primero gira sobre Y).
- La simulación avanza a 60 cuadros por segundo fijos: el paso de tiempo
dtsiempre vale 1/60. Por qué: Determinismo.
Medidas para diseñar niveles#
Con estos números decides el ancho de un hueco o la altura de un escalón antes de probar. Son los valores por defecto; el script puede cambiar la rapidez y el salto de cada jugador, y la escena su gravedad.
| Dato | Valor por defecto |
|---|---|
| Rapidez al caminar | 8 unidades por segundo |
| Altura del salto | 2,6 unidades |
| Salto en largo, en plano, a toda carrera | unas 5,5 unidades (recomendado: huecos de hasta 4) |
| Escalón que sube sin saltar | 0,45 unidades |
| Pendiente máxima caminable | 50 grados |
| Gravedad | -40 unidades por segundo al cuadrado |
Altura de caída del mundo (alturaCaida) | -30 |
Un jugador que cae por debajo de alturaCaida vuelve a su punto de aparición.
El ciclo de vida de una partida#
- El reproductor carga el
.ggx, lo valida y muestra la pantalla de inicio (portada, dificultad, controles). Esa pantalla, la pausa y el panel de fin los pone el reproductor: el juego no los programa. - Al pulsar Jugar crea la sala aislada y le entrega el paquete, las opciones (dificultad, idioma, semilla, modo) y lo guardado (progreso y puntajes).
- La sala carga la escena inicial, solo con las piezas de la dificultad elegida, y crea a los jugadores en la primera aparición.
- Se ejecuta el script una vez (el código de nivel superior) y luego lo registrado con
juego.alIniciar. - Cada cuadro, en este orden: movimientos de piezas, jugadores (entrada, salto, gravedad), actores, física, toques y zonas de jugadores, toques de actores, choques entre piezas, acciones, temporizadores, cronómetros y, al final,
juego.cadaCuadro. juego.terminar(...)detiene la sala. El reproductor muestra el panel de fin.
Tres cosas que se desprenden de ese orden:
- Los cambios que hace el script en un cuadro se ven en el siguiente.
- Si un evento del script lanza un error, la partida sigue, el error se informa y
greengames probarfalla. - Una pulsación más corta que un cuadro no se pierde: llega igual al salto y a
jugadores.alAccion.
El camino completo#
- Crea el juego.
greengames crear mi-juego --nombre "Mi juego"deja una carpeta con un juego pequeño y completo (juntar monedas contra el reloj) que ya pasa la validación y la prueba. Con--tipoeliges otra plantilla de partida (primera persona, 2D de plataformas, vista desde arriba, isométrico, híbrido o multijugador): crear. - Decide el juego en una frase. Qué hace el jugador, cómo gana, cómo pierde y qué número mide lo bien que le fue. Ejemplo: "Cruza el circuito hasta la meta; gana al llegar, pierde si se acaba el tiempo; el puntaje es el tiempo".
- Arma la escena en
escenas/principal.json: primero el suelo y las apariciones, después lo demás. Ver Escenas. - Escribe el script en
scripts/principal.ts. Ver Scripts y la referencia de la API. - Escribe el guion del bot en
pruebas/bot.json: el bot debe poder ganar en todas las dificultades. Ver Pruebas con el bot. - Valida.
greengames validar mi-juegorevisa archivos, esquemas, tipos del script y reglas. Corrige cada error y lee cada aviso. Qué significa cada código: El validador. - Prueba.
greengames probar mi-juegojuega la partida sin pantalla, en cada dificultad y con dos semillas. Para verla con tus ojos:greengames previsualizar mi-juego. - Empaqueta.
greengames empaquetar mi-juegoescribe el.ggx. Un juego con errores no se empaqueta.
Todas las órdenes, con sus opciones y sus salidas reales: La herramienta greengames.
Sigue con#
- El manifiesto: la ficha del juego, propiedad por propiedad.
- Caso de estudio: un juego real, leído de principio a fin.
- Límites: cuánto cabe en un paquete y en una partida.