本页目录

DOOM 开源引擎源码(id Software 初代 DOOM)

DOOM · id-Software/DOOM

id Software 公开的初代 DOOM 源代码,限非盈利使用。README 说明:运行仍需自备正式版 DOOM 游戏数据;因使用了受版权保护的声音库,仅提供 Linux 版代码,DOS 版未发布;作者称代码可移植性较好,适合作为实验与二次开发的基础。

动作游戏 射击 SDL C++ 角色控制 碰撞检测 敌人 AI 关卡管理 高级
★ Stars 19,888 Forks 3,578 License GPL-2.0 更新 2026-11-13

国内开发环境适配

Windows
AI 推断/待核验
Linux
官方声明支持
macOS
未知
引擎 / 框架:SDL 暂无中文教程标记 未标记站长实测
国内编译需准备 C++ 工具链与 SDL2 等依赖,具体构建脚本待核验;游戏数据需自备正版,Steam/GOG 访问可能受限;Discord 链接可能无法直接访问。

中文项目介绍

NBlood 这个仓库并不是单一作品的移植,而是一个把多款 Build 引擎老游戏接到同一套现代代码基座上的「移植合集」。它以 EDuke32 的引擎技术与开发原则为共同底座,分出三个子项目:NBlood 负责《Blood》,PCExhumed 负责 PC 版《Exhumed / Powerslave》,Rednukem 则从 Duke Nukem 3D 的代码基础派生,用一个可执行程序覆盖多部作品。三者共享同一套渲染、输入、音频与配置层,因此仓库里既能看到各个游戏的资源加载分支,也能看到大量被反复复用的公共代码,这种「一仓多移植」的组织方式本身就是阅读源码时值得留意的地方。

Rednukem 是覆盖面最广的一支,README 明确列出的支持列表包括 Duke Nukem 3D: Atomic Edition、Redneck Rampage、Redneck Rampage: Rides Again、Duke Nukem 64、NAM/NAPALM 与 World War II GI。每部作品需要的数据文件各不相同:Duke Nukem 3D 需要 DUKE3D.GRP 与 DUKE.RTS;Redneck Rampage 需要 REDNECK.GRP、REDNECK.RTS,并可选提供 trackXX.ogg 形式的 CD 音轨;Duke Nukem 64 需要卡带 ROM dump,可选加从 DUKE3D.GRP 中提取的 MIDI 音轨;NAM 与 World War II GI 除了 .GRP 与 .RTS,还需要各自的 CON 脚本文件。把这些差异列清楚,可以看出 Rednukem 在资源层做了按游戏分派的适配,而不是简单地把一份数据格式硬套到所有作品上。

核心功能

核心特性

安装流程的设计以「手头已有正版数字版」为前提。如果你在 Steam 或 GOG 上装过《Blood》,NBlood 可以直接运行,不需要额外复制文件;否则就要从 Blood 1.21 中把 BLOOD.INI、BLOOD.RFF、GUI.RFF、SOUNDS.RFF、SURFACE.DAT、VOXEL.DAT 以及 TILES000.ART 到 TILES017.ART 这一整套美术资源搬到 NBlood 目录。资料片 Cryptic Passage 的 CP01.MAP 至 CP09.MAP、CPART07.AR_、CPART15.AR_、CPBB01.MAP 至 CPBB04.MAP、CPSL.MAP、CRYPTIC.INI/SMK/WAV 都是可选项,需要时再补。若想用 CD 音轨替代 MIDI,可以放入 bloodXX.flac 或 bloodXX.ogg,并在声音菜单里打开 Redbook 音频选项;若还想要过场动画,则要把原盘的 movie 目录整个复制进来——GOG 版的做法是把 game.ins(或 game.inst)复制一份改名为 game.cue,用虚拟光驱挂载后从盘里取 movie 文件夹。PCExhumed 的路径类似,需要 STUFF.DAT、DEMO.VCR、BOOK.MOV,并可选加入 exhumedXX.ogg 或 trackXX.ogg 形式的音轨(游戏自带第 02 至 19 轨),这些音轨除了提供配乐,还会补上 King Ramses 的旁白叙事。README 特别提示只支持 PC 零售版或官方 Demo,Beta、预发布版与其他 Demo 不受支持。

配置层面有几处需要注意的迁移点。NBlood 已经改用 nblood_cvars.cfg 取代旧的 settings.cfg,从旧版本升级时要手动改名才能保留原有设置。PCExhumed 的图形化菜单还在开发中,暂时需要直接编辑首次运行后生成的 settings.cfg:想要反转鼠标就加上 in_mouseflip 0,想改视野就写一行形如 fov "120" 的配置,取值范围在 60 到 140 之间。同样属于「当前状态」而非完整功能的还有 PCExhumed 的录像回放,README 明确写着 demo playback 尚未工作。把这些已知限制先讲清楚,可以避免把不完整的功能误当成缺陷。

技术架构分析

技术要点

技术实现上,整个仓库用 C++ 编写,构建体系与代码风格沿用 EDuke32,窗口、输入与音频通过 SDL/SDL2 抽象,因此同一份代码可以产出 Windows 可执行文件,也能在 Linux 上运行——README 里就提到在 Linux 下玩 Cryptic Passage 需要加 -ini CRYPTIC.INI 参数。仓库的话题标签还涉及 Mapster32、Ion Fury、Shadow Warrior 等 Build 生态关键词,说明这套代码与更广的 Build 引擎工具链、同源商业作品之间存在关联。从源码构建需要参照 EDuke32 官方 wiki 的说明准备依赖,仓库本身不重复交代编译步骤。

对学习者来说,这个项目的价值主要集中在几块:Build 引擎的关卡渲染与扇区/传送门结构、RFF/ART/GRP/DAT 等老资源容器与美术格式的解析、把 DOS 时代的固定管线逻辑接到现代跨平台输入与音频层、基于 cvar 的配置系统,以及「一套代码支撑多部游戏」时的分支组织方式。需要提醒的是,这些移植并不包含游戏本体资源,必须有合法取得的原版数据才能运行;具体每部作品的兼容程度、手柄支持、联机表现等细节,README 没有逐项声明,应以实际运行结果为准,不宜预先假定。仓库的讨论入口是 Discord 服务器,构建文档则指向 EDuke32 wiki。

开源许可证与版权说明

许可证标识:GPL-2.0。源码、资源与依赖许可可能不同,请以官方仓库为准。本站仅做索引,不托管源码。

相似项目