Projet de restauration de Emperor: Battle for Dune
Qu’est-ce que Emperor: Battle for Dune ?
- Un jeu de stratégie en temps réel créé en 2001 par Westwood Studios
- La suite de Dune 2000, avec des graphismes 3D, une UX améliorée et une excellente bande-son
- Aujourd’hui, il est largement tombé dans l’oubli
Problèmes
- Ne prend pas en charge les hautes résolutions sur les systèmes modernes
- En multijoueur, la vitesse du jeu devient trop élevée, le rendant injouable
- Westwood Online (WOL) ne fonctionne plus, rendant le multijoueur impossible en dehors du LAN
- Impossible de jouer au mode campagne en coopération
- Le programme d’installation est corrompu
- Les effets visuels se dégradent à cause d’un taux d’images élevé
Méthode de résolution
- Écriture d’un programme remplaçant
Emperor.exe pour piloter Game.exe
- Injection d’une DLL pour appliquer les correctifs
Injection des correctifs
- Injection de code dans
Game.exe à l’aide de l’astuce CreateRemoteThread et LoadLibrary
- Modification des fonctions existantes avec la bibliothèque
detours
Correctifs graphiques
Fenêtre en haute résolution
- Utilisation du correctif
LegacyD3DResolutionHack de UCyborg pour résoudre les problèmes de résolution
- Ajout de bandes noires pour conserver le format 4:3
Limitation du taux d’images
- Correctif de la méthode
IDirect3DDevice7::EndScene pour limiter les FPS à 60
Correctifs réseau
- Restauration des fonctionnalités multijoueur via le mode WOL
- Interception de
winsock pour faire transiter toutes les communications via une unique connexion client-serveur
Écriture d’un serveur IRC
- Implémentation d’un serveur IRC basique pour remplacer le serveur maître WOL
Packaging
Remplacement du programme d’installation
- Le programme d’installation d’origine étant corrompu, écriture d’un nouvel outil d’installation
- Application du correctif v1.09
Composants Internet partagés de Westwood Online
- Enregistrement de
WOLAPI.DLL comme bibliothèque de classes COM pour restaurer les fonctionnalités WOL
Interface du lanceur
- Création d’une interface de lanceur basique permettant d’ajuster quelques paramètres simples
Conclusion
- L’objectif a été atteint : Emperor: Battle for Dune peut désormais fonctionner correctement sur des systèmes modernes
- Les fonctionnalités multijoueur ont été restaurées, y compris le mode campagne coopératif
Résumé de GN⁺
- Ce projet constitue un important travail de préservation culturelle, en permettant de rejouer à un ancien jeu sur des systèmes modernes
- Il relève des défis techniques intéressants, notamment dans la résolution des problèmes graphiques et réseau
- Parmi les projets offrant des fonctionnalités similaires, on peut citer des wrappers DirectX comme dxwrapper
1 commentaires
Commentaires sur Hacker News
Emperor: Battle for Dune peut être téléchargé sur archive.org
Ce jeu a une grande importance dans le genre RTS
Westwood Online (WOL) ne fonctionne plus
Partage une expérience de patch du code réseau de Tiberian Sun il y a 10 ans
Donne l’impression que l’auteur est une personne amusante et intelligente
Suggère une possible intégration avec CnCNet
Réaction à l’expression « modem 28.8 BPS »
Réaction à la formule souvent vue dans les billets de blog : « je ne suis pas un reverse engineer expérimenté »
Remercie pour cet article très intéressant et approfondi
Exprime sa passion pour le design d’interface