11/12/2015
Adentrarse en el mundo del desarrollo de videojuegos puede parecer una tarea titánica, pero con las herramientas adecuadas, es una aventura increíblemente gratificante. GameMaker es una de esas herramientas, un motor de juego potente pero accesible, ideal para quienes dan sus primeros pasos. En esta guía completa, te llevaremos de la mano para que construyas tu propio juego de plataformas. No te preocupes si todo es nuevo para ti; desglosaremos cada concepto, desde los elementos más básicos, conocidos como assets, hasta la creación de niveles funcionales y la programación del comportamiento de tu personaje. Al final de este artículo, no solo habrás creado un pequeño juego, sino que también tendrás una base sólida para futuros proyectos más ambiciosos.

¿Qué son los Assets? Los Ladrillos de tu Juego
Antes de sumergirnos en la creación, es fundamental entender el concepto de "Asset". En GameMaker, un asset (o recurso) es cualquier componente que forma parte de tu juego. Piensa en ellos como los ingredientes de una receta. Los assets principales con los que trabajaremos son:
- Sprites: Son las imágenes o animaciones que ves en pantalla. El personaje principal, los enemigos, las monedas, las plataformas; todo lo que tiene una representación visual es, en esencia, un sprite.
- Objetos: Son los cerebros detrás de los sprites. Un sprite es solo una imagen, pero un objeto le dice a esa imagen cómo comportarse. Aquí es donde escribiremos el código para que el jugador se mueva, salte o interactúe con el mundo.
- Rooms (Salas): Son los niveles o escenarios de tu juego. Una sala es un espacio donde colocas tus objetos (como el jugador, los enemigos y las plataformas) para crear una escena jugable.
Para empezar, crea un nuevo proyecto en blanco en GameMaker. Al abrirlo, verás a la derecha el Navegador de Assets (Asset Browser). Este panel es tu inventario, donde se organizarán y guardarán todos los recursos de tu proyecto. Para mantener el orden, puedes crear carpetas para cada tipo de asset.
Paso 1: Creando Sprites
Comencemos con lo visual. Los sprites son el primer paso para dar identidad a nuestro juego. Para crear uno, haz clic derecho en el Navegador de Assets, selecciona "Crear" y luego "Sprite".
Es una buena práctica nombrar tus assets de forma organizada. Por ejemplo, podemos usar prefijos: "s_" para sprites, "o_" para objetos, etc. Creemos nuestro primer sprite y llamémoslo s_jugador.
Una vez creado, se abrirá el Editor de Sprites. Aquí tienes dos opciones: puedes hacer clic en "Editar Imagen" para dibujar tu propio personaje usando las herramientas integradas de GameMaker, o puedes hacer clic en "Importar" para cargar un archivo de imagen (como un .PNG) que hayas creado previamente o descargado. Para este tutorial, crearemos los siguientes sprites:
- s_jugador: El personaje que controlará el usuario.
- s_suelo: Una plataforma sólida sobre la que el jugador podrá caminar.
- s_pincho: Un obstáculo que reiniciará el nivel si se toca.
- s_bandera: La meta que el jugador debe alcanzar para ganar.
Un detalle crucial para el sprite del jugador es su origen. El origen es el punto de anclaje del sprite, alrededor del cual se realizan las rotaciones y desde donde se mide su posición (x, y). Para un personaje de plataformas, es muy recomendable establecer el origen en "Middle Centre" (Centro Medio). Esto asegura que las colisiones y los giros se comporten de manera predecible.
Paso 2: Dando Vida con Objetos
Ahora que tenemos las imágenes, necesitamos darles comportamiento. Crearemos un objeto para cada sprite. Haz clic derecho en el Navegador de Assets, ve a "Crear" y selecciona "Objeto".

