Introducción al Desarrollo de Videojuegos con GameMaker · Módulo 12: Depuración, optimización, exportación y publicación.

Exportación del ejecutable para Windows y otros sistemas

Clase 59 de 60 · 50 min

También disponible en: EN

Introducción a la exportación de videojuegos en GameMaker

A lo largo de los módulos anteriores, has construido un videojuego de plataformas bidimensional completo: programaste el movimiento y la física del personaje, diseñaste enemigos con inteligencia artificial básica, estructuraste niveles mediante tilemaps y cámaras dinámicas, compusiste interfaces de usuario con el evento Draw GUI y puliste la experiencia integrando efectos de sonido y partículas. Sin embargo, hasta este momento, el proyecto solo ha cobrado vida dentro del entorno de desarrollo de GameMaker al pulsar el botón de reproducción (F5). Este proceso ejecuta el juego en una sesión de prueba volátil que depende íntegramente del motor y de sus herramientas de depuración.

El paso definitivo en el flujo de trabajo de cualquier desarrollador es transformar ese conjunto disperso de scripts, sprites, sonidos y rooms en un producto final independiente: un archivo ejecutable que cualquier usuario pueda descargar, instalar y disfrutar en su propio ordenador sin necesidad de tener GameMaker instalado. En esta lección aprenderás a navegar el sistema de opciones globales del juego (Game Options), a preparar y optimizar los recursos visuales como iconos y pantallas de carga, a seleccionar las configuraciones de compilación adecuadas para Windows (tanto en versión portable como en instalador empaquetado) y a comprender las particularidades técnicas de la exportación hacia otros ecosistemas como macOS, Linux y GX.games.

Licencias y plataformas disponibles en GameMaker

Antes de iniciar el proceso técnico de compilación, es indispensable comprender el modelo de licencias y exportaciones de GameMaker. Históricamente, GameMaker ha contado con diversos esquemas de licenciamiento; en su versión moderna, ofrece un modelo escalonado muy claro. Con la versión gratuita de GameMaker, cualquier desarrollador puede aprender, crear proyectos sin límites de recursos y compilar directamente hacia la plataforma GX.games, lo que permite publicar juegos web de forma gratuita y accesible para millones de usuarios a través del navegador Opera GX.

Para generar ejecutables nativos de escritorio destinados a Windows, macOS o Linux orientados a su venta o distribución en plataformas comerciales como Steam, itch.io o GOG, GameMaker requiere una licencia comercial (que puede adquirirse mediante un pago único para creadores de escritorio o mediante niveles de suscripción según las políticas vigentes de YoYo Games/Opera). Si intentas pulsar el botón de crear ejecutable utilizando una cuenta que solo dispone del plan gratuito para exportaciones de escritorio restringidas, el entorno te advertirá de la necesidad de actualizar tu licencia o te limitará a la exportación a GX.games. Conocer qué destino cubre tu cuenta evita confusiones habituales durante la recta final del proyecto.

Destino de exportaciónFormato finalRequisitos de licenciaUso recomendado
GX.gamesWebAssembly / Opera GX WebGratuita (Free Tier)Game jams, portafolios web, prototipos rápidos y retroalimentación comunitaria.
Windows (VM / YYC)Instalador NSIS (.exe) / Comprimido (.zip)Licencia comercial / DesktopDistribución comercial en Steam, itch.io, venta directa y torneos locales.
macOSPaquete de aplicación (.app) / Disco (.dmg)Licencia comercial / Desktop (Requiere Mac)Distribución para usuarios de computadoras Apple y Mac App Store.
Ubuntu LinuxArchivo empaquetado (.tar.gz / AppImage)Licencia comercial / DesktopEcosistemas de código abierto y compatibilidad nativa con SteamOS / Steam Deck.
Móviles y ConsolasAPK/AAB (Android), IPA (iOS), paquetes específicosSuscripciones Enterprise / ConsoleTiendas móviles (Google Play, App Store) y consolas (Switch, PlayStation, Xbox).

💡 Nota importante sobre licencias: Las políticas de licenciamiento de GameMaker han evolucionado. Para uso no comercial en escritorio, verifica siempre los términos actuales dentro de tu panel de usuario en opera.com / gamemaker.io. Todo el conocimiento de optimización, iconos, carpetas y opciones generales aprendido en esta clase es 100 % idéntico e indispensable, independientemente de la licencia activa en tu cuenta.

Configuración de Game Options para Windows

