Scripts
Hemos hablado de los principales recursos que podemos utilizar en nuestros juegos: imágenes que utilizamos para los fondos o los objetos que programamos, sonidos, habitaciones dónde colocar los objetos… Ahora ya tocaría empezar a usar código GML, ya que hemos visto cómo creamos eventos y acciones.
Pero antes de mirar el lenguaje propio de Game Maker Studio, debemos de pararnos un momento para ver que son los scripts. Game Maker tiene un montón de funciones que podemos utilizar, pero es posible que en algún momento necesitemos crear nuestras propias funciones, para utilizarlos en diferentes sitios como en objetos, rooms, etc. Estas funciones, que las usamos para hacer cosas específicas, las añadimos en el árbol de recursos, en la carpeta de scripts.
¿Qué es un script?
¿Qué es un script en Game Maker? Un script es un trozo de programa, utilizando el lenguaje GML para escribirlo (lo iremos aprendiendo poco a poco, viendo como se utiliza y poniendo ejemplos). Aunque ahora no entraremos en detalle para explicar qué son los scripts.
Un script es posible que acepte valores de entrada, que se almacenan en variables, así que puede ser un número, un texto, sprites, etc. Estos valores se llaman argumentos o parámetros. Por ejemplo, si creamos el script dibujar_barra_energia, unos posibles argumentos puede ser la posición, X/Y.
Para llamar a un script, tenemos una acción específica llamada Execute Script, y también desde el código GML escribiendo tal cual la función con paréntesis. Si tienes argumentos, lo pondremos dentro de esos paréntesis separados por coma. Por ejemplo dibujar_barra_energia(x, y)
.
Al igual que un script puede recibir parámetros de entrada, un script puede devolver un valor. Por ejemplo, imaginemos que tenemos varios objetos que luchan entre ellos, cada uno con su fuerza y resistencia. Crearemos una variable de fuerza y otra de resistencia, que variará dependiendo de cada objeto. Cuando choquen dos objetos, veremos quien gana dependiendo de los valores de cada uno. Podemos crear un script que compruebe quién gana y que devuelva el resultado.
Guardar y cargar scripts
Es posible guardar y cargar scripts, tal y como comentamos con las macros. Se guardan en ficheros de texto con extensión TXT, así podemos guardar funciones útiles para poder usar en múltiples proyectos.
Para cargar un script, con el botón derecho en la carpeta scripts del árbol de recursos, aparecerá un menú y le daremos a Add Existing Script. Podemos elegir ficheros con formato GMX o TXT para añadirlo.
Para guardar un script, se hace de la misma manera, seleccionando Export Selected Script.
Crear un script
Para crear un script nuevo, como siempre, desde el menú Resources – Create Script. Nos aparecerá una ventana similar a ésta:
Si nos fijamos, esta ventana es exactamente la misma que si usamos la acción Execute code. ¿Por qué? Porque tienen la misma funcionalidad, la única diferencia es que cuando es un script aparece un campo de name, mientras que con Execute code nos referimos a una acción de un evento y no hace falta ponerle un nombre.
Damos al script un nombre único para todo el proyecto, algo que sea fácil de recordar. Podemos usar las primeras líneas para describir qué hace exactamente y si tiene argumentos o no, y una breve descripción de cada uno de ellos.
La ventana se divide en tres partes: la barra de herramientas con botones para facilitar algunas acciones, la parte principal donde escribimos el código y la barra de información, que nos detalla en qué línea y columna estamos, algunas teclas especiales activadas que nos sirve a la hora de escribir, como la tecla <INS>, el tamaño de la fuente y por último información adicional si estamos escribiendo una función en concreto. Ahora veremos un poco los botones de la barra de herramientas, para ver que acciones podemos hacer.
Barra de herramientas del editor de scripts
En la barra de herramientas nos encontramos con los botones siguientes:
- Confirmar: cerrará el editor actual, sin preguntar, y guarda los cambios que hemos hecho.
- Cargar un script: abre una ventana para elegir un fichero de texto que hemos guardado anteriormente. Reemplazará el código que hayamos escrito en la ventana.
- Guardar script: guarda el script que estamos viendo en un fichero de texto.
- Imprimir: abrirá una ventana estándar para seleccionar la impresora y sus propiedades e imprimir el código actual.
- Deshacer: deshace la última acción, con un número limitado de 16 acciones.
- Rehacer: si hemos utilizado el botón anterior, podemos rehacer las acciones con el mismo límite que hemos comentado.
- Cortar: corta el texto seleccionado y lo almacena en el portapapeles.Luego lo podremos pegar en otro script, recurso o programa externo.
- Copiar: Lo mismo que el anterior, pero en vez de cortar lo copia.
- Pegar: Pega texto almacenado en el portapapeles.
- Buscar y reemplazar: se abrirá un panel lateral para buscar y/o reemplazar texto en el código. Luego explicaremos como funciona en detalle.
- Revisar sintaxis: Este botón puede activar o desactivar el corrector de sintaxis. Si está activado, nos resaltará en rojo, configurado por defecto, y aparece un mensaje en la parte inferior del código explicando cuál es el problema. Eso no significa que nuestro juego no pueda producir errores, pero es la primera fase parap oder corregirlos.
- Autocompletar: si está activado, conforme vamos escribiendo nos aparecerá una ventana y nos mostrará unas sugerencias de lo que se ha escrito. Por ejemplo, si escribimos room_.
veremos una lista de funciones y variables para elegir cual es la que corresponde.
Atajos de teclado
Aunque no lo explican en ningún lado, podemos conocer algunas combinaciones de tecla que nos puede facilitar escribir código. Muchas son estándar, como cortar con <Ctrl> + <X> o buscar con <Ctrl> + <F>, pero algunas son propias del editor. Vamos a verlas:
- Con la tecla <F2>, nos aparecerá una ventana para escribir algunos métodos y fragmentos más utilizados. Estas opciones son las que vemos en la siguiente imagen
- Pulsando <F7> y <F8> podemos cambiar el tamaño de la fuente (recuerda que en la barra de abajo de la ventana vemos el tamaño como referencia).
- Con la tecla <F10> podemos activar o desactivar la combinación de colores del editor.
- Sabemos que con la tecla <F1> nos abrirá la ventan de ayuda del programa, pero con la tecla <F12> nos abrirá la ayuda exacta del método en que está posicionado el cursor (si existe ese método).
- La ventana de autocompletar aparece automáticamente cuando hacemos una pequeña pausa al escribir. La podemos forzar con la combinación <Ctrl> + <Espacio>.
Pestañas de scripts
Es posible que si nuestro juego es muy grande tengamos muchos scripts, y aunque lo organicemos en el árbol de recursos con subcarpetas, puede ser algo caótico gestionar y buscar alguno. Por eso han creado la posibilidad de crear pestañas dentro de un script, como si fuesen fichas. Veamos cómo funciona.
Imaginemos que tenemos un objeto obj_player, que tiene un script de movimiento, otro que comprueba colisiones y otro para dibujar (con varios métodos draw). Esto claro que tenemos tres o más scripts relacionados con el mismo objeto o temática, así que lo habitual es ponerlo dentro de una subcarpeta. Pero también podemos hacer una cosa, teniendo un script de base o de partida, añadir el resto de scripts como si fueran pestañas. Los scripts funcionarán de la misma manera, la única diferencia es que no lo vemos en el árbol de recursos sino que están todos encapsulados en el único script de base que si podemos ver.
Para crear un nuevo script hijo, hacemos click en la pestaña vacía que siempre encontramos en la derecha de la pestaña actual, y a partir de ese momento funcionará igual que si fuera otro script (añadirle un nombre único, código GML, etc).
Código de colores
Cuando empecemos a escribir código, veremos que los colores cambian dependiendo de si son objetos que existen, variables del sistema, funciones, etc. Estos colores sirven para ayudar en la escritura y evitar muchos errores. Si queremos cambiar el código para mostrar colores diferentes, podemos cambiarlo en las Preferencias del sistema. También podemos apagar los colores con la tecla <F10> tal y como hemos comentado.
Buscar y reemplazar texto
Cuando hemos hablado de la barra de herramientas dijimos que hay un botón para buscar y reemplazar texto. Vamos a ver ahora en detalle el panel que aparece.
Vemos que en el panel lateral podemos escribir arriba la cadena a buscar. Al hacerlo, en el código vemos esa cadena subrayadas con un color amarillo. También vemos las opciones de case sensitive, para tener en cuenta las mayúsculas y minúsculas, importante para el nombre de variables y funciones, y Whole word only, para buscar palabras completas.
Tenemos unos botones de navegación para ir a la parte del código que estamos buscando, son los botones de previous, next, first y last.
Si queremos reemplazar texto, tenemos la sección inferior del panel. Respecto el texto buscado, podemos poner el texto que queremos reemplazar. También tenemos los mismos botones de navegación, para poder reemplazar el texto conforme va encontrando el texto buscado. Tenemos un botón más llamado Replace All para reemplazar todo el texto que ha encontrado sin necesidad de navegar, además de la casilla Replace in all tabs para hacerlo en todos los scripts que tenemos como pestañas.