开源重制 —— 拯救失落的文化遗产

作者:小岛美奈子
知乎文章编号:131228429
创建于:2020-04-15 3:26:25
修改于:2020-04-15 6:00:57


但是很少有人知道的是,就在《决定版》发布的几个月之前,帝国时代 2 系列的开源重制,Open Age 也在 Github 上发布了自己开发了 4 年以来的第一个 Alpha 版。

UGC 与 MOD

如今一款成功的单机游戏,都离不开用户创作的成分,例如最近各种原因大火的《动物森友会》。 这些用户产生内容(UGC)不仅展现了玩家们高超的创造力,也让社区之间形成了乐于分享的气氛。而更高级的 UGC,则通常以游戏模组(MOD)的形式呈现。有些 MOD 的质量甚至完全不输给官方自己制作的 DLC。例如魔法门之英雄无敌Ⅲ:追随神迹,就是一群来自俄罗斯的铁杆发烧友和黑客所制作的 MOD。(比 steam 上官方的那个高清重制不知道高到哪里去了)关于 UGC 游戏的乐趣,可以参见游研社那期淘金者的视频

像是 Minecraft,骑马与砍杀,这样的高度自由化的游戏,更是靠着大量高质量 MOD ,才延续了今天的生命力,游玩他们最大的乐趣或许便是在网上搜寻,今天又出了什么好玩的 MOD。今天我们所熟知的《反恐精英》系列,其实最早是《半条命》的一个 MOD。而电竞中最为火爆的 MOBA 类游戏,最早只是来自《魔兽争霸 III》中的一个玩家自制地图。而 DOTA 的地图编辑器,后来又诞生了自走棋。国外还有专门的 MOD 分享网站 NEXUS MODS,steam 更是直接把社区工坊,作为其重要的组成部分。许多优秀的 MOD 作者也是用 Patreon 等网站接受粉丝们的赞助,形成了自己的热爱经济(Passion Economy)。关于更多 MOD 和 Modder 们的故事和历史,可以参见机核的这篇文章 —— 既是玩家又是开发者:Mod 们和 Modder 们

对于比较 Open 的开发商来说,现在都会设计之始就预留好这些可以给玩家们制作 UGC 的接口。例如对于极暗地牢(Darkest Dungeon)来说,制作和发布 MOD 有时候甚至只需要编辑一些字符串就可以了。官方也提供了极为详细的 MOD 制作教程

Darkest Dungeon 英雄 MOD,暮光骑士的技能配置文件和人物贴图


Darkest Dungeon 官方 Modding 指南

也正因为此,社区诞生了一大批优秀的模组,例如这位叫做 Marvin Seo 的 Modder 就制作了一批还原原著,又有自己的独特风格的 MOD,内容包括了饰品,英雄,事件五花八门。

对于每个英雄, Marvin Seo 甚至还制作了她们的背景漫画,来阐释这些角色的性格特征和设计思路。例如下面这组名为拉米娅的英雄,就是一只隐藏在美女外表下的狡猾的怪兽。

拉米娅设定漫画
这个 Mod 完美还原了 Dota 系列中的流浪剑客,甚至还能开 BKB 和锤人

但是对于一些上古游戏来说,很可能就没有那么好的待遇了。

这些游戏大多是用老旧的开发工具和语言,对现代操作系统和多平台的支持普遍非常差,代码质量参差不齐,给这些游戏别说是制作可以扩展可玩性的 MOD 了,单纯是换皮修改贴图可能都需要各种工具包的组合进行 hack。而那个时候开源还没有成为现代软件开发方式的主流,特别是游戏行业对源代码的管控非常严格,像约翰·卡马克这样凭借一己之力,让游戏行业向前迈进几个台阶的人也毕竟只是少数。当时的开方商们或许做梦也不会想到,玩家们有一天竟然会疯狂到想要自己修改游戏的代码,来增加游戏的玩法。

开源重制

去年秋天,酝酿了数年之久的 《帝国时代 2:决定版》,终于陆续在各大平台上发售。玩家们惊喜的发现本作不只是《帝国时代 2》高清重置版的高清重置,还加入了各种新的特效,酷炫的命中和爆炸效果,建筑坍塌的动画,全新的战役,甚至还有新的 4 个全新的文明,难怪有玩家在 steam 上称本作为《帝国时代 2:2》了。

奇观倒塌特效合集 https://www.zhihu.com/video/1234042442456342528

然而很少有人知道的是,就在《决定版》发布的几个月之前,《帝国时代 2》系列的开源重制,OpenAGE 也在 Github 上发布了社区埋头开发了 4 年以来的第一个 Alpha 版。

OpenAGE 在 Github 上的发布页面

什么是 OpenAGE?什么是开源重制?什么是自由软件?本文将带梳理 Github 上活跃的那些开源重制社区,畅享那个属于黑客们心目中田园牧歌般的理想世界。