El corazón de la preparación técnica de un juego reside en la ventana de Game Options (Opciones del juego), accesible haciendo doble clic en el recurso 'Game Options' en el panel del Asset Browser o mediante el menú contextual superior. Al desplegar esta sección, encontrarás pestañas específicas para cada plataforma soportada. La pestaña correspondiente a Windows alberga los parámetros esenciales que Windows Explorer y el sistema operativo leerán para identificar tu juego.

En la subsección General de Windows, debes establecer con precisión los metadatos de tu obra. El 'Display Name' define el nombre visible que aparecerá en la barra de título de la ventana y en el Administrador de tareas de Windows. A su vez, los campos de versión (Major, Minor, Release, Build) te permiten llevar un control numérico estricto de tus actualizaciones (por ejemplo, comenzar en 1.0.0.0 para el lanzamiento inicial y pasar a 1.0.1.0 tras una corrección menor). Completar de manera profesional los campos 'Company', 'Product' y 'Copyright' asegura que las propiedades del archivo .exe muestren la autoría de tu estudio independiente y no valores genéricos predeterminados.

El apartado gráfico dentro de las opciones de Windows reviste una trascendencia crítica cuando trabajamos con estética retro y pixel art. En la sección 'Graphics', encontramos dos ajustes vitales: 'Display cursor' (que determina si el puntero estándar del ratón se muestra sobre la ventana) y 'Interpolate colors between pixels'. Si tu juego emplea gráficos pixelados y esta última casilla está activada, el motor aplicará un filtro bilineal suavizado que difuminará los bordes nítidos de tus sprites retro, arruinando la estética visual. Para nuestro juego de plataformas, es imperativo desactivar la casilla 'Interpolate colors between pixels' para preservar píxeles nítidos y definidos.

Asimismo, la política de escalado ('Scaling') define cómo se comporta la imagen si el jugador redimensiona la ventana o activa la pantalla completa: la opción 'Keep aspect ratio' mantendrá intacta la relación de aspecto original (agregando bandas negras a los lados si el monitor del usuario posee proporciones distintas a la vista del juego), evitando que el personaje y el escenario se estiren o deformen de forma artificial.

Diagrama esquemático que representa el flujo de compilación en GameMaker, desde los recursos originales hasta la obtención del instalador ejecutable y el paquete zip portable.
Figura 1: Flujo de trabajo desde el proyecto fuente hacia los paquetes finales de distribución en Windows. · Imagen generada con IA

Configuración de iconos y pantalla de presentación

Un detalle visual que separa a un prototipo amateur de una entrega con acabado profesional es la personalización del icono del programa (.ico). Por defecto, GameMaker utiliza su emblemático logotipo tridimensional. Para reemplazarlo, dirígete a Game Options > Windows > Images. Aquí se solicita un archivo de icono (.ico) que debe contener internamente múltiples resoluciones cuadradas (típicamente 16x16, 32x32, 48x48, 64x64 y 256x256 píxeles). Si proporcionas un archivo que solo incluye una resolución pequeña, Windows estirará ese gráfico cuando el usuario configure la vista de carpetas en 'Iconos muy grandes', viéndose borroso.

Para generar un archivo .ico válido a partir de un sprite de tu juego (por ejemplo, el rostro del héroe o una gema dorada), puedes exportar la ilustración como un archivo PNG cuadrado de 256x256 píxeles desde tu software de dibujo favorito o desde el editor interno de sprites de GameMaker, y luego utilizar un convertidor de iconos confiable que empaquete todas las subresoluciones estándar dentro del contenedor .ico. Adicionalmente, puedes configurar la imagen de bienvenida o 'Splash Screen', visible fugazmente durante los segundos en que el motor inicializa la memoria del juego al ejecutarse en máquinas con discos duros mecánicos.

Preparación del proyecto: Limpieza y verificación

Antes de pulsar el botón definitivo de exportación, es una buena práctica de ingeniería de software limpiar la memoria intermedia de compilación. Durante las decenas de horas de desarrollo y pruebas continuas, GameMaker almacena texturas procesadas, fragmentos de código compilado y metadatos en un caché temporal local. Ocasionalmente, este caché puede retener versiones antiguas de sprites o configuraciones obsoletas que provoquen inconsistencias en la versión final.

En la barra de herramientas superior de GameMaker, localiza el icono con forma de escoba ('Clean Cache') o presiona la combinación de teclas Ctrl + F7 (Cmd + F7 en Mac). Esta acción elimina todos los archivos compilados temporales obligando al compilador a reconstruir el proyecto íntegramente desde cero en la siguiente compilación. Asimismo, antes de publicar, debes asegurarte de que tu código no contenga comandos de depuración activos que permitan al usuario final activar invulnerabilidad, saltarse niveles o saturar la salida de la consola con mensajes innecesarios.

