Game Maker Language

De Wikipedia, la enciclopedia libre
Saltar a: navegación, búsqueda

Game Maker Languaje (GML) es un lenguaje de programación interpretado, desarrollado para usarse como complemento de la aplicación de desarrollo de juegos Game Maker. El lenguaje es utilizado en el programa para dar mayor potenciación al desarrollo de juegos u otros sistemas dentro de tal. El lenguaje fue codificado usando el lenguaje Delphi.

Es un lenguaje de programación muy flexible, su sintaxis es comparable con la de C++, aunque también se ve influenciado por la sintaxis de otros lenguajes como Pascal. La estructura general del código GML puede tomar diferentes formas de sintaxis, ya que no se ve sujeta a una sintaxis estricta como la de C. Es capaz de trabajar con números, cadenas de texto y demás de manera nativa.


Sintaxis general[editar]

El lenguaje GML a nivel sintaxis es similar a C++, aun así, este lenguaje constata de mucha flexibilidad debido a sus diversas variaciones de sintaxis (las cuales son todas válidas).

Por ejemplo, al trabajar con operadores puede funcionar así:

g=g+1;

Pero en GML también es válido de esta forma:

g+=1;

Esta regla de operadores también se puede aplicar en /=, -= y *=.

El lenguaje GML además, no obliga el uso reglamentario del símbolo ";" al final de cada línea o función, lo cual le hace flexible en el aspecto estricto de la sintaxis.

Funciones[editar]

El lenguaje GML por ende ya tiene un gran número de funciones y sistemas implementados dentro del mismo programa en el que trabaja, es decir, no necesita de librerías externas como en otros lenguajes (C++ por ejemplo), aun así, también cabe la posibilidad de poder usar librerías externas en formato DLL para potenciar ciertos campos del sistema.

Variables[editar]

GML no necesita de la declaración compulsiva de variables para trabajarlas, es decir, basta con asignarle un valor fijo una vez en cualquier sitio. Por ejemplo:

variable=<valor>;

En este caso, la variable ya está declarada y puede usarse de forma general, aun así, GML también incluye un bloque "var" imitando las declaraciones de variables de otros lenguajes, pudiendo declarar un sin número de variables en el programa sin necesidad de asignarles un valor (si no que este automáticamente es 0, como en C++). Por ejemplo:

var xx,yy,ss;

Game Maker también trabaja con constantes, las cuales se pueden asignar desde una función del programa (más las que ya existen por ende). Dentro del código GML existen dos tipos de variables de trabajo, las variables locales y variables globales. Las variables locales trabajan únicamente dentro de un "objeto", es decir, no es existente fuera del "objeto" o bloque de código que la trabaje (lo cual permite usar el mismo nombre de la variable en otro objeto). Por otro lado están las variables globales, las cuales usan el prefijo global. antes del nombre de la variable, por ejemplo:

global.variable=0;

Las variables globales tienen uso en todo el programa, por lo cual solo puede existir una sola variable global con el mismo nombre, y su valor puede verse afectado desde cualquier parámetro del programa/código.

GML también puede manejar arrays de manera muy simple y muy similar a C++.

Deben ser declaradas de la forma:

array[índice1,índice2];

Las arrays en Game Maker pueden ser de 1 o 2 dimensiones y pueden contener una mezcla de strings y de valores reales, pero no otras arrays. También existe un límite en los tamaños: Los índices deben estar entre 0 y 32.000 y no puede haber más de 1.000.000 valores en una misma array.

GML también cuenta con funciones utilizadas para crear y editar seis estructuras de datos simples. Estas funciones sólo están disponibles para los usuarios que tienen la versión Pro de Game Maker. Las estructuras de datos disponibles son Stacks, Queues, Listas, Mapas, Queues de prioridad, y Grids.

Tipos[editar]

Por la simplicidad del GML, este sólo tiene dos tipos de variables. Cualquier variable puede llevar cualquier tipo de datos sin ningún tipo de declaración.

  • Strings Son cadenas de caracteres ASCII (ó Unicode y ANSI en caso de GM 8.1) que pueden tener cualquier longitud. Como GM prefija el tamaño de las strings como valores enteros de 4 bytes, una string en realidad no puede tener más de 4,294,967,296 caracteres. Si una string supera dicho número, 4,294,967,296 caracteres son cortados desde el principio hasta que el número total de estos sea menor al límite. Sin embargo, generalmente las strings son muchísimo más cortas.
  ty_string
  • Valores Reales Son números con signo de punto flotante. Eso quiere decir que pueden ser números positivos o negativos y que pueden tener parte decimal. Desde la versión 6.1, GM permite la representación de valores hexadecimales como reales en el código, si se preceden del carácter $. En la versión 6, el manejo de valores reales tenía un bug que provocaba errores de precisión al trabajar con valores reales altos. El bug también existe en GM 7 y 8, pero fue mitigado con más precisión.
  ty_real

Como GML no tiene valores booleanos, sentencias que requieren valores booleanos (como if) evaluarán cualquier valor real mayor que 0.5 como verdadero y cualquier valor real menor o igual a 0.5 como falso. En GML también existen las constantes por defecto true y false que equivalen a 1 y 0 respectivamente, y pueden ser usadas para hacer el código más legible.

Alcance[editar]

En GML, hay dos tipos de variables locales: locales a una "instancia", y locales a un "script" (o cualquier otra pieza de código que tenga su propio contenedor). Ser local a una instancia significa que esa variable está unida a esa instancia particular y que para ser llamada desde otra instancia debe usarse como prefijo el nombre de la instancia que contiene la variable. Ser local a un script significa que la variable sólo puede ser usada en ese script y que al terminar de procesarse éste, la variable expira. El término "local" sin más especificaciones, usualmente se refiere a local a una instancia.

Por defecto, una variable es local de una instancia pero no local al script en el que es usada. Para hacer una variable accesible por todas las instancias (y scripts) puede ser definida usando el prefijo global global.foo=bar; o declarada explícitamente globalvar foo,bar;. Usando la primera forma, la variable debe siempre ser llamada usando el prefijo global.; la declaración con globalvar no requiere ningún prefijo. Para hacer una variable local a un script se usa la palabra clave var: var foo,bar;.

Se puede acceder a una variable que es local a una instancia desde otra instancia usando como prefijo un identificador de instancia instancia.variable. No hay forma de acceder a una variable local de un script desde otro, a menos que la variable se pase de script en script como argumento.

Una instancia puede ejecutar código en otra instancia usando la sentencia "with". Por ejemplo, la siguiente pieza de código, colocada en un evento de colisión, puede ser usada para destruir a la instancia que colisiona con la actual. Cuando se ejecuta un evento de colisión, Game Maker automáticamente crea la variable "other", la cual se refiere a la instancia envuelta en la colisión.

with (other) {instance_destroy();}

Nótese que cuando una variable es local a un script, ésta es independiente de toda instancia. Por ejemplo, el siguiente código funcionaría aunque la variable foo no está definida en OtraInstancia.

var foo;
foo="bar";
with (OtraInstancia) {show_message(foo);}