Cargando



Scripts, variables y funciones en GameMaker: Studio

Te enseñamos en este tutorial los scripts, variables y funciones en nuestros programas con GameMaker: Studio, valiéndonos de la poderosa herramienta GML para la aplicación de estos conceptos.


sep 01 2015 12:10
Profesional
abr 26 2016 13:02

gml-cover.jpg

 

GameMaker: Studio y el IDE que nos proporciona el mismo podemos construir videojuegos de forma rápida y sencilla, brindándonos una interfaz amigable y clara que además de esto nos proporciona herramientas que nos ayudan para el desarrollo de nuestros juegos.

 

Una de estas herramientas es GML o GameMaker Language, el cual extiende mucho más la funcionalidad de nuestro entorno y nos permite a través de scripts escribir nuestro propio código para el proyecto, el cual usaremos en conjunto con el resto de los elementos para el desarrollo de nuestras aplicaciones.

 

Creando scripts

Antes de pasar a echar unas cuantas líneas de código vamos a darle un vistazo a los sitios donde nuestros scripts están presentes, dándonos una vista general de que podemos hacer con los mismos dependiendo de la situación.

 

Creando scripts dentro de un evento


Dentro de un objeto existen eventos asociados al mismo, donde estos eventos pueden contener un script o contener una acción que llame a uno de estos. Esta será la única ocasión donde la funcionalidad de Arrastrar y Soltar será utilizada para los scripts.

 

Para agregar un script a un evento primero debemos crear un objeto desde nuestro menú de recursos y una vez creado utilizamos el botón agregar evento para crearlo:

 

 

Luego de esta acción nos dirigimos a nuestra pestaña de control y en la sección Código, vamos a arrastrar el primer ícono que luce como una hoja de papel al panel de Acciones y soltaremos, esta acción nos creará nuestro script y podremos empezar a escribir nuestras líneas de código:

 

 

Creando scripts como recursos


Para crear un script como un recurso, nos dirigimos a nuestro menú de recursos y seleccionamos Crear Script, donde una vez creado el script este aparecerá en el árbol de recursos bajo la sección correspondiente:

 

 

Tenemos varias formas de crear un script y cada una de estas tiene sus ventajas, en el caso de un script como un recurso las siguientes condiciones son las más útiles:

  • Cuando muchos objetos utilizan la funcionalidad
  • Cuando una función necesita de múltiples entradas de datos o argumentos.
  • Cuando las acciones globales como cargar y guardar son utilizadas.
  • Al momento de implementar lógica compleja o algoritmos.

Scripts en rooms


Los rooms o habitaciones son donde recursos específicos son colocados y donde el juego es llevado a cabo. Estos recursos pueden ser creados como cualquier otro desde el menú correspondiente con Crear Habitación:

 

 

Estas rooms o habitaciones también pueden contener scripts, para ello cuando estamos editando una habitación nos dirigimos a la pestaña de ajustes dentro de las propiedades de la habitación y allí deberíamos ver el botón de Creación de Código:

 

introduccion-gml-5.jpg

 

Al presionar este botón se creará un script en blanco asociado a esa habitación que será ejecutado una vez que un jugador cargue la habitación, esto antes que cualquier objeto dispare su propio evento.

 

GML scripts

Una vez que ya sabemos dónde podemos crear nuestros scripts y a que recursos asociarlos es momento de conocer las partes que conforman nuestros scripts y los conceptos que debemos dominar, veamos.

 

Programas


Un programa en GML es una serie de instrucciones que siguen un orden en específico, donde podemos decir que cualquier script dentro de GML es un programa donde estos programas usualmente se encuentran cerrados por llaves, veamos un ejemplo:
{
str_text = "Hola mundo";
x += 10;
if (x > 200)
{
str_text = "Hola Solvetic";
}
}
Como vemos es un programa sencillo donde realizamos la instancia de una variable de tipo string, definimos luego que cada cuadro o frame 10 unidades son añadidas a x y por último una condición que si x es mayor a 200 se realice de nuevo la asignación.

 

Es importante mencionar que el punto y coma no es necesario, sin embargo para GML se recomienda utilizarlo para mejorar la lectura del código. También es recomendable no utilizar letras mayúsculas y que si alguna variable estará compuesta de dos palabras utilizar el underscore.

 

Variables

Las variables en GML son las que nos permiten representar valores, y a diferencia del resto de algunos lenguajes de programación no son estrictamente de un tipo, es decir, no tiene que representar una estructura de datos en específico. Sin embargo estas variables pueden representar uno de estos dos tipos:
  • Un número real, puede ser 200 o 5.356. Estos enteros también pueden corresponder a una instancia particular de un objeto, habitación, script u otro tipo de recurso.
  • Un string que represente una colección de caracteres alfanuméricos que se utilizan regularmente para mostrar texto como por ejemplo: “Hola Mundo”.

 