// ======================================================================
// Script: scr_debug_config.gml o Evento Create de obj_game_manager
// ======================================================================
// Es fundamental estructurar los atajos de depuración mediante una
// macro o variable booleana centralizada para anularlos en la versión final.

#macro MODO_DESARROLLO false

// En el evento Step de tu gestor de juego (obj_game_manager):
if (MODO_DESARROLLO)
{
    // Atajo para avanzar de nivel instantáneamente durante pruebas
    if (keyboard_check_pressed(vk_f2))
    {
        if (room_exists(room_next(room)))
        {
            room_goto_next();
        }
    }
    
    // Atajo para restaurar salud al máximo
    if (keyboard_check_pressed(vk_f3))
    {
        if (instance_exists(obj_player))
        {
            obj_player.hp = obj_player.hp_max;
            show_debug_message("Salud restaurada por comando de depuración.");
        }
    }
}

Al establecer la constante macro 'MODO_DESARROLLO' en 'false', el compilador optimizará el bloque condicional, garantizando que los usuarios que jueguen la versión exportada no puedan saltarse zonas ni acceder a funciones reservadas para el equipo de desarrollo.

Opciones de empaquetado para Windows: Instalador vs Archivo Portable

Al compilar para Windows, GameMaker ofrece dos modalidades de empaquetado bien diferenciadas al presionar el botón 'Create Executable': el instalador estándar basado en NSIS (Nullsoft Scriptable Install System) y el paquete comprimido (.zip). La elección entre uno y otro depende directamente del canal de distribución elegido y de la comodidad del destinatario.

El instalador (archivo ejecutable único que suele llamarse 'MiJuego_Installer.exe') se encarga de guiar al usuario por un asistente de bienvenida clásico: solicita la ruta de instalación (por defecto dentro de Archivos de Programa o Program Files), crea accesos directos en el Escritorio y en el Menú Inicio, y genera una entrada formal en el panel de desinstalación de Windows. Esta opción es la idónea si vas a compartir tu juego en tu propio sitio web o enviárselo a personas con poca experiencia técnica que esperan el comportamiento convencional de cualquier programa comercial para computadoras personales.

Por otro lado, la opción de empaquetado comprimido (.zip) genera un archivo que contiene el ejecutable directo del juego (por ejemplo, 'PlataformasRetro.exe') acompañado de su archivo de datos binarios ('data.win') y las bibliotecas dinámicas (.dll) indispensables para la reproducción de audio y la comunicación con DirectX. Esta modalidad 'portable' o autocontenida es la predilecta de portales independientes como itch.io o Game Jolt, y de eventos como las game jams. El jugador únicamente debe descomprimir el archivo ZIP en cualquier carpeta o memoria USB y hacer doble clic sobre el .exe para jugar de inmediato, sin tocar el registro de Windows ni requerir permisos administrativos.

Proceso paso a paso: Creando el ejecutable para Windows

A continuación, se detalla la secuencia operativa paso a paso para compilar de forma exitosa el proyecto final de plataformas retro:

1. Verificación del destino en el Target Manager: En la esquina superior derecha del espacio de trabajo de GameMaker, haz clic en el icono de diana (Target Manager). Asegúrate de que en la columna 'Platform' esté seleccionado 'Windows'. En la columna 'Output', puedes elegir entre 'VM' (Máquina Virtual) o 'YYC' (YoYo Compiler, si cuentas con el compilador C++ configurado en tu equipo). Para la inmensa mayoría de videojuegos 2D de alcance formativo e independiente, VM ofrece una velocidad de compilación excelente y un rendimiento sólido y estable.

2. Limpieza del proyecto: Presiona el botón de la escoba ('Clean') en la barra superior para garantizar que no persistan restos temporales en el búfer de compilación.

3. Creación del ejecutable: En la barra superior, haz clic en el botón con forma de paquete/caja de cartón ('Create Executable') o pulsa la combinación de teclas Ctrl + F8.

4. Selección del formato: Se abrirá una ventana emergente del sistema que te preguntará si deseas generar un 'Package as Installer' (Instalador NSIS) o un 'Package as Zip' (Paquete comprimido portable). Selecciona la opción que se ajuste a tus necesidades de distribución.

5. Ubicación y guardado: Elige una carpeta clara en tu disco duro (se recomienda encarecidamente crear una carpeta fuera del directorio de GameMaker, por ejemplo, en una carpeta dedicada llamada 'Builds_Lanzamiento') y asigna un nombre formal al archivo sin caracteres especiales, tildes ni espacios problemáticos (ejemplo: 'Aventura_Plataformas_v1_0.zip').

