夜雨聆风学习资料网

ARTICLE · 1313563

DOS游戏凉了二十年,一个人守着它的源码不断电

DOS游戏凉了二十年,一个人守着它的源码不断电

有一个 DOS 时代的射击游戏,正式开发只持续了四年,其后二十多年里被反复救活,最新版本今年一月才发布。它叫 C-Dogs,一款俯视角跑动射击游戏,1997 年由瑞典人 Ronny Wester 开发,前后只活跃了四年,2002 年作者把源代码全部公开,然后就没然后了。按正常剧本,这游戏该安静地躺在 abandonware 网站里养老,可现实中它每次断气,都有一只手把它捞回来。

故事的前半段,完全靠作者本人撑着。Ronny Wester 这个名字在国内没什么知名度,但他在九十年代小圈子里的名声很特殊,他不光写了 C-Dogs,1994 年还写过它的精神前作 Cyberdogs,两款游戏共享同一种像素美学,爆炸效果做得出奇地好,玩家爱它就爱在简单直接、一梭子下去满屏火光。那个年代的分享软件圈子就是这么运作的,作者把游戏挂在个人主页上供人免费下载,喜欢的人口口相传,还有人给游戏做自制战役,C-Dogs 顶峰时期攒下了一百多个玩家关卡包,这在当时是个不大不小的奇迹。C-Dogs 2001 年停更,第二年源码放出,命运从此改写。第一次复活靠的是作者本人,2002 年源码公开,等于亲手给游戏办了遗体捐赠。第二个接盘的是 Jeremy Chin 和 Lucas Martin-King 两位,他们把游戏从 DOS 搬到 SDL 图形库上,让它能在现代电脑上跑起来,这个分支流传至今,成了今天的 C-Dogs SDL。中间还冒出过 BeOS 和 Wii 的移植版,来来去去,谁也没把项目长期养下去。直到 2013 年,Cong Xu 接过了这根接力棒。

PART.02
第十三年的守墓人
GAME
ENGINE

Cong Xu 接手项目时,距离游戏诞生已经十六年,距离源码公开十一年。他不是来修几个 bug 的。此人接手后干的第一件事,是把散落多年的代码底子重新夯实,换构建系统、清老 bug、补自动化测试,仓库里 2013 年到 2014 年的提交记录几乎全是这类不起眼的地基活。翻他这些年的发布记录你会发现,这人把维护一个老游戏当成了持续十多年的个人事业,一年一个大版本雷打不动。仓库 2013 年建立,到现在四千四百多个提交,四十多位贡献者,一千零九十颗星,最近一次提交就在十月份,README 里那句维基百科链接还挂在他自己名下。今年一月发的 2.4.0 版,官方博客称这是一个很特别的版本,因为塞进了一整个新模组,而为了这个模组,他断断续续干了两年。版本说明里还特意感谢了几位新贡献者,修 bug 的、翻译的、打包的,一个都不落下,这种把每个帮忙的人写进发布说明的习惯,他从 2.0 版本就开始坚持。

在所有模组里,S3DNA 这一段是最离奇的。2024 年 2 月,他把 Ronny Wester 1994 年的前作 Cyberdogs 做成了 C-Dogs SDL 里的一个战役,官方说法是,这个功能在 issue 区躺了整整十年,从 2014 年被提出,到 2024 年落地。为了复原这个三十年前的老游戏,他先要逆向它的数据格式,再复刻它的经济系统,Cyberdogs 里玩家可以在关卡之间买卖武器,这个机制原版 C-Dogs 没有,等于为了一个老战役,给引擎加了一整套商业系统。这个 2.0 版本还有个彩蛋,他把这些新功能顺手漏给了其他模式,比如 Wolf3D 模组里原本只是摆设的加命道具,从那个版本起真的会加命了。

如果你觉得在游戏里复刻另一个游戏已经很卷了,那 Cyberdogs 只是开胃菜。他复刻的第四个 Wolf3D 系模组,是游戏史上著名的怪胎,Super 3D Noah's Ark,直译过来是超级 2D 诺亚方舟的前身 3D 版,民间更常叫它诺亚方舟版德军总部,一款 1994 年的宗教题材 Wolfenstein 3D 克隆,你在里面不拿枪,拿弹弓,不杀纳粹,喂动物。这个游戏本身在 Steam 上有售,是极少数 Steam 上能买到的宗教游戏,被评论界嘲了几十年懒汉换皮,但 Cong Xu 在博客里明确替它辩护,说在 Wolf3D 克隆里它质量算高的,而且用 2D 俯视角玩起来意外地好玩。移植过程他写了篇很长的回顾文,开头就自嘲,本以为是几个月的轻松活,旁白体,事实并非如此。

