Proyecto de restauración de Emperor: Battle for Dune
¿Qué es Emperor: Battle for Dune?
- Un juego de estrategia en tiempo real creado por Westwood Studios en 2001
- Secuela de Dune 2000, destacada por sus gráficos 3D, una UX mejorada y una excelente banda sonora
- Actualmente no es muy conocido
Problemas
- No admite resoluciones altas en sistemas modernos
- En multijugador, la velocidad del juego se vuelve demasiado rápida y no se puede jugar
- Como Westwood Online (WOL) no funciona, no hay multijugador fuera de LAN
- No se puede jugar el modo campaña en cooperativo
- El instalador está dañado
- Los efectos visuales se rompen debido a las altas tasas de cuadros
Cómo se resolvieron los problemas
- Se escribió un programa que reemplaza
Emperor.exe para controlar Game.exe
- Se inyecta una DLL para aplicar parches
Inyección de parches
- Se inyecta código en
Game.exe usando el truco de CreateRemoteThread y LoadLibrary
- Se modifican funciones existentes con la librería detours
Parche gráfico
Ventana de alta resolución
- Se usa el parche LegacyD3DResolutionHack de UCyborg para resolver el problema de resolución
- Se añade letterboxing para mantener la proporción 4:3
Límite de tasa de cuadros
- Se parchea el método
IDirect3DDevice7::EndScene para limitar los FPS a 60
Parche de red
- Se restaura la funcionalidad multijugador usando el modo WOL
- Se intercepta winsock para tunelizar toda la comunicación a través de una sola conexión cliente-servidor
Escritura de un servidor IRC
- Se implementó un servidor IRC básico para reemplazar el servidor maestro de WOL
Empaquetado
Reemplazo del instalador
- Como el instalador original está dañado, se escribió una nueva herramienta de instalación
- Se aplicó el parche v1.09
Componentes compartidos de Internet de Westwood Online
- Se restaura la funcionalidad de WOL registrando
WOLAPI.DLL como una biblioteca de clases COM
UI del lanzador
- Se creó una UI básica de lanzador para ajustar configuraciones simples
Conclusión
- Se logró el objetivo de hacer que Emperor: Battle for Dune funcione sin problemas en sistemas modernos
- Se restauró la funcionalidad multijugador, incluido el modo campaña cooperativo
Resumen de GN⁺
- Este proyecto es un importante trabajo de preservación cultural que permite volver a disfrutar un juego antiguo en sistemas modernos
- Resuelve desafíos técnicos interesantes, y resulta especialmente impresionante el proceso para solucionar los problemas gráficos y de red
- Un proyecto con funciones similares es un wrapper de DirectX como dxwrapper
1 comentarios
Comentarios de Hacker News
Emperor: Battle for Dune se puede descargar desde archive.org
Este juego tiene una gran importancia dentro del género RTS
Westwood Online (WOL) ya no funciona
Comparten una experiencia de hace 10 años parcheando el código de red de Tiberian Sun
Da la impresión de que el autor es una persona divertida e inteligente
Sugieren una posible integración con CnCNet
Reacción a la expresión "módem de 28.8 BPS"
Reacción a la frase "no soy un ingeniero en reversa experimentado", que suele aparecer en publicaciones de blogs
Agradecen el artículo por ser muy interesante y profundo
Expresan pasión por el diseño de UI