1991年发售的《文明1》至今仍有玩家。GitHub上这个项目用C#重写了全部代码,Star数378,Fork数18——数字不大,但做了一件法律上极其微妙的事。
项目负责人rajko-horvat没碰一行原版代码。原版是C语言和x86汇编,他用C#和.NET Core 8从零写起,再套一个虚拟CPU来模拟原版的汇编逻辑。最终目标:所有代码和资源都换成无版权版本,但游戏玩起来和1991年那版一模一样。
这像给一辆老爷车换引擎。外壳还是那辆福特T型车,里面每个零件都重新铸造,但发动起来声音、速度、顿挫感分毫不差。
为什么必须"合法拥有原版"才能玩
项目README里反复强调:你必须自己有一份DOS版《文明1》,把OpenCiv1的Release文件拷贝进原版目录才能运行。这不是矫情,是版权防火墙。
原版游戏的.txt文本、.pic图像、.pal调色板文件全是Microprose的版权资产,从未开源。rajko-horvat的策略是代码全换,资源暂时借用——前提是用户自己合法持有。GitHub仓库里干干净净,没有一个文件来自原版。
这种做法在开源游戏圈有先例,但风险极高。1999年的FreeCiv走了另一条路:重新设计玩法、美术、UI,结果成了《文明》的"精神续作"而非复刻。OpenCiv1的野心更大:像素级还原,但法律上完全独立。
FAQ里有个尖锐问题:"《文明7》都快出了,重做《文明1》有什么意义?"
rajko-horvat没直接回答。但项目描述里藏着线索:原版代码从未发布,至今仍受版权法保护。对一部分人来说,"能合法研究、修改、分发"本身就是意义——哪怕只是让33年前的游戏在现代系统上稳定运行,不需要DOS模拟器。
技术方案:虚拟CPU是妥协还是聪明
原版《文明1》有大量x86汇编代码,直接反编译会踩版权雷区。rajko-horvat的解法是写了一个虚拟CPU,让原版汇编指令在这个虚拟环境里执行,其他部分用C#重写。
这相当于给汇编代码造了一个"沙盒监狱"。它跑起来,但和宿主系统完全隔离,最终目标是逐步替换,直到虚拟CPU也退休。
项目依赖清单很短:.NET Core 8,部分Windows机器需要Visual C++ 2015-2019运行库。对比原版DOS游戏的配置要求,这几乎是两个时代的对话。
但"逐步替换"的进度条并不乐观。361次提交、378个Star,开发周期已经持续数年。开源项目的经典困境:热度有限,维护者精力有限,目标却极其庞大——全部资源重做,包括图形、音乐、文本。
社区规模与野心的落差
Fork数18,意味着只有18个人尝试过分支开发。对一款目标是"完全替代33年前商业游戏"的项目来说,这个数字偏低。
对比之下,FreeCiv的社区活跃得多,因为它降低了门槛:不需要拥有原版,玩法也有现代改良。OpenCiv1的"洁癖"策略——必须合法持有原版、必须像素级还原——把受众收窄到了硬核复古玩家和法律谨慎派开发者。
FAQ里有句话值得玩味:"重写代码执行相同功能,但代码完全不同,MIT协议。"这是整个项目的法律基石,也是它存在的理由。不是怀旧,是证明一种可能性:即使版权锁死,技术社区仍能创造出"功能等价但法律干净"的替代品。
《文明》系列本身就在讲技术迭代如何改写文明进程。这个项目的讽刺之处在于:它用33年后的技术,去复活33年前的游戏,而法律框架还停留在1991年的逻辑里。
如果rajko-horvat团队最终完成了全部资源替换,OpenCiv1会成为什么?一个完全免费的《文明1》,还是证明了"清洁室复刻"(clean-room implementation)在游戏领域的可行性?
热门跟贴