6. Monitoreo de la ventana de salida: Observa la pestaña 'Compile' en la parte inferior del entorno de desarrollo. GameMaker comenzará a compilar los scripts de GML, procesará los atlas de texturas (Texture Pages), comprimirá los efectos de sonido y la música, y ensamblará el paquete final. Cuando la consola imprima el mensaje 'BUILD SUCCESSFUL', el explorador de archivos se abrirá automáticamente mostrándote el paquete listo.

Exportación para otros sistemas: macOS, Linux y GX.games

La arquitectura multiplataforma de GameMaker permite llevar el mismo código y proyecto hacia otros sistemas operativos, aunque cada uno presenta exigencias técnicas particulares que es indispensable tener en cuenta al planificar el despliegue:

Exportación a GX.games: Esta es la vía más rápida y accesible, plenamente disponible con la cuenta gratuita. Al seleccionar GX.games en el Target Manager y pulsar 'Create Executable', GameMaker compila el juego a WebAssembly y HTML5 optimizado, y lo sube directamente a tu panel de control de Opera GX. Desde allí, puedes definir si el juego es privado (solo accesible mediante un enlace secreto) o público para todo el mundo. Es la plataforma ideal para que amigos y evaluadores prueben tu juego de inmediato desde su navegador web sin descargar ningún ejecutable.

Exportación a macOS: Debido a las estrictas políticas de seguridad del ecosistema Apple, para generar un ejecutable funcional de macOS (.app o .dmg) es obligatorio contar con un equipo Mac físico en tu red local configurado como servidor de compilación remoto (o ejecutar GameMaker directamente desde macOS), además de disponer de un certificado de desarrollador de Apple Developer si planeas evitar los bloqueos de seguridad del sistema Gatekeeper.

Exportación a Ubuntu Linux: GameMaker permite generar binarios compatibles con distribuciones Linux basadas en Debian/Ubuntu. Para lograrlo desde un equipo con Windows, se configura una conexión SSH con una máquina virtual o física que ejecute Ubuntu, donde GameMaker transfiere el código y ejecuta el empaquetado nativo. Este procedimiento ha cobrado enorme relevancia en los últimos años debido a la popularidad de la consola portátil Steam Deck, la cual corre bajo SteamOS (un sistema derivado de Arch Linux que se beneficia enormemente de compilaciones nativas o de la capa de compatibilidad Proton).

PlataformaFormato resultanteRequisitos de hardware/redVentaja principal
Windows.exe / .zipPC estándar con Windows 10/11Mayor cuota de mercado en videojuegos de escritorio.
GX.gamesWebAssembly / Cloud linkConexión a Internet y cuenta OperaAcceso universal instantáneo sin requerir instalación previa.
macOS.dmg / .pkgComputadora Apple Mac + XcodeAcceso a la base de usuarios de Mac y fidelidad técnica en dicho SO.
Ubuntu / Linux.tar.gz / AppImageInstancia física o virtual de UbuntuCompatibilidad nativa con sistemas abiertos y consolas tipo Steam Deck.

Manejo de rutas de guardado y archivos tras la exportación

Un error recurrente entre desarrolladores principiantes al probar su primer ejecutable exportado surge con el sistema de guardado de partidas. Durante las pruebas en el entorno de desarrollo, GameMaker permite leer y escribir archivos en el directorio local del proyecto con cierta flexibilidad. No obstante, al exportar un instalador e instalar el juego dentro de 'C:\Program Files\MiJuego\', el sistema operativo Windows prohíbe terminantemente que cualquier programa sin privilegios elevados de administrador modifique o cree archivos dentro de esa carpeta.

Para evitar que el juego falle silenciosamente al intentar salvar la partida (impidiendo guardar el progreso del jugador o la puntuación récord), GameMaker aplica automáticamente un sistema seguro de aislamiento conocido como 'Sandboxing'. Toda operación de escritura hacia archivos de texto o archivos de configuración (.ini) se redirige automáticamente al directorio de datos de aplicación local del usuario (AppData\Local\NombreDelJuego en Windows).

// ======================================================================
// Script: scr_guardar_progreso.gml
// ======================================================================
// Demostración de guardado seguro compatible con el Sandboxing de Windows.
// El archivo 'salvado_plataformas.ini' se ubicará de forma segura en:
// %LOCALAPPDATA%\NombreDeTuJuego\

