对 1998 年 Ultima Online 演示服务器进行逆向工程

对 1998 年 Ultima Online 演示服务器进行逆向工程

十年磨一剑:1998年《网络创世纪》演示服务器代码被完整逆向工程

近日,一名开发者历时十年,成功对1998年发行的《网络创世纪》(Ultima Online)演示服务器 UoDemo.exe 进行了完整逆向工程。这一成果不仅让尘封了28年的经典MMORPG服务器代码重见天日,更揭示了其内部机制与设计哲学,对游戏史研究和现代MMO开发都具有极高的参考价值。该项目已将所有近5000个函数翻译为可移植的C99代码,并发布在GitHub上。

从二进制到可运行:LLM成为完成这一“不可能任务”的关键

该项目的核心工程量巨大:开发者使用 radare2 对由Microsoft Visual C++ 5.0编译的二进制文件进行反汇编,并逐条指令比对,手动翻译成等价的C99代码。关键突破点在于:最近LLM(大语言模型)的发展,终于让完成这个看似永无止境的任务成为可能

逆向工程的结果显示,UoDemo.exe实际上是1998年9月发布的“第二次黎明”资料片附带的独立演示版,其服务器端代码直接来自当年6月2日的生产服务器。除了地图被局限在奥克罗岛(Ocllo)以及少数功能被阉割外,这几乎是一份完美重现1998年中期《网络创世纪》的服务器代码。开发者特别指出,类继承层次结构的正确还原(如 CEntity → CResourceEntity → CItem → CMobile → CPlayer)是整个工作的基石。

隐藏的宝藏:原版生态系统的“死代码”重获新生

本次逆向工程的最大发现,是代码中包含了大量看似“作废”但实为精华的功能。例如,著名游戏设计师Raph Koster所设计的、早已被官方移除的生态模拟系统(Ecology System)竟然完整存在于代码中,只是因为演示版不再调用相关函数而被“雪藏”。开发者成功重新连接了捕食者/猎物/食腐系统,现在你可以看到狼追逐兔子,或者乌鸦吃掉地上物品的生动景象。

此外,项目还修复了原演示版中存在的诸多问题,包括稳定性崩溃、数值溢出、技能增长曲线错误等。每项修复都通过标记在源代码中明确标出。开发者还增添了一些实用特性,比如在1999年2月才正式加入游戏的冥想、潜行和陷阱拆除技能,这些技能的早期代码片段已在源文件中找到。该服务器现已支持从1.25.30到5.0.9.1的几乎所有客户端版本。

结语与展望

这一项目的意义远超简单的怀旧。它为所有MMO开发者提供了一个独一无二的机会:研究一款商业成功的里程碑式游戏在25年前的服务器架构、对象模型和底层逻辑。从某种程度上说,这个被LLM“助攻”完成的逆向工程,不仅复活了一段数字历史,也为理解现代MMO的起源提供了终极的第一手资料。未来,这一开源服务器很可能成为新一代MMO模拟器生态的基石。

celebrityanime
celebrityanime
文章: 864

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注