DOOM 开源引擎源码(id Software 初代 DOOM)
id Software 公开的初代 DOOM 源代码,限非盈利使用。README 说明:运行仍需...
Raze · ZDoom/Raze
Raze 是 ZDoom 团队维护、用 C++ 编写的开源项目,基于 GZDoom 技术重写 Build 引擎,把《毁灭公爵 3D》《血祭》《影子武士》《红脖子农场》和《Powerslave/Exhumed》整合到同一程序中,README 称也支持 Nam 与 WW2 GI。各游戏模块分别源...
jfduke3d 是开发者 Jonathon Fowler(JonoF)对 3D Realms 经典第一人称射击游戏《Duke Nukem 3D》所做的源代码移植,首个版本发布于 2003 年 4 月 17 日。它并不包含任何游戏素材,而是一套可以重新编译、运行原版游戏的引擎与游戏逻辑代码;README 明确指出,使用者必须自备一份原版《Duke Nukem 3D》发行版中的游戏数据文件,至于哪些发行版适合、文件具体位于何处,作者在个人网站的说明文档中另有指引。项目底层的引擎并非从零编写,而是复用了作者本人对 Ken Silverman 的 Build 引擎所做的移植项目 jfbuild;在该仓库中,jfbuild 以子模块的形式出现,因此用 Git 克隆之后必须先执行子模块初始化,才能开始编译。
从功能层面看,这个移植保留了原作的核心内容,并在现代系统上重做了显示与输入基础。README 的编译选项显示,引擎提供了一条可选的“真 3D 渲染器”通路(由 USE_POLYMOST 控制),以及基于 OpenGL 的硬件加速后端,可在 OpenGL 2.x、OpenGL 3.x 与 OpenGL ES 2.0 之间选择,也可以完全关闭 OpenGL,退回软件渲染路径;这些能力都是通过编译期开关裁剪的,而不是运行期菜单里随意切换的插件。在声音方面,Linux/BSD 的构建说明里列出了 libvorbis 与 fluidsynth 开发包作为可选依赖,用于提供压缩音频与 MIDI 合成支持;如果安装了 GTK+ 3 开发包,还能获得带启动窗口和编辑器文件选择对话框的界面,若不想要这套依赖,可以用 WITHOUT_GTK=1 关闭。README 也提醒,多人联机功能在不可信的网络环境下、面对不可信的玩家时应谨慎使用。
构建体系是这个项目比较有代表性的部分,同一个代码库要同时照顾多种工具链:在 Linux 与 BSD 上通过 make(BSD 下为 gmake)编译,Debian 系需要安装 build-essential 与 libsdl2-dev,FreeBSD 则安装 gmake、sdl2 与 pkgconf;macOS 走 Xcode 路线,打开 xcode 目录下的 duke3d.xcodeproj,选择 JFDuke3D target 后直接运行,jfbuild 子模块会在首次构建时自动下载 SDL2 framework;Windows 侧使用 Microsoft Visual C++ 2015 或更新版本配合 NMAKE,在对应的命令行构建环境中执行 nmake /f Makefile.msvc,并且至少需要安装 VC++ 2015.3 v140 桌面工具集、Windows Universal CRT SDK 与 Windows 8.1 SDK。编译参数可以直接传给 make,也可以写进源码目录下的 Makefile.user(MSVC 对应 Makefile.msvcuser)文件里长期生效,例如 RELEASE=1 开启发布优化、RELEASE=0 生成调试版本,以及前面提到的 USE_POLYMOST、USE_OPENGL、WITHOUT_GTK 等开关。
平台支持方面,README 给出了较明确的清单:CPU 需要 32 位或 64 位,作者亲自验证过的架构包括 Intel x86 与 x86_64、大端序的 32 位 PowerPC、32 位 hard-float ARM 以及 64 位 ARM;操作系统覆盖 Linux、BSD 以及 SDL 2.0 可能支持的其他系统,macOS 10.15 及以上,Windows Vista、7、8/10 及以上。也就是说,这是一份跨三大桌面平台、并且对非 x86 架构也有实际尝试的移植工程,而非只针对 Windows 的单一构建。
对于想借它学习的读者,这个仓库的价值主要在于“大型 C 语言游戏代码如何被移植与维护”:可以看到游戏逻辑与引擎层如何拆分、一个 2.5D 时代的引擎移植如何通过条件编译接入多种渲染后端、如何用 SDL 2.0 做平台抽象、以及同一份源码如何维护 Makefile、NMAKE 与 Xcode 工程三套构建入口。相应地也要注意几点现实约束:没有原版游戏数据就无法运行;依赖较多(SDL2、可选的 GTK+ 3、libvorbis、fluidsynth),在部分发行版上需要自行补齐开发包;许可证与商标层面,3D Realms 与 Apogee 并不为该移植提供支持,遇到问题应联系移植作者而不是原厂商。整体难度偏向有 C 语言与命令行构建经验的中高级开发者,适合作为源码阅读与跨平台构建练习的素材,而不是零基础入门项目。
id Software 公开的初代 DOOM 源代码,限非盈利使用。README 说明:运行仍需...
Hypersomnia 是 TeamHypersomnia 用 C++ 从零编写的一款多人俯视角(top-down...
这是 3D Realms 于 2003 年 4 月发布的《毁灭公爵3D》(Duke Nukem 3D)v1.5...