13/12/2022
¡Bienvenido al emocionante universo del desarrollo de videojuegos! El camino para crear tus propias obras interactivas puede parecer intimidante al principio, especialmente si eres nuevo en este arte. Afortunadamente, GameMaker, una de las plataformas de desarrollo más queridas y accesibles, cuenta con un lenguaje de programación propio diseñado para convertir tus ideas en una realidad jugable. En esta guía completa, desmitificaremos el lenguaje de programación de GameMaker, conocido como GML, en términos sencillos para que puedas embarcarte en tu viaje con total confianza. Ya sea que sueñes con crear simples aventuras en 2D o mundos interactivos complejos, GML es la herramienta que te abrirá las puertas.

¿Qué es GameMaker y por qué GML es la clave?
GameMaker es un motor de desarrollo de videojuegos que simplifica enormemente el proceso de creación. Ofrece una interfaz visual de arrastrar y soltar (Drag and Drop) que permite a los principiantes crear juegos sin escribir una sola línea de código. Sin embargo, para desbloquear el verdadero potencial del motor, personalizar cada detalle y crear mecánicas complejas, necesitas sumergirte en su lenguaje de scripting nativo: GameMaker Language, o GML. GML te permite ir más allá de las limitaciones del sistema visual, dándote un control preciso sobre cada aspecto de tu juego.
Primeros Pasos con GameMaker Language (GML)
Antes de sumergirte en GML, lo primero que necesitas es tener GameMaker instalado en tu ordenador. Puedes descargarlo desde su sitio web oficial. Una vez instalado, inicia el programa y crea un nuevo proyecto en blanco. Aquí es donde tu aventura como programador realmente comienza. Aunque al principio te encuentres con la interfaz visual, pronto descubrirás que cada acción de arrastrar y soltar tiene su equivalente en código GML, y aprender a escribirlo directamente te dará una velocidad y flexibilidad inigualables.
Los Pilares Fundamentales de GML
GML es un lenguaje de scripting diseñado específicamente para hacer juegos. Es relativamente fácil de aprender y ofrece una flexibilidad asombrosa. Para entenderlo, debemos descomponerlo en sus componentes clave.

Objetos: El Corazón de tu Juego
En GameMaker, prácticamente todo es un objeto. Los objetos son las plantillas de cualquier elemento de tu juego: el jugador, los enemigos, las balas, las paredes, los menús, etc. Cada objeto tiene propiedades (como su posición, velocidad o sprite) y comportamientos, los cuales defines a través de eventos y código GML.
Eventos: Los Desencadenantes de la Acción
Los eventos son acciones que se disparan cuando algo específico sucede en el juego. Por ejemplo, un evento "Crear" se ejecuta una sola vez cuando se crea una instancia de un objeto. Un evento "Step" se ejecuta en cada fotograma del juego, lo que es ideal para la lógica de movimiento o comprobaciones constantes. Un evento "Colisión" se activa cuando dos objetos se tocan. Tú escribes el código GML dentro de estos eventos para definir qué debe suceder.
Variables: Almacenando la Información Vital
Las variables son contenedores que almacenan datos que pueden cambiar durante el juego. Son esenciales para llevar la cuenta de la puntuación, la salud del jugador, la cantidad de munición o cualquier otro valor dinámico. En GML, existen diferentes tipos de variables:
- Variables de Instancia: Son las más comunes. Pertenecen a una instancia específica de un objeto. Por ejemplo, la variable
hp(puntos de vida) de un enemigo solo pertenece a ese enemigo en particular. - Variables Locales: Estas variables solo existen dentro del evento o script en el que fueron declaradas. Se utilizan para cálculos temporales y se descartan una vez que el script finaliza, ayudando a optimizar la memoria. Se declaran usando la palabra clave
var. - Variables Globales: Como su nombre indica, estas variables son accesibles desde cualquier objeto y en cualquier momento del juego. Son útiles para datos que deben persistir, como la puntuación total del jugador o la configuración del juego. Se declaran con el prefijo
global.(ej.global.score = 0;). - Variables Incorporadas (Built-in): Son variables que ya vienen definidas en los objetos y que controlan propiedades fundamentales, como
x,y(posición),speed(velocidad) osprite_index(el sprite actual).
Funciones: Bloques de Código Reutilizables
Las funciones son bloques de código que puedes escribir una vez y llamar múltiples veces desde diferentes lugares. Esto es increíblemente útil para evitar repetir código y mantener tu proyecto organizado. Por ejemplo, podrías crear una función para calcular el daño que un jugador recibe, tomando en cuenta su armadura.