OpenTTD

万恶之源 —— OpenTTD 的口述历史

要展开叙述 OpenAGE 不得不提及它的前辈 OpenTTD。OpenTTD 是豪华版交通大亨(Transport Tycoon Deluxe)的开源重置,她也是目前已知的历史最悠久,完成度最高,且依然保持活跃的开源重置企划。甚至就在这个月,为了让大家可以在居家隔离(Quarantine)期间有东西可以消磨时光,社区就连续做了两次更新。

带来了大量更新的 OpenTTD 1.10.0 版本,而且这并不是愚人节笑话!

OpenTTD 完美还原了原作的游戏体验,还加入了对跨平台,跨设备,跨语言的支持,不仅如此 OpenTTD 还增加了许多原作里不曾有过的特性,如自定义的 AI 算法,优化过的寻路算法,游戏内实时下载图像和声音资源,多人联机,IPv6 等等等等。这些使得 OpenTTD 获得了广泛的赞誉,被 PC Gamer 杂志在 2014 年评为,Top 10 经典粉丝复刻游戏之一,被视为了后续经典游戏开源复刻的标杆。甚至有中学教师希望用 OpenTTD 中的 MOD 来做工业革命,和水上飞机的历史的教学。

OpenTTD 中水上飞机的模组

官方 Wiki 的这个页面我们可以看到 OpenTTD 自诞生以来的历次更新。九层之台,起于垒土。我们不禁要问,那么这么浩大的民间工程,是因为什么样的契机,从哪里开始的呢?在 OpenTTD 的官方论坛里也不时有人有着相同的疑问。在一篇询问 OpenTTD 的历史的帖子 上,有人这么跟贴:

谁是 "Ludde"?

谁是 "Ludde",他和 OpenTTD 有什么关系?笔者按图索骥,找到了这封最早的帖子。

我确实在这里写了一篇优美的长文,但是我的 IE 浏览器刚刚崩溃了。简单来说,一个叫做 Ludde 的家伙 (就是 ScummVM 项目的作者)花了相当长的时间用 C 语言对 TTD 做了逆向工程。他现在让我发布代码。就是现在你们看到的。 —— I proudly present to you OpenTTD!

Ludde 是 Ludvig Strigeus 的昵称,在 Wikipedia 的页面上,我们发现他不仅逆向了 TTD 让一切成为可能,还是 ScummVM、μTorrent 等一系列知名开源软件的作者,甚至还是 Spotify 的核心开发者。连线杂志在一篇对 Spotify 的 CEO 的专访中,就描述了 Spotify 是怎样买下 μTorrent,并把相关的技术卖给 BitTorrent,好将 Ludde 招入麾下以帮助 Spotify 优化其在流媒体上的用户体验。

然而,因为罕见的肌肉疾病,Ludde 不得不一直坐在轮椅上。但这丝毫不能阻止他不断的挑战自己的极限,为这个世界带来更多的进步与贡献。

OpenAGE

OpenAGE 的官方网站

说完 OpenTTD 我们再回过头来看 OpenAGE。OpenAGE 企划的目标是使用诸如 C++17, OpenGL/GLSL, Python, Qt5 和 CMake 这些更为现代的技术,让人们可以在多种不同的平台上自由的游玩到原汁原味的帝国时代,但是有更好对模组和多人游戏的支持。OpenAGE 项目组设计了一个更加开放易读的配置语言 nyan 来作为对模组功能的支持,同时 OpenAGE 希望实现一个 Client/Server 架构的多人游戏架构,以支持诸入游戏大厅,天梯匹配等诸多功能。虽然已经开发了近 6 年之久,但是实际上 OpenAGE 本体的开发依然处在攻坚阶段。打开游戏后,更像是一个地图编辑器的 Demo,可以操作农民采集、盖房子,但战斗系统依然欠缺。

打开游戏后玩家需要使用控制台进入游戏

并且目前写素材转换工具包只支持 AoC1.0C 版本,从开发小组的进度报告中,我们看到目前也缺少对《决定版》的支持。

OpenAGE Converter 的进度报告

OpenAGE 模组 API

从这些进度报告中,我们可以看见想要依靠社区的力量,来完成原本一个商业公司才能完成的工程,且在缺乏文档和资料的情况下进行的开源重制绝非易事。尽管如此,我们从 OpenAGE 的代码和博客中依然可以学习到很多游戏制作的知识。例如下面这篇博文,就讨论了在 OpenAGE 里加入对装备和道具支持的可能性。

开发团队博文,OpenAGE 模组 API —— 装备系统

我们知道在 RTS 中加入对装备的支持,似乎是从《魔兽争霸》系列才有的设定,而对装备和道具的支持,也让无数的地图作者有了自己发挥和创作的空间。而事实上从这篇文章中我们可以发现到,事实上早在帝国时代中就已经有道具的设定了,虽然只有一个。聪明的读者想必也已经猜到了 —— 那就是放入修道院可以产生黄金的圣物。