function scr_guardar_progreso(_monedas, _nivel_maximo)
{
    // Abrir (o crear si no existe) el archivo de configuración
    ini_open("salvado_plataformas.ini");
    
    // Escribir los datos numéricos en la sección [Progreso]
    ini_write_real("Progreso", "MonedasTotales", _monedas);
    ini_write_real("Progreso", "NivelDesbloqueado", _nivel_maximo);
    
    // Cerrar el archivo obligatoriamente para volcar el búfer a disco físico
    ini_close();
    
    show_debug_message("Partida guardada exitosamente en el sandbox local.");
}

// Para verificar la ruta absoluta donde opera el Sandbox en tiempo de ejecución:
var _ruta_guardado = game_save_id;
show_debug_message("Directorio de guardado: " + string(_ruta_guardado));

💡 Regla de oro del Sandboxing: Utiliza siempre nombres de archivo relativos directos (como 'datos.ini' o 'partida.json'). Nunca intentes codificar rutas fijas como 'C:\Partidas\guardar.ini', ya que fallarán en cualquier equipo que tenga una estructura de carpetas o permisos de seguridad estándar.

Pruebas de calidad del ejecutable (Smoke Testing)

El hecho de que el compilador finalice con la leyenda 'BUILD SUCCESSFUL' no significa que el trabajo de desarrollo haya concluido. Antes de compartir el enlace de descarga con el público, es obligatorio someter el ejecutable empaquetado a una ronda de pruebas de verificación rápida o 'Smoke Test'. Este procedimiento consiste en probar el archivo final en condiciones reales de usuario.

En primer lugar, extrae el archivo ZIP en una carpeta completamente distinta a tu entorno de trabajo (o transfiérelo mediante una memoria USB a otra computadora que jamás haya tenido GameMaker instalado). Al ejecutar el juego en un equipo 'limpio', podrás comprobar si faltan componentes redistribuibles de DirectX o Visual C++, verificarás si el sonido se reproduce correctamente en diferentes tarjetas de audio y comprobarás que el juego no intente buscar archivos absolutos que solo existían en tu ordenador de desarrollo.

Ejercicios prácticos

Consolida las competencias adquiridas en esta clase completando los tres ejercicios siguientes en tu proyecto de plataformas:

Resumen

  • El ejecutable independiente es el resultado de transformar el proyecto fuente y sus recursos en un binario ejecutable que no requiere la presencia de GameMaker para funcionar.
  • GameMaker distingue entre licencias gratuitas (enfocadas en aprendizaje y publicación en GX.games) y licencias comerciales de escritorio requeridas para exportar ejecutables nativos (.exe, .app, Linux).
  • En la configuración de Game Options para Windows, es crucial desactivar 'Interpolate colors between pixels' para salvaguardar la pureza visual del arte pixelado (pixel art) y utilizar 'Keep aspect ratio' para evitar deformaciones en pantallas anchas.
  • La exportación para Windows puede realizarse en dos formatos: Instalador NSIS (asistente formal de instalación en disco) y Paquete ZIP Portable (carpeta autocontenida idónea para itch.io y portafolios rápidos).
  • El sistema de Sandboxing de GameMaker redirige automáticamente las escrituras a la carpeta AppData\Local del usuario, asegurando que las partidas guardadas no fallen por falta de permisos administrativos en Windows.
  • Antes de publicar cualquier build comercial, es indispensable ejecutar un 'Smoke Test' o prueba de verificación en una computadora limpia para comprobar resolución, periféricos, audio y estabilidad general.

Practica lo aprendido

Ejercicio 1 · 1 punto

Al configurar un videojuego con estética retro o pixel art en las opciones de Windows (Game Options > Windows > Graphics), ¿cuál de los siguientes ajustes es imperativo desactivar para evitar que los bordes de los sprites se difuminen por un filtro bilineal?

Practicas sin cuenta: no se guarda nada. Regístrate para guardar tu progreso.

Ejercicio 2 · 1 punto

La combinación de teclas Ctrl + F7 (o Cmd + F7 en Mac), o hacer clic en el icono con forma de escoba ('Clean Cache'), elimina los archivos compilados temporales y fuerza al motor a reconstruir el proyecto desde cero en la siguiente compilación.

Practicas sin cuenta: no se guarda nada. Regístrate para guardar tu progreso.

Ejercicio 3 · 1 punto

Relaciona cada concepto o parámetro de exportación en GameMaker con su descripción técnica correspondiente:

  • Display Name
  • Keep aspect ratio
  • GX.games
  • Archivo .ico
Practicas sin cuenta: no se guarda nada. Regístrate para guardar tu progreso.

Ingresa para guardar tu progreso — Ingresar