Frogatto & Friends(青蛙主角 2D 横版动作冒险游戏)
Frogatto & Friends 是一款 2D 横版动作冒险游戏,主角是一只青蛙;开发团队...
jumpy · fishfolk/jumpy
Fish Folk: Jumpy 是一款鱼类像素画风的战术 2D 射击游戏,使用 Rust 语言与 Bevy 引擎开发。README 介绍其支持最多 4 名玩家在线或同屏对战,玩家只需控制左右瞄准,其余依靠走位与位置博弈。仓库标签包含 Lua、Mod、编辑器、多人、像素...
这是 id Software 于 2005 年以 GPL 许可证公开的《雷神之锤3竞技场》源码树,通常被视为 id Tech 3 引擎的完整代码快照。仓库里既有可用于游玩的引擎与游戏逻辑(渲染器、游戏代码、操作系统抽象层等),也有配套的内容生产工具链,因此它不是一份只有玩法代码的小示例,而是一整套 2000 年前后商业 3D 射击游戏的工程档案。README 本身只覆盖许可证与三个平台的编译说明,并未给出玩法介绍、演示或截图。
按 README 的「GENERAL NOTES」描述,目录分工相当明确:code/ 下是引擎与游戏本体(渲染器、游戏代码、OS 层等);code/bspc 是机器人(bot)路径的编译器源码,用于生成机器人在关卡中的行走路线;lcc/ 是可重定向 C 编译器,它先把代码编译成汇编,再由 q3asm/ 转成 QVM 字节码,这条链路正是 Quake 系列模组能在虚拟机里跨平台运行的关键;q3map/ 是地图编译器,负责把 .map 转成 .bsp,README 明确说这就是随 Q3Radiant 200f 一起发布的那一版;q3radiant/ 则是 Q3Radiant 地图编辑器 build 200f 的工程,其中 common/ 与 libs/ 是编辑器自身的支撑目录。换言之,从做地图、烘焙 BSP、编译 bot 路径到编译虚拟机模组,整条工作流都在仓库内。
许可证部分需要特别留意。README 开篇说明主许可证见 COPYING.txt(GPL),但随即列举了若干「不归 GPL 覆盖」的第三方代码:使用 zlib 片段实现 .zip 读取的 code/qcommon/unzip.c(约 4299 行)与 libs/pak/unzip.cpp(约 4546 行),其版权归 Gilles Vollant 与 zlib 作者;code/qcommon/md4.c 与 common/md4.c 是 RSA Data Security 的 MD4 摘要算法,README 说明它用于校验 pak 文件;code/game/bg_lib.c 是加州大学伯克利分校授权的标准 C 库替换例程;code/client/snd_adpcm.c 是荷兰数学与计算机科学研究中心(CWI)的 ADPCM 编解码器;code/jpeg-6 与 libs/jpeg6 则来自 Independent JPEG Group 的 JPEG 库,README 还坦承随源码附带的原版 README 已丢失,只好用 6b 版本的说明替代,并且库被加了少量「胶水式」修改以便引擎调用。做二次分发或商用前,应逐条核对这些条款。
构建方式按平台分三节。WIN32 提供 Visual C++ 2003(VC7)工程:code/quake3.sln 与 q3radiant/Radiant.sln;要编译 QVM 模组必须先运行若干批处理文件,并把 lcc.exe、q3cpp.exe、q3rcc.exe、q3asm.exe 放进 PATH,预编译二进制放在 lcc/bin 与 code/win32/mod-sdk-setup/bin,批处理位于 code/game、code/cgame、code/q3_ui、code/ui 等目录。GNU/Linux 使用名为 cons 的构建系统(README 称它如今可算作 scons 的 perl 祖先),构建脚本已随源码提供,无需另外安装;依赖 nasm 与 gcc 2.95,并要求 X11 具备 X Direct Graphics Access 与 X Video Mode 扩展的头文件,典型命令为在 code/ 目录执行 ./unix/cons -- gcc=gcc-2.95 g++=g++-2.95。Mac 平台的工程文件位于 code/macosx/Quake3.pbproj。
README 里有一段重要的自述:id 只保证这份代码仍能在 Windows、GNU/Linux 与 Mac 上编译通过,并没有做任何大规模测试,因此运行起来未必完全正常;同时提醒,每当 id 的游戏以 GPL 释出,社区很快就会有人把代码整理得更适配当代编译器与环境,所以如果是发布数月乃至数年之后才拿到这份源码,最好先在网络上寻找已被清理过的版本。此外仓库本身不包含美术资源与游戏数据,仅有源码。
对今天的读者来说,这份源码的价值偏向「拆解商业引擎」:可以观察固定管线时代的渲染器组织方式、QVM 字节码与工具链的协作、独立的 BSP 与 bot 路径编译流程,以及一款 1999 年射击游戏如何切分游戏逻辑与引擎层。难度在于工具链非常古老(gcc 2.95、cons、VC7 工程),在现代系统上直接编译大概率要打补丁,建议先看社区维护的衍生分支再回头对照这份原始快照。
Frogatto & Friends 是一款 2D 横版动作冒险游戏,主角是一只青蛙;开发团队...
NBlood 是用 EDuke32 引擎技术与开发思路对 Build 引擎游戏所做的逆向工程移...
DDNet 是 Teeworlds 的一个模组,源自 DDRace,是一款免费的合作型 2D 平台跳...