openrw · rwengine/openrw
OpenRW 是《侠盗猎车手 III》(GTA3)的非官方开源重实现项目,用 C++ 编写,已移植到 Linux、macOS、Windows 及多个 BSD 变体。它重建了这款 2001 年经典 3D 动作游戏的可执行程序,但运行前必须自备原版 PC 游戏的正版拷贝,否则无法游...
这个仓库是 EA 在「经典游戏源码保护」计划下公开的《命令与征服:泰伯利亚黎明》原始程序代码,属于 1995 年那款奠定现代即时战略(RTS)基本范式的作品的官方源码存档。需要先明确它的性质:README 在「Support」一节写得很直白——仓库仅用于保存(preservation purposes only),已归档、不提供技术支持,也不接受任何 pull request、issue 或其他形式的贡献;如果希望推动代码演进,官方建议是在自己的 GitHub 账号或组织下 fork 一份继续改。因此它更像一座可查阅的「代码博物馆」,而不是一个下载下来就能编译运行的现代开源项目。
从仓库内容看,这里放的是游戏本体与配套工具链的源码,本次发布还附带了对该作 Steam Workshop 的支持(商店 appid 为 2229830,对应《Command & Conquer and The Covert Operations》)。这意味着玩家社区制作的地图与内容可以通过 Workshop 渠道分发,而源码中保留了与之相关的接口代码。对于研究老游戏如何与现代平台的内容分发机制对接的人来说,这部分是有参考意义的。
代码当前的状态必须说清楚:README 明确写道,现有源码并不能完整编译,而且不包含核心引擎库——这些核心库需要到同属 EA 开源计划的《命令与征服:红色警戒》(CnC_Red_Alert)仓库中寻找,恢复工作「需要投入一些精力」。也就是说,即使你补齐了所有外部依赖,也不等于按下编译键就能得到可执行文件;中间还涉及缺失模块的移植、工程文件的修补与链接配置的重建。
依赖缺失是第二个门槛。README 逐条列出了三类需要自行寻找替代品或重写、乃至直接删掉相关调用代码的第三方组件:DirectX 5 SDK、Greenleaf Communications Library(GCL,用于联机通信)、以及 Human Machine Interface(HMI)的 Sound Operating System(SOS,音频子系统)。这些库多为上世纪 90 年代的商业中间件,如今既无官方维护渠道,授权状态也复杂,实际处理时通常只能选择「重写一层替代实现」或「裁剪掉依赖该库的功能」两条路。
构建环境同样停留在 32 位 Windows 时代。README 的编译章节标题直接写着「Compiling (Win32 Only)」。若要尽力还原当年的构建环境,需要准备:Watcom C/C++ 10.6 用于 C/C++ 源文件,Borland Turbo Assembler(TASM 4.0)与 Microsoft Micro Assembler(MASM 6.11d)用于汇编源文件。把一个 C 与汇编混编、使用十多年前专有编译器的工程搬到今天,本身就是一次相当硬核的逆向工程练习:你需要处理编译器语法差异、段模型与调用约定、以及老式 makefile 与现代构建系统之间的鸿沟。
授权方面,仓库及其内容采用 GPL v3 许可,并附加了额外条款,具体以仓库根目录的 LICENSE.md 为准;使用前务必完整阅读,附加条款往往涉及商标与素材的使用边界。另一个常被忽略的限制是:即使你成功编译出了可执行文件,要合法游玩仍需拥有正版游戏——README 指引玩家通过 EA App 或 Steam 购买《Command & Conquer: The Ultimate Collection》。换言之,源码开放并不等于游戏本体免费。
适合谁来研究这份代码?首先是即时战略游戏的历史研究者与引擎开发者,可以从中观察 90 年代中期 RTS 的工程组织方式:单位与任务的数据组织、界面与输入处理、音频与通信模块的边界划分,以及 C 与汇编的分工。其次是希望学习「如何把一份不完整的老代码恢复到可构建状态」的实践者,这个仓库提供了真实且不轻松的样本,包括缺失库替换、跨编译器迁移与依赖考古。需要提醒的是,它不是入门级项目,也不适合作为开箱即用的学习模板:缺乏官方支持、文档有限、依赖获取困难,都会显著拉长上手周期。国内环境下,Watcom、TASM、MASM 等老工具链与 DirectX 5 SDK 的获取渠道、以及访问 GitHub 与 Steam Workshop 的网络条件都需要自行评估,建议提前准备本地镜像与离线资料。
id Software 以 GPL 许可证发布的《雷神之锤3竞技场》(Quake III Arena)源...
NBlood 是用 EDuke32 引擎技术与开发思路对 Build 引擎游戏所做的逆向工程移...