function calcular_daño(daño_base, armadura) { var daño_final = daño_base - armadura; if (daño_final < 0) { daño_final = 0; } return daño_final; }Controlando el Flujo de tu Juego: Estructuras y Declaraciones
Las estructuras de control te permiten dictar el flujo de ejecución de tu código. Son las herramientas que te permiten tomar decisiones y repetir acciones, formando la base de la lógica de cualquier juego.
Condicionales (if / else)
Permiten que tu código tome decisiones. Si una condición es verdadera, se ejecuta un bloque de código; de lo contrario, se puede ejecutar otro.
if (hp <= 0) { // El jugador ha sido derrotado instance_destroy(); } else { // El jugador sigue vivo estado = "herido"; }Bucles (for, while, do...until)
Los bucles te ayudan a repetir acciones múltiples veces sin tener que escribir el mismo código una y otra vez. El bucle for es ideal cuando sabes cuántas veces quieres repetir una acción, mientras que while es perfecto para repetir algo mientras se cumpla una condición.
// Crear 5 enemigos en posiciones aleatorias for (var i = 0; i < 5; i++) { instance_create_layer(random(room_width), random(room_height), "Instances", obj_enemigo); }Declaración 'with'
Esta es una de las declaraciones más potentes de GML. Te permite ejecutar un bloque de código para una o varias instancias de un objeto específico. Por ejemplo, podrías usar with para dañar a todos los enemigos en pantalla a la vez.

// Todos los objetos 'obj_enemigo' pierden 10 de vida with (obj_enemigo) { hp -= 10; }GML para Principiantes: ¿Es Fácil de Aprender?
Esta es una pregunta crucial para muchos. La facilidad con la que aprendas GML dependerá de tu experiencia previa y tu capacidad para pensar de manera lógica. Sin embargo, en comparación con lenguajes como C++ o C#, GML es significativamente más fácil y permisivo.
GML está basado en lenguajes como JavaScript y la familia C, por lo que si tienes alguna experiencia con ellos, te sentirás como en casa. Pero incluso si nunca has escrito una línea de código, GML es un excelente punto de partida. Su sintaxis es clara y el motor GameMaker proporciona retroalimentación instantánea, lo que facilita enormemente el proceso de aprendizaje y depuración.
Tabla Comparativa: GML vs. Otros Lenguajes
| Característica | GML (GameMaker Language) | Python (con Pygame) | C++ (con motor propio/Unreal) |
|---|---|---|---|
| Curva de Aprendizaje | Baja. Muy amigable para principiantes. | Baja. Sintaxis muy limpia y legible. | Alta. Requiere gestión de memoria y es muy estricto. |
| Uso Principal | Desarrollo rápido de juegos 2D. | Multipropósito, bueno para prototipos y juegos indie. | Juegos de alto rendimiento (AAA), sistemas complejos. |
| Velocidad de Desarrollo | Muy Rápida. | Rápida. | Lenta. |
Preguntas Frecuentes (FAQ) sobre GML
¿Qué significa exactamente GML?
GML son las siglas de GameMaker Language. Es el lenguaje de programación propietario y nativo del motor de videojuegos GameMaker.

¿GameMaker utiliza Python?
No. Aunque Python es un lenguaje muy popular, el lenguaje nativo de GameMaker es GML. Es posible que existan extensiones o plugins creados por la comunidad para integrar funcionalidades de Python, pero el desarrollo principal dentro del entorno se realiza con GML.
¿GML es similar a C++?
Sí, comparte similitudes conceptuales y de sintaxis con la familia de lenguajes C (C++, C#), así como con JavaScript. GML utiliza C++ en su sistema de ejecución (runtime), por lo que la lógica subyacente tiene raíces en C++. Si conoces C++, encontrarás que GML es mucho más sencillo y flexible en su uso diario.
¿Puedo crear un juego completo usando solo GML?
¡Absolutamente! De hecho, esa es su finalidad. Con GML puedes desarrollar juegos completos y complejos, desde la lógica del jugador y los enemigos hasta la interfaz de usuario, los sistemas de guardado, los desafíos, las tablas de puntuación y mucho más.
Conclusión
GameMaker Language (GML) es un lenguaje de programación versátil, potente y, lo más importante, accesible para crear videojuegos. Con práctica y aprovechando los recursos disponibles, como la documentación oficial y la enorme comunidad de desarrolladores, puedes dar vida a tus ideas más creativas. No temas experimentar. Comienza con proyectos pequeños para afianzar los conceptos básicos y, gradualmente, avanza hacia juegos más complejos. La clave es seguir aprendiendo, ser curioso y, sobre todo, divertirte mientras exploras el fascinante mundo del desarrollo de videojuegos. ¡Mucha suerte y a programar!
Si quieres conocer otros artículos parecidos a GML: Tu Guía para Programar en GameMaker puedes visitar la categoría Juegos.
