Saltar al contenido
Docs

Código

El editor de código del editor 0.4.0, con la disposición Código, los paneles Estructura y Proyecto, el bloque que escriben las Reglas, el autocompletado de la API y los errores con su botón Llévame.

Corresponde aEditor 0.4.0 Para quien escribe código

En esta página

Todo juego tiene un script, scripts/principal.ts. En un juego hecho con Reglas lo escribe el editor; en uno hecho con código lo escribes tú. En los dos casos se abre en la pestaña principal.ts, al lado de la escena. Cómo se escribe un script está en Scripts; esta página trata de la herramienta.

La pestaña del script#

Arriba del centro hay una pestaña por documento: la escena, el script y la Ficha. Haz clic en principal.ts para abrir el código. Tiene resaltado, autocompletado de la API y errores marcados en la línea, y sigue al tema claro u oscuro del editor.

Sobre el código hay una fila de rótulos: la ruta del archivo, script principal si es el que arranca el juego, «el bloque sombreado lo escriben las Reglas» y el recordatorio «Ctrl+Espacio: sugerencias de la API».

El script con su índice en el panel Estructura.

La disposición Código#

En modo Completo, la disposición Código (Ctrl+Alt+2) acomoda la ventana para programar: abre el script al centro, el panel Proyecto a la izquierda, el Asistente a la derecha y Problemas abajo. Para volver a la escena, Ctrl+Alt+1. Las disposiciones están en Modo Simple y modo Completo.

Estructura#

