Introduction

Ultima Online, l'un des premiers MMORPG commercialement réussis, a été développé par Origin Systems Inc. en 1997. Le serveur de démo, UoDemo.exe, a été récemment reverse-engineered après 10 ans de travail intermittent. Cette analyse présente les résultats de ce projet, notamment la compréhension de l'architecture et des mécanismes du serveur.

Contexte Technique

Le serveur de démo Ultima Online a été compilé avec Microsoft Visual C++ 5.0, ciblant un dialecte C++ pré-C++98. Le processus de reverse-engineering a impliqué la désassemblage avec radare2, la déduction des noms de symboles à partir d'un port Linux expérimental du client UO 1.25.37, et la traduction manuelle de chaque fonction en C99. La hiérarchie des classes a été identifiée, notamment CEntity, CResourceEntity, CItem, CContainer, CMobile et CPlayer, avec des appels virtuels via des emplacements de tableau de méthode.

Analyse et Implications

Les résultats de la reverse-engineering ont permis de comprendre les mécanismes internes du serveur, notamment les systèmes d'écologie, de ressources et de production. Les problèmes de stabilité et de jeu ont été corrigés, et de nouvelles fonctionnalités ont été ajoutées, telles que les compétences de Méditation, de Furtivité et de Suppression de piège. Le serveur prend désormais en charge les clients allant de 1.25.30 à 5.0.9.1, avec et sans chiffrement.

Perspective

Le projet OUO est toujours en cours de développement, et les contributions sont les bienvenues. La communauté Ultima Online est invitée à partager des fichiers de sauvegarde de serveur et des définitions de ressources pour améliorer la précision du serveur. Les résultats de ce projet offrent une occasion unique de comprendre l'histoire et la conception d'Ultima Online, et pourraient inspirer de nouveaux projets de développement de serveurs de jeux.