# Porta un juego de GameMaker a un proyecto sin licencias de exportación

> Portar un juego de GameMaker significa reconstruir un proyecto que te pertenece. Las rooms pasan a escenas, los objetos a nodos y los eventos GML a callbacks de script.

- URL: https://www.summerengine.com/es/port-a-gamemaker-game
- Keyword: portar un juego de gamemaker
- Related: https://www.summerengine.com/es/porting

Portar un juego de GameMaker significa reconstruir en otro motor un proyecto que te pertenece. GML es específico de GameMaker, y los archivos de proyecto .yyp, las rooms y las definiciones de objeto no tienen importador en ningún otro sitio. Aun así la reconstrucción es mecánica, porque el modelo de GameMaker se mapea limpio a un árbol de escena.

Tu GML y tu propio arte son tuyos, así que la mayor parte de un port de GameMaker puedes moverla. Revisa aparte cualquier asset de marketplace, porque su licencia puede restringir el uso a proyectos de GameMaker.

Summer Engine te da el destino de la reconstrucción, con escenas y nodos con scripts, herramientas 2D que cubren lo que hace GameMaker y 3D disponible si el juego crece. El proyecto es tuyo, no hay royalties, y la exportación a escritorio para Steam e itch.io forma parte del motor y no de una compra aparte.

## Rooms, objetos y eventos se mapean a un árbol de escena

Una room se convierte en una escena. Un objeto se convierte en un nodo con un script, y las instancias de objeto se convierten en escenas instanciadas. El evento Create se convierte en un callback de ready. El evento Step se convierte en un callback de proceso por cuadro. El evento Draw se convierte en un callback de dibujo. Las alarmas se convierten en temporizadores. La herencia de objetos se convierte en herencia de escena o de script. Los sprites con origen se convierten en nodos sprite con un desplazamiento, y las máscaras de colisión de GameMaker en formas de colisión.

## Patrones de GML que hay que reescribir

Algunas costumbres de GML no se traducen directas. Las variables globales y la sentencia with fomentan una estructura plana que un árbol de nodos maneja de otra forma, normalmente con referencias a nodos y señales. ds_map, ds_list y ds_grid se convierten en diccionarios, arrays y arrays anidados con gestión automática de memoria, así que las llamadas manuales de destrucción desaparecen. instance_create e instance_destroy se convierten en instanciado de escenas y eliminación de nodos en cola. La persistencia de rooms y el orden de instancias necesitan manejo explicito en vez de depender de los ajustes de room.

## Pixel art, cámaras y resolución

Los proyectos 2D de GameMaker suelen definir un tamaño de room fijo y un viewport de cámara. Reproduce eso con un viewport ajustado a tu resolución base y escalado entero con filtrado nearest neighbor para el pixel art. El movimiento por subpíxel es la regresion típica: los proyectos de GameMaker a menudo redondean posiciones para mantener los píxeles alineados, y si te saltas ese paso en la reconstrucción, los sprites titilan al mover la cámara. Decide tu política de ajuste al pixel al principio en vez de parchearla objeto por objeto.

## Exportar sin licencias por plataforma

GameMaker históricamente repartió los destinos de exportación entre niveles de licencia y módulos. En Summer Engine, la exportación a escritorio para Windows y macOS forma parte del motor, y el proyecto es enteramente tuyo, sin royalties y sin reparto de ingresos. Un proyecto en GDScript también exporta una versión web para Summer Games, y consola necesita la aprobación del fabricante de la plataforma. Si tu juego de GameMaker quisiera más adelante 3D o trabajo de shaders más pesado, ese margen existe en el mismo proyecto en vez de exigir otra herramienta.

## FAQ

### Se puede importar un archivo de proyecto de GameMaker a otro motor?

No. Los proyectos .yyp de GameMaker, las rooms y las definiciones de objeto no tienen importador en otros motores, y GML no se ejecuta fuera de GameMaker. El port es una reconstrucción, pero mecánica, porque las rooms se mapean a escenas y los objetos a nodos con scripts.

### Como se traducen los eventos de GameMaker?

Create se convierte en un callback de ready, Step en un callback de proceso por cuadro, Draw en un callback de dibujo, y las alarmas en temporizadores. La herencia de objetos se convierte en herencia de escena o de script, y las máscaras de colisión en formas de colisión.

### Que sustituye a ds_map, ds_list y ds_grid?

Diccionarios, arrays y arrays anidados, todos con gestión automática de memoria. Las llamadas manuales de destrucción que exigen las estructuras de datos de GameMaker ya no hacen falta, lo que elimina toda una clase de fugas del código reconstruido.

### Por que titila mi pixel art después del port?

Por el movimiento en subpíxel. Los proyectos de GameMaker suelen redondear posiciones para que los sprites queden alineados a la rejilla de píxeles. Si la reconstrucción mueve sprites en posiciones fraccionarias, titilan al mover la cámara. Fija una política de ajuste al pixel para todo el proyecto desde el principio.

### Necesito licencias separadas para cada plataforma de exportación?

No. La exportación a escritorio forma parte del motor, y el proyecto es tuyo sin royalties y sin reparto de ingresos. Los juegos se escriben en C++ y GDScript, con C# también disponible en el editor de escritorio.

[Reconstruye tu juego de GameMaker](https://www.summerengine.com/es/download)

---

## Machine-readable resources

- Site index for agents: https://www.summerengine.com/llms.txt
- Full inlined content: https://www.summerengine.com/llms-full.txt
- Porting catalog: https://www.summerengine.com/llms-porting.txt
- Structured catalog: https://www.summerengine.com/agent-catalog.json
- Sitemap: https://www.summerengine.com/sitemap.xml
- Developer resources: https://www.summerengine.com/docs
- Summer API (assets from any agent or code; public per-call model prices): https://docs.summerengine.com/api