在标准模式下,收集全部的圣物,效果和建造奇观一样。坚持 300 年,你可以直接获得游戏胜利。

OpenAGE 转换器

虽然 OpenAPI 给予了第三方开发者在设计和制作模组上提供了更多的可能,但是 OpenAGE 并不能很好的使用目前帝国时代中的数据文件,而下面这篇最新的开发博文,则详细阐述了开发小组是如何使用 Python 将原本游戏中的数据文件解析成 OpenAGE 更加容易处理的格式。


开发团队博文,OpenAGE 转换器,第一部分,读取数据

帝国时代系列使用 .dat 格式的二进制文件作为音频,贴图等文件的保存格式,要想从这些二进制文件中反向解析出原本的媒体文件绝非易事,开发小组在这些工作上花费了大量的时间。

一个典型的数据文件的存储格式

更多的开源复刻(Open Remake)

除了 OpenAGE 之外,还有很多受到 OpenTTD 鼓舞的人,加入到了经典游戏开源重制的阵营里。这里有一份长长的列表,其中不乏一些我们耳熟能详的童年回忆,她们包括:过山车大亨 II(OpenRCT2)红色警戒(OpenRA),和暗黑破坏神(Devilution)等等等等。


OpenRCT2 的官方网站



OpenRA 的官方网站

Open Diablo

其中《暗黑破坏神》初代的完成度就已经非常高之高,甚至有其他程序员,基于初代开源复刻的代码,编译成了 WebAssembly,直接在浏览器中打开就能玩!


《暗黑破坏神》初代的线上游玩地址:d07riv.github.io/diablo

这个特性不禁让我们想到了另一个著名的收集老旧中文 DOS 游戏的 Github Repo,参见游研社的另一篇文章 —— 互联网档案馆最近收录了几千款 DOS 游戏



但是《暗黑破坏神 II》的 Go 语言复刻的完成度,目前则依然很低,只能够完成人物移动,场景切换,打怪的功能也尚未实装。


OpenDiablo2 本地编译后的运行结果

和 OpenAGE 一样,OpenDiablo 系列同样需要处理素材的解析问题,而这些事很多黑客们前赴后继努力的结果。

OpenDiablo2 Github 上链接的一篇 2002 年介绍 Diablo2 媒体文件格式的文章

Open Unlight

除了单机游戏,一些古典的倒闭的网络游戏,也似乎开始在以开源复刻的方式延续着自己的生命力。

不同于单机游戏,玩家在网络游戏中付出的时间、金钱和感情更多,但通常网络游戏通常生命周期也更为短暂。运营商会毫不留情的切断不在盈利的项目来控制成本,而一旦这些游戏停止运营,玩家在游戏中的资产也就不复存在了,金钱买到的东西还在其次,付出的感情寄托更难以找回。

而在去年,一款名为 Unlight 的日本页游在停止营运了数年之久之后,突然宣布公开原始代码和图片素材。虽然游戏客户端使用了古典的 Ruby 服务器架构和 Flash + ActionScript3 作为客户端,依然难以阻挡核心粉丝们试图复活这款游戏的决心。



很快经过一番努力,玩家们就架起了一个私服,并且一直运营至今。


原价 200 元,500 元,1000 元的抽奖券,现在通通不要钱,点击就送

甚至玩家们还在脸书上搭建了自己的社群,并模仿着以前官方的语气,以“大小姐”和“少爷”作为对玩家的代称,来发布游戏公告。其中不仅有日常活动,征文活动,甚至还有魔改过后的游戏更新。




Open Unlight 的作者在去年在台北举行的开源软件年会 Coscup 上,详细介绍了自己是如何用短短一到两周的时间,让一款已经停运了数年之久的游戏可以运行、营运,以及如何改造和重构,让其变得容易维护的。

笔者去年在 B 站上传的演讲视频

但是除了缺少文档,代码老旧欠缺维护,Adobe Flash IDE 失传这些技术上的困难,更大的麻烦则是关于知识产权相关的法律上的盲区。正如 Open Unlight 的作者蒼時弦也在博客中所记录的那样:

不过实际上当时评估如果要继续做下去的话,绝对是花上一两年都跑不到的大工程,虽然不知道能坚持到什麽时候但至少每一个阶段都能发现有趣的东西,应该是还可以继续在努力很久。反而是关于 IP 上的问题,也就是游戏的内容本身因为并没有实际的完全开放,反而让未来改版完毕后游戏想要进入新的阶段变得非常受限⋯⋯

结语:自由软件精神与法律层面的隐患

