Projeto de restauração de Emperor: Battle for Dune
O que é Emperor: Battle for Dune?
- Jogo de estratégia em tempo real criado pela Westwood Studios em 2001
- Sequência de Dune 2000, com gráficos 3D, UX aprimorada e uma excelente trilha sonora
- Atualmente, não é muito conhecido
Problemas
- Não oferece suporte a altas resoluções em sistemas modernos
- No modo multijogador, a velocidade do jogo fica rápida demais, tornando-o impossível de jogar
- Como o Westwood Online (WOL) não funciona, o multijogador fora da LAN é impossível
- Não é possível jogar o modo campanha em cooperação
- O instalador está corrompido
- Efeitos visuais quebram por causa da alta taxa de quadros
Como os problemas foram resolvidos
- Foi escrito um programa para substituir o Emperor.exe e controlar o Game.exe
- Patches foram aplicados por meio de injeção de DLL
Injeção de patch
- Código injetado no Game.exe usando o truque de
CreateRemoteThread e LoadLibrary
- Funções existentes modificadas com a biblioteca detours
Patch gráfico
Janela em alta resolução
- O problema de resolução foi resolvido com o patch LegacyD3DResolutionHack de UCyborg
- Letterboxing adicionado para manter a proporção 4:3
Limite de taxa de quadros
- O método
IDirect3DDevice7::EndScene foi corrigido para limitar o FPS a 60
Patch de rede
- As funções de multijogador foram restauradas usando o modo WOL
- O winsock foi interceptado para tunelar toda a comunicação por meio de uma única conexão cliente-servidor
Criação de um servidor IRC
- Implementação de um servidor IRC básico para substituir o servidor mestre do WOL
Empacotamento
Substituição do instalador
- Como o instalador original estava corrompido, foi criada uma nova ferramenta de instalação
- Aplicação do patch v1.09
Componente de internet compartilhado do Westwood Online
- O
WOLAPI.DLL foi registrado como uma biblioteca de classes COM para restaurar as funções do WOL
UI do launcher
- Foi criada uma UI básica de launcher para ajustar configurações simples
Conclusão
- O objetivo foi alcançado, permitindo que Emperor: Battle for Dune rode sem problemas em sistemas modernos
- As funções de multijogador foram restauradas, incluindo o modo campanha cooperativa
Resumo do GN⁺
- Este projeto é um importante trabalho de preservação cultural, permitindo que jogos antigos sejam aproveitados novamente em sistemas modernos
- Ele resolve desafios técnicos interessantes, e o processo de corrigir especialmente os problemas gráficos e de rede é impressionante
- Um projeto com funções semelhantes é o dxwrapper, um wrapper de DirectX
1 comentários
Comentários do Hacker News
É possível baixar Emperor: Battle for Dune no archive.org
Este jogo tem grande importância para o gênero RTS
Westwood Online (WOL) não funciona mais
Relato de experiência ao corrigir o código de rede de Tiberian Sun há 10 anos
Passa a impressão de que o autor é uma pessoa divertida e inteligente
Sugestão de integração com o CnCNet
Reação à expressão "modem de 28.8 BPS"
Reação à frase "não sou um engenheiro de reversão experiente", comum em posts de blog
Agradecimento pelo artigo, muito interessante e aprofundado
Expressa paixão por design de UI