punchy · fishfolk/punchy
Punchy 是 fishfolk 团队使用 Rust 游戏引擎 Bevy 开发的 2.5D 横版卷轴清版动作(beat'em up)游戏;其 README 说明,灵感来自《小朋友齐打交 2》《热血物语》等横版格斗作品。仓库语言为 Rust,话题标签包含 multiplayer、wasm、web,...
这个仓库是 id Software 在 2012 年 2 月 6 日放出的《Wolfenstein 3D》原始 PC 版源码存档,由 Travis “Ash” Bradshaw 整理发布。它并不是一个重新打包、可直接双击游玩的现代复刻项目,而是把当年商业作品的工程文件按原样交给社区保存和研究。仓库根目录放置的是 DEICE.EXE 自解压安装程序,这是当年把自解压 zip 分卷塞进多张软盘的产物;执行后才会展开出 WOLFSRC 目录。安装后的 README.TXT、RELEASE.TXT、LICENCE.DOC 位于 README 子目录,仓库说明也把它们附在下方,方便不运行 16 位安装器的读者直接阅读。
从 RELEASE.TXT 的措辞看,id 对这份代码的态度相当直白:发布它主要是给用户社区“娱乐”和研究,官方不保证任何东西能顺利构建,因为老项目长期无人维护会自然腐坏。原始工程使用 Borland C++ 3.0 构建,后续编译器版本可能需要少量改动;README 又补充说该版本能在 Borland C++ 3.0/3.1 下编译,上传前曾编译通过,但请不要把问题发回 id Software。即便成功生成可执行文件,也仍然需要已发行版《Wolfenstein 3D》或《Spear of Destiny》的数据文件才能运行,共享版数据也可以使用。
仓库最有价值的部分之一是 John Carmack 在 RELEASE.TXT 里留下的回顾式技术注释。他指出,射线投射刷新架构对这款游戏仍然算合适:基于 BSP 的纹理映射器也许更快,但在当时射线投射实现起来简单得多。动态编译的缩放例程在今天看来是“坏东西”:在无缓存的老机器上它可能是缩放墙体最快的方式,但在现代处理器上容易反复冲刷代码缓存、拖垮性能,486 以后的机器用简单的循环纹理映射反而更快。他还提到整页管理器缓存方案不必要地复杂,代码里 #ifdef 过多,这些都是阅读老代码时值得留意的工程教训。
同一份说明还列出了围绕这套代码可以尝试的方向:增加新的怪物或武器;加入更高的墙体和垂直移动,但前提是重写纹理映射器;把它移植到 32 位编译器,工作量不小,不过代码体积会明显缩小;以及利用 DOOM 的 sersetup/ipxsetup 驱动做多人游戏。这些是 Carmack 当年的建议,不代表仓库已经实现,也不应被当作现成功能。对于学习复古 FPS 的读者,它们更像是一份可继续探索的路线图。
需要特别注意的是授权。LICENCE.DOC 是 Limited Use Software License Agreement,允许出于教育目的使用源码中的部分例程来开发自己的软件,但禁止出租、出售、租赁、按次收费、为金钱或其他对价分发,也禁止以任何方式商业利用软件。它并不是今天常见的宽松开源许可证,不能简单把仓库标签理解为可自由商用;如果要把代码片段用于项目,应先仔细阅读原始许可并自行判断合规性。
实际使用上,这个仓库更像一份历史档案:根目录的安装器、16 位 DOS 工具链和缺失的游戏数据共同构成了较高的上手门槛。现代环境通常需要先解包、准备 DOS 模拟器或旧编译器环境,再自行寻找合法的数据文件;国内网络对 id 老资源、Borland 工具链和 DOSBox 的获取情况不一,相关依赖与构建步骤需要待核验。适合学习的内容包括射线投射渲染、纹理缩放、页面缓存、老式 C/DOS 工程组织,以及商业游戏源码在许可限制下如何被社区保存。若只想玩《Wolfenstein 3D》,应使用正式发行版或合法共享版,而不是指望这份源码直接提供完整游戏。
NBlood 是用 EDuke32 引擎技术与开发思路对 Build 引擎游戏所做的逆向工程移...
open-goal/jak-project 是面向 PS2《Jak & Daxter》系列的开源逆向工程与反编...
《影子武士》(Shadow Warrior)v1.2 CD 版完整源代码,由 3D Realms 于 2005...
CatacombGL 是 Catacomb 3D 与 Catacomb 冒险三部曲(Abyss、Armageddon、Apo...