Reverse-engineering the 1998 Ultima Online demo server
After a decade of dedicated effort, a developer has meticulously reverse-engineered the 1998 Ultima Online demo server, translating thousands of functions into modern C99. This incredible feat not only recreates the original experience but also fixes bugs and re-enables lost features, including UO's famed ecology system. The project resonates strongly with HN's appreciation for complex technical archeology, open-source preservation, and gaming history.
The Lowdown
A decade-long passion project culminated in the release of a fully reverse-engineered 1998 Ultima Online demo server. This ambitious undertaking involved dissecting and translating approximately 5,000 functions from the original MSVC x86 binary into portable C99, offering a faithful and enhanced recreation of the seminal MMORPG's early server logic.
- Decade-Long Endeavor: The author spent 10 years, intermittently, on reverse-engineering the
UoDemo.exe, a 1998 standalone demo that bundled a client and a Windows port of the full server code. - Methodical Reconstruction: Using tools like radare2 and C++ symbols from a Linux client port, each function was hand-translated into C99, maintaining control flow and struct layouts, and verified instruction-by-instruction.
- Bug Fixes and Enhancements: The project addressed original stability and gameplay issues, documented as fixes in the source code.
- Restoring Lost Features: Key original features, such as the spawn and decay systems, were re-enabled. Most notably, the famous but retired ecology system (predator/prey/scavenger) was reactivated, though a full resource system recreation is limited by missing data.
- Modernization and Compatibility: Added later features like Meditation, Stealth, and Remove Trap skills. The re-implementation includes a modernized account system and support for UO clients from 1.25.30 up to 5.0.9.1 (2007-03-27), requiring reverse-engineering five different encryption mechanisms.
- 64-bit Port and Preservation: The project targets a 64-bit build by default, carefully preserving original class hierarchy and memory layouts through padding.
- Community Contribution: The code and data are available on GitHub, with a public test server, and the author encourages contributions and seeks original server files (
dynamic0.mul,regions.txt, etc.) for more accurate historical preservation.
This comprehensive reverse-engineering effort provides not just a functional replica but a deep dive into the internal workings of a classic MMORPG, offering invaluable insights into its original design and evolution while inviting the community to contribute to its ongoing preservation and enhancement.