PART.03
百分之五十的时间在做动物
GAME
ENGINE

那个回顾文是理解这个项目最好的材料,我把它整个读完了。Cong Xu 在文里算了笔账,整个 S3DNA 模组项目,10% 的时间花在解析和解读游戏数据上,10% 在做精灵图,20% 在做问答系统和武器这些特色功能,10% 是为了保住理智而做的支线任务,剩下整整 50%,在做那些该死的动物。这个占比是从他两年多的工作日志里提炼出来的,每一项都有对应的提交记录和博客帖,不是随口一说。最惨的中间阶段他差点弃坑,为了保住心态专门跑去做支线,给游戏加了个彩蛋,或者干脆发布一个跟动物毫无关系的大版本,比如 2025 年 2 月那个加了高分榜的功能版,回头看其实是他逃离动物建模苦海的产物。

先说为什么动物这么费劲,原版 S3DNA 里的敌人不是人类士兵,是山羊、骆驼、鸵鸟和大象,而 C-Dogs SDL 的角色系统是为双足人形准备的,给人类角色戴帽子换发型可以,让大象直立行走不行。他的解法是搭了一条 3D 转 2D 的流水线,先用三维软件建模、绑骨骼、调动画,再渲染成像素风格的精灵图。问题是他自己承认完全不喜欢建模,也不擅长,于是每种动物都要硬着头皮做一到两个月。为了省事他什么招都用过,把现有模型拉伸变形到极限,复用无关动物的头部,把大象的鼻子加象牙归类成一种腮须。还有个技术细节能说明这活的琐碎程度,二十周年纪念版的 S3DNA 在 Steam 上卖的版本,数据格式已经变了,部分资源装在 WAD 文件里,音乐也从 IMF 换成了 OGG,这些怪癖大概率跟它后来被 ECWolf 引擎重新打包有关。好在两种格式都不难解析,他在自己的解析库 cwolfmap 里加了几个提交就搞定了,真正的时间黑洞不在这。他在文末感慨,通常给 C-Dogs SDL 加大内容包,新素材会反哺本体,新贴图新音效新帽子都能给其他战役用,但这次不行,一个科幻射击游戏什么时候才需要大象和长颈鹿呢,除非哪天专门做个动物园关卡。

这条模组路线其实有个一以贯之的逻辑,把别的经典游戏整个装进 C-Dogs 的皮里。2021 年的 1.0 版塞进了 Wolfenstein 3D 和 Spear of Destiny,注意,不是模拟,是直接读取原版游戏的关卡数据和音乐音效,然后用俯视角 2D 的方式重新呈现,等于用原版的料做了一桌新菜。3D 的墙体贴图是 64x64 像素,C-Dogs 的地砖只有 16x12,没法自动转换,全部手工重绘。Cong Xu 说这个 Wolf3D 支持从动工到发布花了两年,后来的 Spear of Destiny 任务包虽然大部分是换皮,也花了四个月。沿这条路走到头,就是花了两年半的 S3DNA,以及还在 roadmap 上排队的 Blake Stone。

PART.04
一根网线四人开黑
GAME
ENGINE

聊完模组回到本体,C-Dogs SDL 这个游戏自己长什么样。核心玩法是俯视角跑打,最多四人同屏,合作模式闯关,死斗模式互射,角色可以自定义外观和属性,武器库从小刀到火箭筒一路排开,官网说有超过一百个玩家自制战役可玩。它保留了原版那种粗粝的直接感,没有技能树没有开箱,就是走位、开枪、换弹、捡尸体上的东西,爆炸依然是系列的招牌。操作上有个老玩家津津乐道的设计,滑铲,按住方向键一抹就能贴着墙根溜过去,配合俯视角的狭窄走廊,躲子弹的手感到今天依然爽利。音效也是原汁原味, gunshot 和爆炸的采样带着 DOS 声卡特有的颗粒感,复古玩家听到会心一笑。新手也不用担心上手难度,教程战役十分钟就能摸清全部操作,难度还能随人数自动缩放。这游戏免费,itch.io 上一分钱不要,Win、Linux、macOS 全平台,itch 客户端还能自动更新。

上面这张是官方多人截图,四人同屏的合作模式,弹幕和爆炸挤在一起,是这游戏最典型的画面密度。

四人联机这块官方专门写过博客,标题叫 C-Dogs Portable LAN,一张照片配一段说明,一群人围着几台笔记本电脑,网线直接串起来,在咖啡馆里临时组局打淘汰赛。博客原文还配了张场地照,桌子中央堆着披萨盒,屏幕上是像素火光,2016 年的东西,看起来却像上个世纪的游戏杂志插图。这是这个游戏最复古也最珍贵的用法,2026 年了,你依然可以拉着三个朋友,用四台破笔记本和一根网线,坐在一起玩一款三十年前的 DOS 游戏。2020 年 5 月的 0.8 版还把 DOOM 的第一关做成了模组,作为庆祝 id Tech 引擎开源的礼物,DOOM 的共享软件版资产直接读取,你能在俯视角下重温 E1M1 的每一个拐角,标题界面甚至还做了重绘致敬。