这些开源复刻虽然开始的时间,活跃度和完成度都不尽相同,但是这些经典游戏的开源重制项目都共同遵循并实践着自由软件的精神 —— 既获取,研习,修改和分发的自由。我们从这些项目中,不仅获得了更多 Modding 的自由,而且从这些开发日志和源代码中学习到了许多宝贵的知识。

OpenAGE is a free (as in freedom) cross-platform RTS game engine that provides the mechanics of Age of Empires. —— OpenAGE 官网

看到这么多的开源复刻项目,我不禁回想起了几十年前,理查德·斯托曼在《Free as in Freedom》一书里所记载的那个 MIT 人工智能实验室与施乐打印机的故事。在那个事件中,斯托曼为了能够自己动手修复一台经常卡纸的新型打印机而和不得不与施乐公司签署一份软件保密协议。

尽管之前也有过类似的不快经历,可都不能与这次的打印机事件 相提并论。这次事件让斯托曼彻底意识到,这些一系列的事件,正悄悄地侵蚀自己所珍视的文化——那个神圣不可侵犯的“黑客”小圈子 的核心文化。他说: “我一直有个信念,那就是软件应该可以可以被分享的,但是我不太确定应该怎么去把它变成现实。我的想法还不太成熟,也不太系统,所以没有办法把它精确的表达出来,让其它人理解。经历了这些事件,我开始渐渐认识到问题的本质和它的严重性。” 打印机事件的重要意义恰在于此。正如斯托曼所言,倘若没有这次事件,他的人生也许就会落入平常,纠结着,一边开发专有软件,一边痛苦地编写没人会看到的代码。当然也不会有着如今清晰的思 路,更不会去解决别人沿未想过的各种问题。最重要的,他心中也不 会再有那份不平,推动着他去追求他的政治理想和道德信仰。 “从那日起,我决定绝不参与其中。”谈起软件保密协议和类似的 事情,斯托曼如是说。在他看来,这是一场以个人自由换取便利的交易。 “我决定绝不让第二个人为此成为像我一样的受害者。” —— Free as in Freedom,中译《若为自由故》,从一台打印机说起

游戏软件,作为可盈利的应用软件,它们的开发方式一直以来被作为公司的商业秘辛,但因为游戏行业的时效性(很少有游戏不跳票的吧?),在最后的冲刺阶段,他们的代码质量往往又是最难以得到保证的,在《暗黑 1》的复刻项目中,开发者们隐藏在历史深处的代码夹缝中,发现了很多原本计划制作但因为工期的缘故没有得以实施的灵光一闪的想法。

这些故事的类似之处在于,玩家们或许最初的动机只是希望可以在更现代的平台上运行游戏,或者可以依照自己的喜好,更好的制作游戏的 Mod。它们和盗版软件有着本质的不同,事实上你需要用于原版游戏的数据文件,才可以游玩到这些开源重制。

这些开源复刻的作品,和他们的商业孪生想比,通常都能够支持更多的语言,更多的平台和架构,更现代的设计,更好的联机体验,以及更多第三方制作 MOD 的空间。更重要的是,生产资料掌握在了玩家和社区的手中,而不在是与玩家对立的大公司,一如那个流传了很广的关于“生命虹吸”的故事。理查德·斯托曼一直是对的,给予这些商业软件以自由,似乎是通往着一个更加富足,更加平等的世界的第一步。

长远来看,让软件自由是通往富足世界的一小步;在富足世界里,人们不必辛苦工作来谋生。人们在每周10小时的法律活动、家庭咨询、机器人维修和流星观察等规定任务之外,能够自由投入到象编程这样的有趣活动中。那时,就没有必要再以编程为谋生手段了。
我们已经把整个社会要维持生产力的工作大大减少了,但是只有很少一部分转化为劳动者的闲暇,因为生产活动需要夹杂很多的非生产活动。其主要原因是官僚主义和对竞争的抗拒。自由软件会大大减少在软件生产领域的生产力流失。我们必须做这件事,为了使技术进步带来的生产力提高能够转化为人们工作的减少。 —— GNU 宣言

但与之相对的,这些开源复刻是否面临侵权,以及相关的法律问题?以目前的法律框架似乎也是不言而喻的。因为与原公司的权责不清,Open Unlight 的 HTML5 复刻已经陷入停滞。在 Devilution 的 FAQ 中,开发者也明确的表示了对此的担忧。

Q: I think that's about all, but is Devilution even legal?
A: That's a tricky question. Under the DMCA, reverse-engineering has exceptions for the purpose of documentation and interoperability. Devilution provides the necessary documentation needed to achieve the latter. However, it falls into an entirely gray area. The real question is whether or not Blizzard deems it necessary to take action.

尽管这些程序员创造出了具有巨大社会价值的公有物品(Puclic Good),但这似乎一个完全灰色的领域(Entirely Gray Area),而真正的问题在于,暴雪们觉得是否有必要采取行动。

参考资料