El panel Estructura (Alt+3) es el índice del script abierto: el Bloque de las Reglas, lo que el archivo importa, cada aviso del juego al que se suscribe (como juego.alIniciar o mundo.alTocar «#moneda») y cada función, con su número de línea. Un clic lleva el cursor a esa línea.

Con la escena abierta en vez del código, Estructura muestra las reglas del juego y un resumen de la escena.

Proyecto#

El panel Proyecto (Alt+2) muestra los archivos del juego: juego.json y las carpetas escenas, scripts, recursos, pruebas y editor.

Clic enAbre
juego.jsonLa Ficha del juego.
Una escenaEsa escena, en el visor.
Un scriptEl editor de código.
pruebas/bot.jsonLa sección Bot de prueba del panel Reglas.

Arriba del panel hay dos botones: Nuevo script y Mostrar en carpeta.

Tu código y el bloque de reglas#

En un juego hecho con Reglas, el script tiene un bloque que escribe el editor. Va entre dos marcas y se ve sombreado.

El archivo empieza así:

ejemplos/patio-de-monedas/scripts/principal.ts
// Juego hecho con Green Games Studio.
// La logica de las reglas esta en el bloque de abajo. Para programar a mano, escribe despues del bloque:
// la API completa aparece al escribir "mundo.", "jugadores.", "interfaz."...

// <reglas>
// Este bloque lo escribe Green Games Studio a partir del panel de Reglas. Si lo cambias a mano, el editor
// lo vuelve a escribir la proxima vez que toques una regla. Tu propio codigo va fuera de las marcas.
import { interfaz, juego, jugadores, mundo, sonido, type Cronometro, type Jugador } from '@greengames/sdk';

Tres cosas que conviene saber:

  • El bloque se reescribe. Cada vez que tocas una regla en el panel, el editor escribe de nuevo todo lo que hay entre // <reglas> y // </reglas>. Un cambio hecho a mano ahí dentro no sobrevive.
  • Tu código va después de // </reglas>. Eso el editor no lo toca.
  • Las dos cosas conviven. El bloque ya importa los servicios que usan tus reglas, y tu código puede usarlos.

En un juego hecho con código pasa lo contrario: no hay bloque hasta que creas la primera regla. Desde entonces el editor agrega el suyo al mismo archivo, sin borrar lo que ya hay. Tampoco toca las tablas de puntajes que usa tu código: las conserva y agrega la suya al final. Ver Reglas sin código.

Autocompletado#

Escribe el nombre de un servicio y un punto, o pulsa Ctrl+Espacio, y el editor lista lo que ese servicio ofrece, con su firma.

Sugerencias al escribir «mundo.».

Al escribir mundo. aparecen alChocar, alDejarDeTocar, alEntrar, alSalir, alTocar, ambiente, aparicion, apariciones, crear, crearLuz, crearZona, eliminar y el resto del servicio.

El editor 0.4.0 trae el contrato completo, versión 1.2: los once servicios de la API (juego, mundo, jugadores, interfaz, sonido, progreso, puntajes, azar, reloj, actores y camara) más el terreno de cubos, el puntero y la barra rápida, que usan los juegos de mundo abierto, y los modelos, texturas y sonidos grabados. La referencia completa está en La API.

Errores#

El editor revisa el juego mientras escribes. Un error aparece en cuatro lugares a la vez:

  • Subrayado en su línea, en el código.
  • En la pestaña del script, con un número.
  • En la barra de estado, que pasa de Sin problemas a la cuenta de errores y avisos.
  • En el panel Problemas (Alt+9), explicado.
Errores marcados en la línea y explicados en Problemas.

Cada problema trae un título en lenguaje claro, la explicación, su código y el lugar: archivo, línea y columna.

Los de la captura salieron de escribir a propósito dos líneas malas después del bloque: una que nombra una pieza que no está en la escena y otra que llama a fetch.

CódigoTítuloQué pasó
GB330Error en el códigoTS2304: Cannot find name 'fetch'. El revisor de tipos no conoce ese nombre.
GB310El código usa algo que no existe dentro del juegoEl script usa fetch. Los juegos no tienen red ni página: corren aislados y solo cuentan con los servicios de la API.

La línea de la pieza que no existe da un aviso, «El código nombra algo que no está en la escena». Un aviso no impide exportar; un error sí.

Un mismo descuido puede dar dos problemas, como fetch aquí: uno del revisor de tipos y otro del validador de juegos. Se arreglan juntos.

Con el editor en inglés, los problemas salen en inglés.

Llévame#

El botón Llévame de cada problema abre el lugar exacto: si el problema está en el código, la línea del archivo; si está en una regla, esa regla; si está en una pieza, la pieza elegida en la escena.

El detalle de cada código está en El validador. Por qué un juego no puede usar fetch ni leer archivos está explicado en Aislamiento.

Con errores no se exporta#

Exportar se detiene en el primer paso mientras haya errores.

Exportar bloqueado por dos errores.

Cierra el diálogo, abre Problemas y pulsa Llévame en cada error. Si no sabes arreglar uno que escribiste tú, Ctrl+Z deshace hasta que desaparezca.

Nuevo script#

Cuando principal.ts crece, conviene repartir el código en más archivos.

Archivo > Nuevo script, el botón + del panel Proyecto o el botón Script del Explorador de contenido crean scripts/modulo.ts y lo abren. El archivo nuevo trae un ejemplo mínimo:

scripts/modulo.ts
// scripts/modulo.ts
// Funciones para usar desde scripts/principal.ts con: import { saludar } from './modulo.ts';
import { juego } from '@greengames/sdk';

export function saludar(): void {
	juego.registro('Hola desde scripts/modulo.ts');
}

Lo que escribe juego.registro aparece en la Consola al jugar: ver Jugar dentro del editor. Al exportar, el editor une todos los scripts en uno solo.

Crear un script se puede deshacer con Ctrl+Z, como todo lo demás.

La plantilla con código#

Si prefieres escribir todo el script tú, crea el juego con la plantilla Monedas contra reloj (con código), o con el ejemplo de cualquiera de los otros tipos de juego. Son juegos completos para leer y modificar: ver Nuevo juego, proyectos y plantillas y el tutorial Tu segundo juego.

Sigue con#