这个项目还有个容易被忽略的侧面,它对权利链条的较真。源码虽然 2002 年就公开了,但战役和图形这些数据文件一直没跟着开放,项目方想上更多分发渠道,法律上过不去。2016 年 Cong Xu 直接写信给 Ronny Wester,请他选一个知识共享协议把数据一并放开,Ronny 爽快同意,只提醒了一句,包里不少战役是当年其他玩家投递的,不完全是他本人的作品。这封对话原文就存在仓库 doc 目录里。每一次版本更新,官网博客都会写一篇正式的发布说明,从 2013 年 7 月的第一篇算起,一百零四篇帖子排下来,就是一部完整的社区项目编年史。有些游戏公司连自己的源码都懒得存档,这里的人连三十年前的 README 都给你留着。这种存档习惯在复古计算圈是硬通货,去年还有博物馆项目专门收录 DOS 时代的分享软件名录,能拿出完整授权链和原始文档的,全是像 C-Dogs 这样被社区认真保管过的项目。

PART.05
活过三十年的门道
GAME
ENGINE

现在回到开头的对比,Bitburner 靠两百五十个贡献者输血,越活越热闹;StarRuler2 敞开大门八年,只等来三十八个提交。C-Dogs 是第三种样子,它不靠人多,四十三个贡献者里绝大多数只是路过修个 bug,真正的核心从头到尾就 Cong Xu 一个人,接手十三年,四千多个提交。开源社区的常见剧本是,创始人烧完热情就散场,接盘侠续两版也散场,C-Dogs 前三次复活都是这个剧本,唯独第四次,接盘的人把维护做成了生活方式。这种人在开源世界里有个专门的称呼,BDFL,终身仁慈独裁者,Python 有 Guido,Linux 有 Linus,而一个 DOS 游戏的复刻有 Cong Xu,结构是一样的,一个人定方向,社区跟着修边角。

这里面的差别,我看更多是在预期,而不是能力。Cong Xu 第一次接手时写过一个未来计划帖,把想做的功能列成清单,模组支持、多平台、新战役,一条条来,不承诺时间表。十一年后回看,清单上的东西基本都做完了,还超额完成了 Noah's Ark 这种谁都没想到的支线。顺手说一句,这份清单本身就是研究开源项目治理的好样本,什么该做什么不该做,边界划得清清楚楚,比如互联网联机其实早就藏在命令行参数里,但一直没做大厅和反延迟,一个人维护的项目不敢轻易把承诺放大。这种慢,反而是老游戏续命最需要的品质,快节奏的重制团队往往三个月就烧完热情,而这种一年磨一剑的节奏,才能把一个 1997 年的游戏一路带到 2026 年。它的商业化也几乎是零,itch.io 免费下载,不收捐款,仓库里找不到任何盈利入口,Cong Xu 的动力大概只能用爱发电解释。但换个角度看,正是这种无欲无求,让项目从没做过讨好算法的决策,版本号想跳就跳,2.0 到 2.4 之间隔了两年,没人催也没人闹,社区安静得像个小村子,谁来了都能查到三十年前的户口。

PART.06
说些题外话
GAME
ENGINE

Bitburner 是社区接力的正例,两百多个志愿者把游戏养成一个平台;StarRuler2 是无人接盘的反例,代码敞开八年无人问津;C-Dogs 是第三条路,一个耐心的人,把守墓做成日常。三种命运没有优劣,但对想入坑的玩家,我各自的建议是,想学编程去玩 Bitburner,想研究设计去看 StarRuler2 的源码,想找个游戏周六下午跟朋友联机打两局,C-Dogs SDL 值得直接进收藏夹,四台笔记本一根网线是老派玩法,直接互联网联机也行,三十年的像素火光还在闪。下载也简单,itch.io 搜名字,一分钱不花,Linux 用户还能从发行版仓库直接装,Debian 官方源里就有它。

最后说一句题外话,官方 roadmap 上还排着 Blake Stone 和 Rise of the Triad 两个 Wolf3D 系模组,前者他连逆向解析的提交都写好了。守墓人不但没走,手上还有新的墓要守。三十年的老 IP,四次复活,一份不肯散场的耐心,这个系列的故事,说不定还有下文,真有新动静我再写给大家。

回首页,搜索你想要的文档

在首页搜索框输入关键词,快速定位资料

文库首页搜索指引 立即搜索

相关学习资料