HN
Today

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.

13
Score
2
Comments
#6
Highest Rank
4h
on Front Page
First Seen
May 6, 8:00 AM
Last Seen
May 6, 11:00 AM
Rank Over Time
10679

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.