1 points par GN⁺ 2024-07-15 | 1 commentaires | Partager sur WhatsApp

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

 
GN⁺ 2024-07-15
Commentaires sur Hacker News
  • Emperor: Battle for Dune peut être téléchargé sur archive.org

    • Lien
    • Partage d’informations pour ceux qui veulent essayer le jeu avec le patch de wheybags
    • A aussi déterré une liste d’anciennes releases pirates
    • Surpris d’apprendre qu’il existe aussi une bande-son OST
  • Ce jeu a une grande importance dans le genre RTS

    • C’était l’un des premiers RTS typiques avec des unités paysannes qui récoltent des ressources
    • Il a pris cette forme grâce au roman original, et sinon le genre RTS aurait peut-être suivi une autre voie
  • Westwood Online (WOL) ne fonctionne plus

    • Le multijoueur n’est possible qu’en LAN
    • XWIS.net a apporté beaucoup de support après la mise hors ligne de WOL
    • Le projet FreeRA pourrait aussi aider à faire fonctionner WOL
    • Remplacer la bibliothèque WOL pourrait être relativement simple
  • Partage une expérience de patch du code réseau de Tiberian Sun il y a 10 ans

    • Plonger dans le code de quelqu’un d’autre, c’est comme avoir une connexion partagée
    • A été surpris de découvrir qu’il existait une pile séparée pour le jeu en modem
  • Donne l’impression que l’auteur est une personne amusante et intelligente

    • Les explications extensibles étaient très utiles et amusantes
    • Se demande si CS:GO a été retiré en 2023 ou rebrandé en CS2
  • Suggère une possible intégration avec CnCNet

    • Invitation à venir jouer ensemble sur CnCNet
  • Réaction à l’expression « modem 28.8 BPS »

    • « active matrix, des millions de couleurs psychédéliques »
  • Réaction à la formule souvent vue dans les billets de blog : « je ne suis pas un reverse engineer expérimenté »

    • Il a déjà accumulé suffisamment d’expérience, donc il peut avoir confiance en lui
  • Remercie pour cet article très intéressant et approfondi

    • Avait vu le jeu dans une boutique locale d’occasion, mais ne l’avait pas acheté car il n’avait joué qu’à Dune II
    • Est maintenant déterminé à l’acheter
  • Exprime sa passion pour le design d’interface

    • Cela lui rappelle un billet de blog de Steve Yegge