NBlood:Build 引擎游戏逆向移植合集(Blood / Rednukem / PCExhumed)
NBlood 是用 EDuke32 引擎技术与开发思路对 Build 引擎游戏所做的逆向工程移...
Jedi-Academy · grayj/Jedi-Academy
这是《星球大战:绝地武士学院》(Star Wars Jedi Knight: Jedi Academy)的最终版游戏源代码,由 Activision 与 Raven Software 于 2003 年以 GNU GPLv2 协议公开,供学习者研究和试玩。仓库内容与已发行版本保持一致,原有 CVS 元文件...
Teeworlds 是一个完全开源、免费的在线多人 2D 射击游戏项目,仓库由 teeworlds 组织维护,主语言为 C++。它与常见的俯视角或 3D 射击不同,采用侧视角的复古卡通画风:角色是圆滚滚的小人,场景由简洁的色块与地形构成,节奏快、上手门槛低。按 README 的描述,玩家可以在多种游戏模式中与最多 16 名玩家同场对战,官方点名的模式包括团队死斗(Team Deathmatch)与夺旗(Capture The Flag)。游戏同时提供客户端与专用服务器,既适合朋友间开房间,也适合社区长期运营公共服务器;README 还特别提示,版本更新、自定义地图等最新信息以官网 teeworlds.com 为准,说明这个项目长期依赖社区生态来维持内容供给。
从可玩内容看,Teeworlds 的定位是“轻量但完整”的多人竞技产品,而不是单机演示。它内置了完整的对战循环:玩家加入服务器、选择阵营、在回合中累计击杀或完成夺旗目标;服务器端负责规则判定与状态同步,客户端负责输入采集与画面呈现。README 中“你甚至可以设计自己的地图”一句,说明地图并非硬编码在程序里,而是作为外部资源被加载,玩家与社区可以制作并分发自定义地图,这也是该项目能长期保持活跃的重要原因。官网被定位为“新版本、自定义地图以及更多内容”的分发入口,意味着地图与服务器列表构成了游戏之外的二次生态。
技术实现上,这是一个典型的“自研游戏框架 + 通用底层库”结构。窗口、输入、音频设备等平台相关部分依赖 SDL2;画面渲染走 OpenGL;依赖列表里还能看到 freetype(字形渲染)、pnglite(PNG 图片加载)与 wavpack(音频解码),可以推断出贴图、字体与音效资源分别由这几个库承担。构建产物明确分为客户端 teeworlds 与服务器 teeworlds_srv 两个可执行文件,说明网络架构是客户端/服务器分离式的;bam 的构建目标中除 game、client、server、content 之外,还单独列出了 masterserver 与 tools,进一步表明项目包含服务器列表(主服务器)与配套工具链,而不只是一个单机程序。对于想学习多人联机游戏的读者,这种“引擎层 / 游戏逻辑层 / 服务端层”分层的 C++ 代码结构具有较高的参考价值。
构建方式是这个仓库文档中最详细的部分。项目同时支持 CMake 与 bam 两套构建系统,二者都需要先以 --recurse-submodules 递归拉取子模块。Linux 与 macOS 下用 CMake 的流程是安装依赖后执行 mkdir build、cmake ..、make,随后在 build 目录运行 ./teeworlds 与 ./teeworlds_srv;依赖按发行版分别给出:Debian/Ubuntu 需要 build-essential、cmake、libfreetype6-dev、libsdl2-dev、libpnglite-dev、libwavpack-dev、python3,Fedora 对应 @development-tools、freetype-devel、pnglite-devel、SDL2-devel、wavpack-devel,Arch 则用 base-devel、freetype2、sdl2、wavpack(文档明确说明 Arch 仓库没有 pnglite),macOS 用 brew 安装 cmake、freetype、sdl2。CMake 还提供若干实用开关:-GNinja 改用 Ninja 并行加速,-DDEV=ON 打开调试模式并关闭部分发布期机制以加快编译,-DCLIENT=OFF 则跳过客户端目标,方便在没有 SDL2 等图形库的无头服务器上只编译服务端。
若选择 bam,构建命令就是直接执行 bam,产物位于 build 的子目录中;命令行可指定 game(默认)、server、client、content、masterserver、tools 等目标,并支持 conf=release 切换发布模式(默认是 conf=debug)、arch=x86 或 arch=x86_64 强制指定架构。Windows 平台提供了三条路线:一是用 Visual Studio 配合 CMake,在 Team Explorer 中克隆仓库、等待 CMake 配置完成,再把 teeworlds.exe 设为启动项编译运行;二是用 MSVC Build Tools 加 bam,先解压 bam 到源码目录并用 make_win64_msvc.bat(32 位用 make_win32_msvc.bat)编译出 bam,再执行 bam conf=release;三是用 MinGW 加 CMake GUI,选择 MinGW Makefiles 生成器后用 mingw32-make 构建。README 也提示已有克隆可用 git submodule update --init 补拉子模块,二次构建时通常只需重复 make 这一步。
平台与获取方面,README 开篇即写明这是“面向所有主流操作系统的免费在线多人游戏”,并分别给出了 Linux、macOS 与 Windows 的完整构建说明,因此三大桌面平台均可自行编译运行;项目也在 repology 上维护打包状态徽章,说明多个发行版已有现成软件包,可减少自行编译的成本。许可证方面,文档强调软件按“as-is”提供、不附带任何明示或暗示担保,作者不对使用造成的损失负责,完整版权与许可条款需查看仓库内的 license.txt。项目最初由 Magnus Auvinen 编写,这段历史也解释了代码中偏 C 风格、结构相对朴素的实现特征。
适合学习的点集中在三处:一是基于 SDL2 + OpenGL 的轻量 2D 渲染与输入处理;二是客户端/服务器分离下的网络联机、状态同步与主服务器列表机制;三是 content 目标所体现的资源打包流程与地图编辑/加载体系。需要注意的是,仓库 README 只覆盖玩法概述与构建说明,并未给出性能数据、在线人数或具体版本状态,这些信息应以官网为准;此外本文未对其实际运行表现与网络延迟做任何实测,国内环境下的联机可用性、主服务器可达性以及依赖镜像配置仍需自行核验。
NBlood 是用 EDuke32 引擎技术与开发思路对 Build 引擎游戏所做的逆向工程移...
id Software 公开的初代 DOOM 源代码,限非盈利使用。README 说明:运行仍需...
id Software 以 GPL 许可证发布的《雷神之锤3竞技场》(Quake III Arena)源...