Introducción al Desarrollo de Videojuegos con GameMaker · Módulo 1: Introducción a GameMaker, instalación y primer proyecto.
Creación del primer proyecto en blanco
Clase 4 de 60 · 45 min
También disponible en: EN
Introducción: La importancia de unos cimientos sólidos
Al iniciar el desarrollo de un videojuego, la tentación más común entre principiantes consiste en abrir el motor gráfico, arrojar recursos visuales de forma desordenada en cualquier carpeta temporal y escribir líneas de código sin un plan de contingencia. Este enfoque apresurado suele culminar en archivos corruptos, dependencias rotas, conflictos de nombres y horas de trabajo perdidas. En el desarrollo profesional, la preparación del entorno y la arquitectura de archivos es tan determinante como la propia lógica de programación.
GameMaker gestiona los proyectos mediante un sistema modular basado en metadatos legibles en formato JSON y referencias cruzadas entre recursos. Comprender de qué manera el motor lee, almacena y compila estos ficheros permite prevenir fallos catastróficos antes de escribir la primera línea de código de nuestro videojuego de plataformas. En esta lección aprenderás a crear un proyecto totalmente limpio, descartando dependencias innecesarias, configurando rutas seguras en tu sistema operativo y estableciendo una taxonomía de carpetas escalable que nos acompañará a lo largo de los doce módulos del curso.
Plantillas de inicio frente al proyecto en blanco
Al iniciar GameMaker e iniciar la creación de un nuevo archivo mediante el botón «New», la interfaz presenta dos opciones principales: utilizar una plantilla predefinida (Template) o comenzar desde un lienzo completamente en blanco (Blank Project). Las plantillas oficiales proporcionadas por YoYo Games —tales como pequeños prototipos de naves, juegos de plataformas elementales o aventuras de perspectiva cenital— resultan de utilidad para usuarios que solo buscan explorar mecánicas ya programadas o comprobar el funcionamiento visual de un género específico. Sin embargo, para fines pedagógicos y para el desarrollo serio de un proyecto comercial o formativo, comenzar con una plantilla suele ser perjudicial.
Las plantillas importan scripts preexistentes, configuraciones de cámara complejas, sistemas de colisión que quizás no se ajusten a tus necesidades técnicas y una gran cantidad de sprites temporales que saturan el árbol de recursos. Si un estudiante modifica código ajeno sin dominar la base, cualquier fallo menor se convierte en un laberinto indescifrable de dependencias ocultas. En cambio, comenzar desde un proyecto en blanco («Blank Project») garantiza un control milimétrico sobre cada byte de memoria, cada objeto y cada evento que compone la obra.
| Criterio de evaluación | Proyecto en blanco (Blank) | Plantillas prediseñadas (Templates) |
|---|---|---|
| Curva de aprendizaje | Progresiva y controlada; cada línea es escrita y comprendida por el alumno. | Confusa; oculta lógica avanzada y scripts complejos que abruman al principiante. |
| Limpieza de recursos | Árbol de recursos (Asset Browser) completamente vacío y personalizable. | Decenas de sprites, sonidos y fuentes preinstalados que no siempre se utilizarán. |
| Flexibilidad arquitectónica | Permite diseñar sistemas de física y movimiento a la medida del diseño del juego. | Fuerza al programador a adaptarse a convenciones y métodos decididos por terceros. |
| Riesgo de errores fantasmas | Casi nulo; los fallos provienen únicamente de las adiciones del propio usuario. | Elevado; modificar un script predeterminado puede quebrar eventos secundarios invisibles. |
Por estos motivos, nuestro proyecto de plataformas 2D retro se construirá exclusivamente sobre una base en blanco. Al hacer clic en «New», GameMaker también solicitará elegir entre GML Code y GML Visual. Aunque el motor permite alternar o combinar ambas modalidades en distintas etapas, en este curso seleccionaremos de manera estricta «GML Code». La programación textual mediante código fuente no solo otorga una velocidad de trabajo infinitamente superior una vez dominada la sintaxis, sino que transmite los conceptos universales de la lógica computacional aplicables a cualquier otro entorno de la industria del videojuego.
Creación paso a paso de un nuevo proyecto
Para iniciar el proyecto de manera impecable, sigue minuciosamente este procedimiento. Primero, abre GameMaker y asegúrate de haber iniciado sesión con tu cuenta activa de Opera/YoYo Games. En la pantalla principal de bienvenida (Start Screen), haz clic en el botón grande etiquetado como «New» situado en la columna lateral izquierda o en el panel superior central. Aparecerá un cuadro de diálogo donde se exhiben los tipos de proyectos disponibles. Selecciona la tarjeta que lleva por título «Blank».
Inmediatamente después, el entorno te solicitará elegir el lenguaje predeterminado para el proyecto. Marca con el ratón la opción «GML Code». A continuación, se desplegará una ventana del explorador de archivos del sistema operativo para definir dos variables críticas: el nombre del proyecto («Project Name») y la ubicación física en el disco duro («Location»).
La elección del nombre no es un mero asunto cosmético. El nombre que introduzcas se convertirá en el identificador principal del archivo raíz del proyecto, en el nombre de la carpeta contenedora y en el título provisional de la ventana ejecutable. Por razones de compatibilidad internacional y para prevenir comportamientos anómalos en los compiladores internos de C++ y JavaScript que GameMaker utiliza bajo cuerda, debes respetar las siguientes reglas universales de nomenclatura de proyectos: no utilices caracteres especiales (como acentos, eñes, diéresis o símbolos como ¿, ?, !, @, #, $), prescinde de los espacios en blanco y utiliza únicamente caracteres alfanuméricos en formato Snake Case (palabras en minúsculas separadas por guiones bajos) o Pascal Case (palabras unidas con cada inicial en mayúscula). Para nuestro curso, definiremos el nombre como: Plataformas_2D_Retro.
💡 Peligro con los servicios de almacenamiento en la nube: Jamás guardes tu proyecto activo de GameMaker directamente dentro de carpetas sincronizadas en tiempo real por servicios como OneDrive, Google Drive, Dropbox o iCloud. Estos programas bloquean temporalmente los archivos en el disco mientras los suben a la nube. Si GameMaker intenta compilar o guardar automáticamente un archivo .yy que ha sido bloqueado por el sincronizador, el archivo quedará corrupto con 0 bytes, dañando el proyecto de forma irreversible.
Anatomía del proyecto en disco: Archivos y extensiones
Cuando haces clic en «Save» o creas el proyecto, GameMaker no genera un único archivo monolítico binario. Por el contrario, genera una estructura de carpetas jerárquica con decenas de archivos de texto plano organizados con extensiones específicas. Conocer qué significa cada archivo en tu sistema de ficheros te quitará el miedo a manipular carpetas, te facilitará realizar respaldos y te permitirá utilizar herramientas de control de versiones como Git.

Examinemos detenidamente los componentes fundamentales que GameMaker deposita en el disco duro tras la inicialización del proyecto:
| Extensión / Carpeta | Tipo de dato | Función dentro de la arquitectura de GameMaker |
|---|---|---|
| .yyp (YoYo Project) | Archivo JSON principal | Es el manifiesto del proyecto. Contiene la lista de todos los recursos registrados, su orden, configuraciones globales, plataformas de destino y referencias de carpetas. |
| .yy (Resource file) | Metadatos JSON individuales | Cada sprite, objeto, sonido o room tiene su propio archivo .yy que define sus propiedades físicas, capas, máscaras de colisión y enlaces. |
| .gml (GameMaker Language) | Código fuente en texto puro | Alberga las líneas de programación que escribes en eventos y scripts. Puede abrirse y leerse con cualquier editor de texto plano como Notepad++ o VS Code. |
| folders/ (Directorios) | Estructuras en el disco | Carpetas físicas donde se aíslan los componentes: sprites/, objects/, rooms/, scripts/, sounds/, etc. |
| .resource_order | Archivo de configuración | Almacena la disposición visual personalizada de los recursos tal como los ordenas manualmente en el Asset Browser. |
El archivo con extensión .yyp es el núcleo de todo. Si haces doble clic sobre él en tu explorador de archivos de Windows o Finder en Mac, se iniciará GameMaker cargando el proyecto correspondiente. Si este archivo se borra o se corrompe por un cierre forzado del sistema, GameMaker no sabrá qué recursos existen ni cómo ensamblarlos, aun cuando las imágenes y los scripts sigan intactos en el disco duro. Por este motivo, la disciplina de guardado y respaldo resulta imprescindible.
Organización profesional del Asset Browser
Al abrir tu proyecto recién creado, observarás en el lateral derecho de la pantalla la ventana denominada «Asset Browser» (Navegador de Recursos). Por defecto, GameMaker puede mostrar un conjunto genérico de grupos o dejar el árbol prácticamente limpio con una única habitación de prueba llamada comúnmente 'Room1'. El Asset Browser es una representación lógica, no una copia idéntica del disco duro: puedes mover elementos dentro de carpetas del Asset Browser sin que se rompan las rutas físicas de los archivos, ya que el motor las indexa internamente mediante identificadores únicos universales (UUID).
Para evitar el desorden que sobreviene cuando un proyecto supera los cincuenta o cien recursos, implementaremos una convención de nomenclatura basada en prefijos estándar y una estructura de carpetas numeradas. Las carpetas numeradas obligan al motor a mostrar las categorías en un orden lógico secuencial, independientemente de si el explorador clasifica por orden alfabético estricto.
Procede a crear la siguiente estructura de carpetas (o grupos) en tu Asset Browser. Para crear una carpeta, haz clic derecho sobre el espacio vacío del Asset Browser y selecciona «Create Group» (o pulsa la tecla F2 para renombrar una existente):
| Nombre de Carpeta | Prefijo obligatorio | Contenido y responsabilidad técnica |
|---|---|---|
| 01_Sprites | spr_ | Imágenes estáticas, tiras de animación, texturas de personajes, enemigos y objetos interactivos. |
| 02_Tilesets | ts_ | Patrones de mosaicos y gráficos modulares para la construcción eficiente de escenarios y suelos. |
| 03_Objects | obj_ | Entidades interactivas con lógica, físicas, lectura de teclado y eventos programados en GML. |
| 04_Rooms | rm_ | Niveles, pantallas de inicio, menús, interfaces de Game Over y salas de prueba. |
| 05_Scripts | scr_ | Funciones globales reutilizables, librerías matemáticas, algoritmos auxiliares y rutinas compartidas. |
| 06_Sounds | snd_ | Efectos sonoros cortos (SFX) para saltos, golpes y monedas, así como pistas de música de fondo (BGM). |
| 07_Fonts | fnt_ | Fuentes tipográficas convertidas a texturas para la renderización de marcadores, vidas y textos del HUD. |
¿Por qué es obligatorio utilizar prefijos como 'spr_', 'obj_' o 'rm_'? En GameMaker Language (GML), todos los nombres de recursos declarados en el Asset Browser se convierten automáticamente en constantes numéricas globales dentro del compilador. Si cometes el error de nombrar a tu sprite de personaje como 'jugador' y a tu objeto interactivo también como 'jugador', GameMaker entrará en conflicto crítico de identificadores (namespace collision). Al intentar ejecutar una función como instance_create_layer, el motor no sabrá si te refieres al dibujo bidimensional o a la entidad lógica, provocando que el juego se cierre inmediatamente con un mensaje de error fatal. La adopción estricta de prefijos elimina por completo esta ambigüedad: 'spr_jugador' jamás colisionará con 'obj_jugador'.
Métodos de guardado, respaldos y exportación de archivos comprimidos
El flujo de trabajo en GameMaker exige familiarizarse con tres niveles distintos de persistencia de datos: el guardado estándar incremental, la configuración de autoguardado del IDE y la exportación de archivos empaquetados tipo .yyz.
El guardado estándar se efectúa pulsando la combinación de teclas Ctrl + S (en Windows) o Cmd + S (en macOS). Cada vez que realizas esta acción, GameMaker actualiza los archivos .yy modificados y reescribe el archivo maestro .yyp. Además, en la barra superior observarás un icono de disquetes dobles etiquetado como «Save All», que fuerza la escritura de todos los recursos abiertos en pestañas del espacio de trabajo. Adquiere el hábito mecánico de pulsar Ctrl + S tras completar cualquier modificación sustancial en un evento o sprite.
No obstante, el guardado en el mismo disco local no protege contra fallos de hardware, borrados accidentales o corrupción por corte de energía eléctrica. Para realizar copias de seguridad portátiles o para entregar proyectos en entornos académicos, GameMaker dispone de un sistema de empaquetado nativo: la exportación a archivo .yyz (comprimido en formato Zip interno con verificación de integridad).
Configuración esencial de Game Options para estética retro 2D
Antes de crear sprites u objetos, es necesario configurar las opciones de renderizado del motor. Por defecto, GameMaker viene preparado para suavizar texturas tridimensionales y gráficos vectoriales de alta definición. Esto significa que aplica un filtro de interpolación bilineal que promedia los colores de los píxeles adyacentes cuando la cámara se acerca o la ventana cambia de escala.
En un videojuego con estética retro de plataformas (Pixel Art), la interpolación es el peor enemigo visual: transforma los bordes nítidos y cuadrados de los personajes en siluetas borrosas, lechosas y carentes de contraste. Debemos desactivar este postprocesamiento antes de poner en marcha cualquier elemento visual.
Para ajustar esta propiedad, busca en el panel del Asset Browser la sección de recursos del sistema o dirígete a la barra superior y haz clic en el icono de engranaje denominado «Game Options». En la ventana emergente que aparecerá en el espacio de trabajo, sigue estos pasos:
1. Selecciona la pestaña «Main» en la lista de opciones de la izquierda. Aquí observarás el campo «Game Speed» (Velocidad del juego). Asegúrate de que su valor esté fijado en 60 fotogramas por segundo (Frames Per Second). Esto garantiza que los eventos Step de nuestro juego se ejecuten exactamente 60 veces por segundo, proporcionando un movimiento fluido y una lectura de controles precisa y predecible.
2. Despliega la categoría de tu sistema operativo objetivo. En el caso de ordenadores con Windows, selecciona «Windows» dentro del grupo de plataformas y dirígete a la pestaña «Graphics». En el caso de macOS, haz clic en «macOS -> Graphics».
3. Localiza la casilla de verificación llamada «Interpolate colours between pixels» (Interpolar colores entre píxeles). Por defecto suele encontrarse activada. Haz clic sobre ella para desmarcarla por completo (Off). A partir de este instante, GameMaker empleará un algoritmo de escalado por vecino más próximo (Nearest Neighbor), preservando la pureza óptica del pixel art.
4. En esa misma pestaña de gráficos, verifica que la casilla «Start Fullscreen» se encuentre desactivada para la fase de desarrollo. Trabajar en modo ventana facilita enormemente la depuración, permitiendo observar la consola de salida y alternar entre GameMaker y la ejecución del juego sin congelar el monitor.
Comprobación del proyecto mediante el código de inicialización
Todo proyecto recién creado incluye por defecto una habitación (Room) primaria en la carpeta de rooms. Es en este espacio bidimensional donde se sitúan las instancias y donde GameMaker arranca el bucle de ejecución. Antes de finalizar la configuración de nuestro proyecto base, modificaremos el nombre de esta sala inicial para ajustarlo a nuestra nomenclatura y colocaremos un breve script de diagnóstico que confirme que la compilación funciona y que la consola de depuración responde con exactitud.
En el Asset Browser, busca el recurso llamado por defecto 'Room1'. Haz clic derecho sobre él, selecciona «Rename» (o pulsa la tecla F2) y renómbralo como 'rm_inicial'. Arrástralo con el ratón dentro de la carpeta '04_Rooms' que creamos anteriormente.
Haz doble clic sobre 'rm_inicial' para abrir el editor de salas en el espacio de trabajo. En el panel de propiedades de la habitación (Room Properties, usualmente ubicado en la parte inferior izquierda de la interfaz), haz clic sobre el botón etiquetado como «Creation Code» (Código de Creación). Este editor abre una ventana de programación cuyo código se ejecutará una única vez de manera automática al arrancar dicha sala, antes incluso de que cualquier objeto procese su primer fotograma de vida.
Escribe el siguiente bloque de código GML dentro de la ventana de Creation Code de 'rm_inicial':
// ====================================================================
// CÓDIGO DE CREACIÓN DE LA SALA INICIAL (rm_inicial)
// Archivo / Contexto: Room Creation Code de rm_inicial
// Propósito: Verificar compilación, configuración de ventana y consola
// ====================================================================
// Cambiar el título de la ventana del juego en tiempo de ejecución
window_set_caption("Plataformas 2D Retro - Versión de Desarrollo 0.1");
// Mensajes de diagnóstico en la consola de salida (Output Log)
show_debug_message("--------------------------------------------------");
show_debug_message("SISTEMA: Proyecto Plataformas_2D_Retro iniciado.");
show_debug_message("SISTEMA: Tasa de refresco objetivo: " + string(game_get_speed(gamespeed_fps)) + " FPS.");
show_debug_message("SISTEMA: Sala inicial cargada correctamente: rm_inicial");
show_debug_message("--------------------------------------------------");Analicemos con rigor lo que este fragmento de código ejecuta. La función nativa window_set_caption toma una cadena de texto (String) delimitada por comillas dobles y altera el texto mostrado en la barra de título superior de la ventana del sistema operativo cuando el juego se ejecuta. Esto te permite verificar visualmente que tu ejecutable ha cargado los datos correctos.
Posteriormente, utilizamos la función show_debug_message. Esta instrucción no imprime texto sobre la pantalla de juego para que el jugador lo lea, sino que redirige información interna hacia la ventana «Output» (Consola de salida) del propio entorno de desarrollo de GameMaker. La combinación con game_get_speed(gamespeed_fps) interroga directamente a la memoria del motor para comprobar la velocidad de ejecución fijada, concatenándola con el operador de suma tras convertir el número a texto mediante string().
Para compilar y verificar este código por primera vez, pulsa la tecla F5 en tu teclado o haz clic en el botón circular verde de reproducción («Run») situado en la esquina superior izquierda de la barra de herramientas principal. GameMaker iniciará el compilador interno de recursos. Tras unos segundos, aparecerá una ventana gris limpia con el título que indicaste y, en el panel inferior «Output» de GameMaker, podrás leer los cuatro mensajes de diagnóstico confirmando que el entorno está listo para recibir la lógica de programación del próximo módulo.
Actividades prácticas y ejercicios de consolidación
Para afianzar los conocimientos adquiridos en esta lección y dejar tu entorno de desarrollo configurado de manera definitiva para el resto del curso, realiza los siguientes tres ejercicios prácticos individuales.
Resumen
- Los proyectos en blanco (Blank) otorgan un control técnico total y evitan la sobrecarga de dependencias innecesarias que contienen las plantillas prediseñadas.
- Las rutas de almacenamiento local deben estar libres de caracteres especiales, tildes y espacios, y nunca deben situarse dentro de directorios sincronizados en tiempo real por servicios en la nube (OneDrive, Dropbox, etc.) para evitar la corrupción de datos.
- El archivo .yyp es el manifiesto maestro del proyecto en formato JSON; si se daña o se pierde, GameMaker pierde la referencia de todos los componentes del videojuego.
- El uso riguroso de prefijos estandarizados (spr_, obj_, rm_, snd_, ts_) en el Asset Browser previene la colisión de identificadores en el compilador de GML.
- Para videojuegos con arte retro pixel art, es imperativo desactivar la interpolación bilineal entre píxeles ('Interpolate colours between pixels') en Game Options y fijar la velocidad del motor a 60 FPS.
- La exportación a formato .yyz comprime e integra todo el proyecto en un único paquete seguro para realizar respaldos periódicos y transferencias entre ordenadores.
Practica lo aprendido
Ejercicio 1 · 1 punto
¿Por qué se desaconseja guardar un proyecto activo de GameMaker directamente en carpetas sincronizadas en la nube como OneDrive, Dropbox o Google Drive?
Ejercicio 2 · 1 punto
Relaciona cada elemento o concepto de la configuración inicial de GameMaker con su función o característica descrita en la lección:
- Archivo con extensión .yyp
- Prefijos como 'spr_' u 'obj_'
- Proyecto en blanco (Blank Project)
- GML Code
Ejercicio 3 · 1 punto
Ordena los pasos necesarios para crear correctamente el proyecto del curso desde la pantalla de inicio de GameMaker:
- 1Seleccionar la tarjeta de proyecto que lleva por título «Blank».
- 2Elegir «GML Code» como lenguaje predeterminado para el proyecto.
- 3Definir el nombre del proyecto («Plataformas_2D_Retro») y su ubicación en disco fuera de carpetas sincronizadas.
- 4Hacer clic en el botón «New» en la pantalla principal tras haber iniciado sesión.
Ingresa para guardar tu progreso — Ingresar