Prefijos de variables


Como se mencionó anteriormente, las variables pueden corresponder a cualquier tipo de dato, incluso cualquier tipo de recursos, pero para resolver este problema tenemos los prefijos para las variables, los cuales nos permiten identificar el tipo de data contenida en la misma. Esto no es algo obligatorio, pero es una convención para poder trabajar de mejor manera en GML, por ejemplo si tenemos str_nombre_jugador ya sabremos que es un string, veamos los prefijos que podremos utilizar:
  • str: String
  • spr: Sprites
  • snd: Sonidos
  • bg: Fondos
  • pth: Rutas
  • scr: Scripts
  • fnt: Fuentes
  • tml: Línea de tiempo
  • obj: Objeto
  • rm: Habitación
  • ps: Sistema de partículas
  • pe: Emitidor de partículas
  • pt: Tipo de partículas
  • ev: Evento

 

Alcance de las variables


Dentro de nuestros scripts las variables tienen distintos alcances, lo que significa que la manera en que podemos acceder a las variables y setear los valores puede variar. Veamos los distintos alcances con los que contamos:

 

Instancia


Estas variables son únicas para la instancia o copias de cada objeto. Pueden ser accedidas y seteadas por ellas mismas y por otros objetos, siendo las más comunes dentro de GML.

 

Locales


Estas son aquellas que existen solo dentro de una función o un script, son declaradas utilizando la palabra reservada var y solo pueden ser accedidas en los scripts en las que se definan.

 

Globales


Una variable que es global puede ser accedida por cualquier objeto a través de un script, la misma pertenece al juego y no a la instancia individual de la instancia del objeto.

 

Constantes


Las constantes son variables cuyos valores solo pueden ser leídos y no alterados, pueden ser globales o incluso de instancia.

 

Ya que sabemos los distintos tipos de alcances de las variables, veamos un pequeño ejemplo de cómo realizamos la asignación de acuerdo al alcance:

//caso 1
var a = 1;
//caso 2
globalvar b;
b = 2;
//caso 3
global.c = 10;
//caso 4
self.x = 10;
//caso 5
y = 10;
Para el primer caso tenemos una variable local, esto lo identificamos fácilmente por el uso de la palabra reservada var. En el segundo caso, tenemos la declaración de una variable global y su asignación. Para el caso 3 es una forma alternativa de hacer la declaración y la asignación de una variable global y por último para el caso 4 y 5 son variables de instancia pero una de ellas a través de self y la otra no.

 

Variables del lenguaje


Por último en el tema de las variables tenemos algunas globales y de instancia que son provistas por GameMaker: Studio para cada objeto, como por ejemplo x, sprite o index por mencionar algunas. Pero existen las variables del lenguaje que también son globales como health o salud, score o puntaje y lives o vidas. El uso de estas variables depende de cada desarrollador por lo que podemos decidir prescindir de ellas, pero estos nombres hacen mucho más fácil recordarlas y aplicarlas en nuestros programas.

 

Funciones

Una función en GML es una funcionalidad que permite ejecutar un programa, puede venir por defecto en el lenguaje o puede ser creada como un recurso de tipo script.

 

Estas funciones pueden ejecutar una acción como cambiar la alineación de una fuente durante el evento de dibujo, retornar un valor o hacer ambas acciones, donde estas funciones deben ser seguidas por paréntesis y en el caso de necesitar, ciertos argumentos para su funcionamiento. Veamos unas cuantas líneas de código para ver el comportamiento de algunas funciones:

// caso 1
draw_self();
// caso 2
draw_arrow(0,0,100,100,2);
// caso 3
random_value = random(10, 23);
Para el caso número 1 tenemos una función simple que dibuja una instancia, el caso número 2 es una función que ejecuta una acción y la misma requiere de argumentos para poder funcionar, por último tenemos una función que ejecuta una acción, lo cual es obtener un valor aleatorio y retornarlo a una variable.

 

Existe un caso especial que es el script_execute, el cual es una función que nos permite acceder a los scripts creados como recursos, y la particularidad es que nos permite utilizar las variables de nuestro script y luego ejecutar el mismo:

self.script = scr_script_recurso;
script_execute(self.script, "argumento", obj_button, 0.12, false);
Como podemos ver el espectro de GameMaker: Studio se extiende mucho más allá de su interfaz, contamos con una poderosa herramienta como lo es GML, la cual cuenta con elementos familiares para los desarrolladores como variables o funciones, y a través de esta podemos aplicar aquellos conocimientos de desarrollo para el desarrollo de nuestros proyectos y juegos.


¿Te ayudó este Tutorial?


Sin comentarios, sé el primero!

No esperes más y entra en Solvetic
Deja tus comentarios y aprovecha las ventajas de la cuenta de usuario ¡Únete!

X