Nombraremos el primer objeto o_jugador. En el editor de objetos, lo primero que haremos es asignarle su sprite correspondiente. Haz clic en el área que dice "No Sprite" y selecciona s_jugador de la lista. Repite este proceso para los demás sprites, creando o_suelo, o_pincho y o_bandera, y asignando a cada uno su respectivo sprite.
La ventana más importante del editor de objetos es la de Eventos. Un evento es un momento específico en el juego en el que se puede ejecutar código. Por ejemplo, el evento "Crear" se ejecuta una sola vez cuando el objeto aparece por primera vez en el nivel. El evento "Step" se ejecuta en cada fotograma del juego, siendo ideal para manejar la lógica continua como el movimiento y las colisiones.
Construyendo el Nivel: Tu Primera Sala
Con nuestros objetos listos, es hora de construir el escenario. En GameMaker, los niveles se llaman "Rooms" (Salas). Por defecto, tu proyecto ya tiene una llamada "Room1". Haz doble clic sobre ella para abrir el Editor de Salas.
Verás una cuadrícula, que es tu lienzo de nivel. A la izquierda, en el Inspector, puedes cambiar propiedades de la sala como su tamaño (ancho y alto). Un tamaño manejable para empezar podría ser 320x180 píxeles. También puedes ajustar el tamaño de la cuadrícula (grid) para alinear los objetos con precisión. Un tamaño de 16x16 es común para juegos de estilo retro.
Para añadir objetos al nivel, simplemente arrástralos desde el Navegador de Assets y suéltalos en la sala. Otra forma más rápida es seleccionar un objeto y, manteniendo presionada la tecla Alt (u Opción en Mac), puedes "pintar" instancias de ese objeto en el nivel. Coloca algunas plataformas de o_suelo, un par de o_pincho como trampas, la o_bandera al final y, por supuesto, a nuestro o_jugador al inicio.

Programando al Jugador con GML
Llegó el momento de escribir código. Usaremos el lenguaje propio de GameMaker, GML (GameMaker Language), que es flexible y relativamente fácil de aprender. Abre el objeto o_jugador.
El Evento Create: Inicialización de Variables
Añade un nuevo evento haciendo clic en "Add Event" y selecciona "Create". Este código se ejecutará solo una vez al inicio del nivel. Aquí definiremos las variables que controlarán el movimiento de nuestro personaje.
// Variables de movimiento
velocidad_mov = 4;
velocidad_salto = 16;
// Variables para almacenar el movimiento en cada frame
mov_x = 0;
mov_y = 0;
Aquí, velocidad_mov controla qué tan rápido camina el jugador, y velocidad_salto define la fuerza del salto. mov_x y mov_y almacenarán el desplazamiento horizontal y vertical que calcularemos en cada fotograma.
El Evento Step: Lógica en Tiempo Real
Ahora, añade un evento "Step". Este es el corazón de la lógica del jugador, ya que se ejecuta constantemente. Aquí gestionaremos la entrada del teclado, la gravedad, el salto y las colisiones.
1. Capturando la Entrada del Teclado
Primero, leemos si el jugador presiona las teclas de dirección.

// Obtener la entrada horizontal
mov_x = keyboard_check(vk_right) - keyboard_check(vk_left);
mov_x *= velocidad_mov;
Esta ingeniosa línea de código hace que keyboard_check(vk_right) devuelva 1 si se presiona la flecha derecha, y keyboard_check(vk_left) devuelva 1 si se presiona la izquierda. Al restarlos, obtenemos 1 (derecha), -1 (izquierda) o 0 (ninguna). Luego, multiplicamos este valor por nuestra velocidad_mov.
2. Gravedad y Salto
A continuación, simularemos la gravedad y permitiremos que el jugador salte solo si está en el suelo.
// Comprobar si estamos en el suelo
var en_el_suelo = place_meeting(x, y + 2, o_suelo);
if (en_el_suelo) {
mov_y = 0; // Si estamos en el suelo, no caemos
if (keyboard_check(vk_space)) {
mov_y = -velocidad_salto; // Al presionar espacio, saltamos (y es negativo)
}
} else {
// Si estamos en el aire, aplicamos gravedad
if (mov_y < 10) {
mov_y += 1;
}
}
La función place_meeting(x, y, objeto) es extremadamente útil. Devuelve verdadero si el objeto actual, en la posición (x, y) que le indiques, colisiona con el objeto especificado. Aquí, comprobamos 2 píxeles por debajo del jugador (y + 2) para ver si hay un o_suelo. Si lo hay, reiniciamos la velocidad vertical y comprobamos si se presiona la barra espaciadora para saltar. En GameMaker, las coordenadas Y aumentan hacia abajo, por lo que para subir, necesitamos una velocidad vertical negativa.
3. Movimiento y Colisión Final
Con las velocidades calculadas, ahora necesitamos mover al personaje y hacer que colisione con el entorno. Usaremos la función move_and_collide(), una herramienta moderna y potente que maneja incluso pendientes de forma automática.
// Mover al jugador y gestionar colisiones con el suelo
move_and_collide(mov_x, mov_y, o_suelo);
// Voltear el sprite del jugador según la dirección
if (mov_x != 0) {
image_xscale = sign(mov_x);
}
move_and_collide mueve la instancia según los valores de mov_x y mov_y, y se detiene automáticamente si encuentra una instancia de o_suelo. La segunda parte del código voltea el sprite: image_xscale controla la escala horizontal del sprite. La función sign() devuelve 1 si el número es positivo y -1 si es negativo, logrando que el personaje siempre mire en la dirección en la que se mueve.

