El editor de scripts de Game Maker Studio 2
Cuando programamos en Game Maker, usando su propio lenguaje GML, podemos utilizar el código en varios lugares del programa, como pueden ser los objetos, las rooms, o a instancias concretas.
Tenemos una serie de funciones integradas en el sistema que nos facilita mucho la tarea a la hora de escribir, o incluso cuando arrastramos acciones mediante Drag and Drop.
Pero a menudo es necesario crear tus propias funciones que realizan una tarea específica, o para condensar una gran acción en una sección de código más manejable, y sobretodo, para poder usar esa tarea en más de un ligar, por ejemplo en varios objetos.
Game Maker Studio 2 nos ofrece la posibilidad de crear scripts.
La ventana del editor de scripts tiene esta pinta:
Esta ventana será la misma cuando programes, ya sea en:
- una acción de un evento,
- un script genérico,
- un código de creación de room,
- un código de creación de instancia,
así que la información es válida para ambos.
Un script puede tomar diferentes variables de entrada (hasta un máximo de 16), que solemos llamarlo argumentos o parámetros, que pueden ser cadenas, números, palabras especiales como all
o noone
, arrays o incluso recursos como sprites y objetos.
Para ejecutarlo, sólo hay que escribir el nombre en el código, poner paréntesis, y dentro de ellos si tiene argumentos. Un ejemplo sería así:
script_que_pinta_texto(texto);
Yo siempre pongo al final el ;
para saber dónde acaban las funciones, aunque no es obligatorio en GMS 2. Para cambiar el nombre del script, se hace desde el árbol de recursos, botón derecho sobre el nombre y modificar.
Hemos comentado que los scripts aceptan variables como entrada, pero un script también puede devolver un valor. Para ello, se usa la palabra especial return. Imaginemos que tenemos un script o función que calcula una distancia, y todo eso lo metemos en una variable. Al final tendríamos que poner
return distancia;
Así cuando usamos el script, podemos hacer algo así
valor = script_calculo_distancia(x, y);
siendo valor
una variable dónde almacenados el cálculo. Una cosa a tener en cuenta es que usar la palabra return finaliza el script, por eso he comentado de ponerlo al final, porque si se usa y luego hay escrito código no se ejecutará, a no ser que pongamos algo así
if (error) { return -1; } //más código a continuación...
Así que hay que tenerlo muy claro cuando escribimos código que todo funcione correctamente y ¡no haga cosas locas!
Vamos a explicar las partes del editor que vemos en la imagen.
Script tabs – pestañas de scripts
El editor de scripts abre una ventana con pestañas en la parte superior, dónde cada una corresponde a un script diferente (esto se puede cambiar desde las Preferencias, para que cada script tenga una nueva ventana).
Se pueden ordenar las pestañas arrastrándolas para cambiarlas de lugar, o sacarlas para que tengan una ventana nueva para tenerla en el workspace.
Cuando editamos código del evento de un objeto, siempre lo vemos con una ventana encadenada a los eventos. Si maximizamos la ventana del código, el editor de scripts se abrirá en una pestaña del área de trabajo totalmente separada.
Si quieres volverlo a ver como una ventana encadenada al objeto, pulsa el botón derecho encima del código y elige la opción Restore to workspace – Restaurar espacio de trabajo.
También puedes elegir Go to Object – Ir al objeto para situarte en el objeto sin minimizar el editor.
O Add Event – Añadir evento para añadir o abrir un evento a la ventana maximizada en la que te encuentras.
Gutter – marco
En la parte de la izquierda del editor podemos ver los números de línea del código, además de información extra, como veremos ahora.
Si hemos cometido algún error, por ejemplo si escribimos mal una función, veremos que marca la línea dónde se produce, además de una línea de exclamación.
Si pasamos el ratón por encima veremos una descripción para saber cuál es el problema.
También veremos los puntos de interrupción que hemos añadido. Un punto de interrupción es dónde se para la ejecución del juego cuando lo ejecutamos en modo depuración.
Para añadir o quitar ese punto puedes pulsar la tecla F9, o haciendo click en la línea con botón derecho y elegir Toggle Breakpoint – Activar/Desactivar interrupción.
Search/Replace – buscar/reemplazar
Mientras trabajas con scripts, si presionas Ctrl + F, se abrirá un cuadro de búsqueda. Con Ctrl + H se abre para buscar y reemplazar.
Editing – edición
Mientras estamos escribiendo código, nos va a aparecer una ventana de autocompletar, que nos facilitará mucho a la hora de escribir funciones del sistema. La ventana tiene este aspecto
Vemos que la ventana es de tipo pop-up, así que mientras estamos escribiendo, después de una pequeña pausa se mostrará.
Como vemos, dependiendo del texto escrito nos sugerirá una serie de funciones, variables, etc.
Podemos seguir escribiendo o elegir una de las líneas, que nos escribirá el resto de la función.
Otra cosa interesante es como podemos comentar nuestro código. Para escribir un comentario en una sola línea, podemos hacerlo si empieza por //, antes de cualquier línea, pero también podemos comentar párrafos enteros si usamos /* */.
También podemos comentar trozos de código, ya sea escribiendo los caracteres que hemos comentado, o usando Ctrl + K para el texto seleccionado. Para descomentar, usamos Ctrl + Mayus + K.
En la siguiente imagen vemos los dos tipos de comentarios
Los scripts también pueden contener comentarios del tipo JavaDoc, que ya hablaremos en otro momento el formato que utiliza.
Además de los comentarios, podemos usar la etiqueta region para marcar un trozo del código, y así poder plegarlo. Vemos como funciona.
Si ponemos una sección de código entre las etiquetas #region
y #endregion
, y un comentario para aclarar que contiene, nos aparece una casilla para ocultar o mostrar el código de dentro.
También vemos que el texto del editor está coloreado. El editor reconoce las palabras reservadas y le asigna un color para facilitar la lectura del código, además de poder reconocer errores de escritura.
Vemos que los colores son diferentes de si usamos comentarios, variables, argumentos, etc. Si no te gusta los colores, se pueden cambiar en las Preferencias o pulsar F10 para desactivar el color.
Si haces botón derecho en cualquier parte del editor, nos parece un menú contextual. Aparte de las funciones típicas de texto, cortar, copiar, pegar y seleccionar todo, también podemos abrir la ayuda para saber algo concreto de una función. También podemos dividir el editor en paneles separados, hasta 3 en total.
Esto puede ser muy útil si queremos comparar código de diferentes scripts, sin necesidad de ir cambiando de pestañas.
Fragmentos de código
Otra opción muy útil es el uso de fragmentos de código. Si pulsamos F4, nos aparece una ventana emergente con varias opciones del código de uso más común (sentencias if, bucles, etc.). También podemos escribir nuestros propios fragmentos de código, o modificar los actuales, desde el fichero \GameMaker Studio 2\TextEditor\snippets.txt. Puedes cambiar el fichero de texto siguiente estas normas:
- Cada fragmento se encuentra en una línea separada (no debería haber líneas en blanco).
- Cada fragmento comienza con el nombre del fragmento (que es lo que se muestra en el menú) seguido por los dos puntos :, seguido del fragmento de código real.
- Utiliza # para una nueva línea y coloca el texto que debe seleccionarse primero entre |.
Mira los ejemplos que ya hay en el fichero para respetar el formato de lo que vayas a añadir, aunque yo antes copiaría el fichero por si hay que dejarlo tal y como viene en el producto (sobretodo con actualizaciones).
Information – información
La barra de información, que está en la parte inferior de la ventana, muestra el número de la línea actual, además de la posición dentro de la línea.
También puedes ver la ayuda del código, que es una línea de texto con la función que estás editando en ese momento junto con los parámetros que requiere (útil para saber el tipo y el total de argumentos).
A medida que rellenas la función, los argumentos se irán resaltando para mostrar cual estás escribiendo actualmente. Si has utilizado comentarios de tipo JavaDoc en tus scripts, también se mostrará la información que hayas puesto.
El editor de Shaders de Game Maker Studio 2
Existe un editor de Shaders en Game Maker Studio 2, pero del que no voy a hablar, al menos de momento, porque no tengo ni idea de programar shaders. Espero en un futuro hacer una buena guía para que todos podamos aprender a hacer cosas interesantes con shaders.
Resumen final
Como vemos, el editor de scripts de Game Maker Studio 2 es bastante sencillo, pero lo suficientemente potente a la hora de programar nuestros juegos. Se han simplificado muchas opciones que tenía, porque ahora se hacen a nivel global (como puede ser la búsqueda de texto). En el próximo post comentaremos el editor de fuentes, pero si te ha quedado alguna duda, ¡para eso existen los comentarios!
Muy interesante. Gracias por el aporte.
Vaya que me ayudo, soy nuevo en GMS2 🙂