# Porte um jogo do GameMaker para um projeto sem licenças de exportação

> Portar um jogo do GameMaker significa reconstruir um projeto que é seu. Rooms viram cenas, objetos viram nós, e eventos de GML viram callbacks de script.

- URL: https://www.summerengine.com/pt/port-a-gamemaker-game
- Keyword: portar um jogo do GameMaker
- Related: https://www.summerengine.com/pt/porting

Portar um jogo do GameMaker significa reconstruir em outro motor um projeto que é seu. O GML é específico do GameMaker, e arquivos de projeto .yyp, rooms e definições de objeto não têm importador em outro lugar. A reconstrução é mecânica, porém, porque o modelo do GameMaker se mapeia com clareza em uma árvore de cena.

Seu GML e sua arte são seus, então a maior parte de um port de GameMaker está liberada para mudar de casa. Verifique separadamente qualquer asset de marketplace, já que as licenças podem restringir o uso a projetos do GameMaker.

A Summer Engine é o destino da reconstrução, com cenas e nós com scripts, ferramentas 2D que cobrem o que o GameMaker faz e 3D disponível se o jogo crescer. O projeto é seu, não há royalties, e a exportação desktop para a Steam e a itch.io faz parte do motor em vez de ser uma compra separada.

## Rooms, objetos e eventos se mapeiam em uma árvore de cena

Uma room vira uma cena. Um objeto vira um nó com um script, e instâncias de objeto viram cenas instanciadas. O evento Create vira um callback de pronto. O evento Step vira um callback de processamento por quadro. O evento Draw vira um callback de desenho. Alarms viram temporizadores. Herança de objeto vira herança de cena ou de script. Sprites com origem viram nós de sprite com deslocamento, e máscaras de colisão do GameMaker viram formas de colisão.

## Padrões de GML que precisam ser reescritos

Alguns hábitos de GML não se traduzem direto. Variáveis globais e a instrução with incentivam uma estrutura plana que uma árvore de nós trata de outra forma, normalmente com referências de nó e sinais. ds_map, ds_list e ds_grid viram dicionários, arrays e arrays aninhados com gerenciamento automático de memória, então as chamadas manuais de destruição desaparecem. instance_create e instance_destroy viram instanciação de cena e remoção de nó em fila. Persistência de room e ordem de instâncias precisam de tratamento explícito em vez de depender das configurações da room.

## Pixel art, câmeras e resolução

Projetos 2D no GameMaker normalmente definem um tamanho fixo de room e uma viewport de câmera. Reproduza isso com uma viewport na sua resolução base e escala inteira com filtro nearest neighbor para pixel art. Movimento em subpixel é a regressão comum: projetos do GameMaker muitas vezes arredondam posições para manter os pixels alinhados, e se você pular essa etapa na reconstrução, os sprites tremem durante o movimento de câmera. Defina sua política de encaixe em pixel no começo em vez de corrigir objeto por objeto.

## Exportação sem licenciamento por plataforma

Historicamente o GameMaker dividia os destinos de exportação em níveis de licença e módulos. Na Summer Engine, a exportação desktop para Windows e macOS faz parte do motor, e o projeto é integralmente seu, sem royalties e sem divisão de faturamento. Um projeto GDScript também exporta um build web para o Summer Games, e console exige aprovação do dono da plataforma. Se o seu jogo do GameMaker também quisesse 3D ou trabalho mais pesado de shader mais tarde, essa folga existe no mesmo projeto em vez de exigir outra ferramenta.

## FAQ

### Um arquivo de projeto do GameMaker pode ser importado em outro motor?

Não. Projetos .yyp do GameMaker, rooms e definições de objeto não têm importador em outros motores, e GML não roda fora do GameMaker. O port é uma reconstrução, mas mecânica, já que rooms se mapeiam em cenas e objetos em nós com scripts.

### Como os eventos do GameMaker se traduzem?

Create vira um callback de pronto, Step vira um callback de processamento por quadro, Draw vira um callback de desenho, e Alarms viram temporizadores. Herança de objeto vira herança de cena ou de script, e máscaras de colisão viram formas de colisão.

### O que substituí ds_map, ds_list e ds_grid?

Dicionários, arrays e arrays aninhados, todos com gerenciamento automático de memória. As chamadas manuais de destruição que as estruturas de dados do GameMaker exigem deixam de ser necessárias, o que elimina uma classe inteira de vazamentos do código reconstruído.

### Por que minha pixel art treme depois do port?

Movimento em subpixel. Projetos do GameMaker comumente arredondam posições para que os sprites fiquem alinhados à grade de pixels. Se a reconstrução move sprites em posições fracionárias, eles tremem durante o movimento de câmera. Defina uma política de encaixe em pixel para todo o projeto desde o começo.

### Preciso de licenças separadas para cada plataforma de exportação?

Não. A exportação desktop faz parte do motor, e o projeto é seu, sem royalties e sem divisão de faturamento. Os jogos são escritos em C++ e GDScript, com C# também disponível no editor desktop.

[Reconstruir seu jogo do GameMaker](https://www.summerengine.com/pt/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