Interacciones Adicionales: Peligros y Metas
Nuestro jugador ya se mueve, ¡pero el nivel no tiene objetivo! Volvamos al evento Step del o_jugador y añadamos el código para interactuar con los pinchos y la bandera.
// Comprobar colisión con la bandera (ganar)
if (place_meeting(x, y, o_bandera)) {
room_goto_next(); // Ir al siguiente nivel
}
// Comprobar colisión con los pinchos (perder)
if (place_meeting(x, y, o_pincho)) {
room_restart(); // Reiniciar el nivel actual
}
Estas dos funciones son muy directas. room_goto_next() carga la siguiente sala en el orden del proyecto, y room_restart() simplemente vuelve a cargar la sala actual desde el principio.
Pulido Final y Expansión
¡Felicidades! Ya tienes un nivel jugable. Ahora podemos pulirlo y expandirlo.
Añadir un Fondo
Un nivel sin fondo se siente vacío. Puedes crear una capa de fondo en el Editor de Salas. Selecciona la capa "Background", asígnale un sprite y marca las casillas "Tile Horizontally" y "Tile Vertically" para que se repita por todo el nivel. También puedes cambiar su color para darle una atmósfera diferente.
Crear Más Niveles
Para añadir más contenido, no necesitas empezar de cero. En el Navegador de Assets, haz clic derecho en tu "Room1" y selecciona "Duplicate". Esto creará una copia exacta. Renómbrala a "Room2" y ábrela para modificar el diseño, añadiendo más desafíos. Puedes crear tantos niveles como quieras. Recuerda que el juego podría fallar al terminar el último nivel si no hay una "siguiente sala" a la que ir. Una buena práctica sería crear una pantalla de "Fin del Juego" como la última sala.
| Asset | Función Principal | Ejemplo |
|---|---|---|
| Sprite | Representación visual, imagen o animación. | s_jugador |
| Objeto | Contiene la lógica y el comportamiento. | o_jugador |
| Room | Es el nivel o escenario del juego. | Room1 |
Preguntas Frecuentes (FAQ)
- ¿Cuánto tiempo se tarda en aprender lo básico de GameMaker?
- Depende de tu experiencia previa, pero siguiendo tutoriales guiados, puedes tener un prototipo de plataformas funcional en aproximadamente una hora. La clave es la práctica constante para afianzar los conceptos.
- ¿Cuál es la diferencia exacta entre un Sprite y un Objeto?
- Un Sprite es solo la apariencia, la "piel". No puede hacer nada por sí mismo. Un Objeto es la entidad invisible que contiene el código (el "cerebro") y al que se le asigna un Sprite para que sea visible en el juego. Puedes tener varios objetos diferentes usando el mismo sprite, pero con comportamientos distintos.
- ¿Puedo usar mis propios gráficos y sonidos?
- ¡Por supuesto! La función "Importar" en el editor de sprites te permite cargar tus propias imágenes en formatos como PNG. De manera similar, puedes crear assets de sonido e importar tus propios archivos de audio para música y efectos.
- Mi juego se cierra al llegar a la bandera en el último nivel, ¿por qué?
- Esto ocurre porque la función
room_goto_next()intenta cargar una sala que no existe. Para solucionarlo, podrías crear una sala final (por ejemplo, una pantalla de créditos o de "Gracias por jugar") o añadir una comprobación para ver si la sala actual es la última antes de llamar a esa función.
Conclusión
Has recorrido un largo camino: desde crear tus primeros assets hasta programar un personaje funcional y diseñar niveles. Este es solo el punto de partida. GameMaker es una herramienta profunda con infinitas posibilidades. Te animamos a experimentar: añade nuevos enemigos, power-ups, animaciones para el jugador o mecánicas de juego diferentes. La base que has construido hoy es el cimiento perfecto para cualquier proyecto que imagines. ¡Sigue creando y divirtiéndote!
Si quieres conocer otros artículos parecidos a Tu Primer Juego en GameMaker: Assets y Niveles puedes visitar la categoría Juegos.
