DOOM 开源引擎源码(id Software 初代 DOOM)
id Software 公开的初代 DOOM 源代码,限非盈利使用。README 说明:运行仍需...
sanguo · cheft/sanguo
基于 LayaAir 引擎的《三国霸业》学习向复刻项目,使用 JavaScript 编写,地图由 Tiled 制作,素材基本取自天际边彩色版并略有修改。目前已梳理君主、武将、武器、地图、城池、战场地图等功能,指令、AI 系统、战斗等尚未完成。作者声明...
OpenTomb 的目标是把经典《古墓丽影》时代的引擎用全新代码重新实现一遍,让它能够加载 1—5 代原版游戏的关卡,也能加载玩家用 TRLE(Tomb Raider Level Editor)制作的自制关卡。README 说明,项目当年曾尝试向 Eidos/Core 索取原始源码但未能成功,因此引擎的绝大部分逻辑都是从零重写;同时作者也坦承其中沿用了若干来自未完成开源项目的遗留例程,例如 OpenRaider、icculus.org 上的 VT 项目,以及 Quake Tenebrae 的部分代码。项目立项的动机写得很直白:虽然 TR2—5 有可用的 Windows 版本、TR1 也能通过 DosBox 运行,但随着操作系统不断更新,老程序的生存空间只会越来越窄;而开源引擎理论上可以被移植到任意平台。另一个理由是 TREP、TRNG 这类补丁始终被原始二进制文件束缚,而重写引擎可以彻底摆脱这一限制。
关于项目现状,README 开头就给出了明确的免责声明:本项目已处于不活跃状态,不再维护,并建议想要继续做经典引擎与关卡创作的开发者转向社区驱动的 TombEngine(tombengine.com),后者采用更现代的技术路线,同时保留经典关卡创作的传统。仓库的 topics 也标注为 discontinued、inactive、not-maintained。因此当前这个仓库更合适的定位是“历史存档 + 技术阅读材料”,而不是可直接投入生产的引擎底座。
在技术特性上,README 列出了几处与原版引擎明显不同的设计。其一是碰撞处理:OpenTomb 采用与原始引擎完全不同的方案,它使用地形生成器,依据关卡里的 floordata 为每个房间生成优化过的碰撞网格,从而绕开原引擎在这方面的许多限制。其二是帧率:引擎支持可变帧率,不再像原作那样锁死在 30fps。其三是依赖选择:项目使用 OpenGL、OpenAL、SDL 和 Bullet Physics 这类通用且灵活的库,而不是自造底层设施。其四是脚本化:OpenTomb 内置 Lua 脚本引擎,用脚本来定义所有实体的行为,这意味着相比原作有更少的东西被硬编码进引擎,扩展或修改功能时不必改动并重新编译引擎本体。其五是对“废案”的挖掘:原引擎中许多被废弃、未被启用的特性在 OpenTomb 中被重新打开,包括新的动画、未使用的道具,以及关卡文件中隐藏的 PSX 专用结构等。
运行这款引擎有一个重要前提:它本身不附带任何游戏资源。要跑原版关卡,玩家需要自备对应作品的资源文件,来源可以是零售光盘,也可以是 Steam/GOG 版本;做法是把各代的 data 目录放进对应的 /data/tr*/ 路径下(例如 TR3 为 OpenTomb/data/tr3/data/),黄金版则放入 data/tr*_gold/ 目录。音频方面,引擎当时只支持 OGG 格式的 CD 音轨,需要玩家自行转换,README 给出了整包音乐与载入画面的下载地址(部分文件可能还需要改名才能生效)。载入画面方面,TR3 可以取官方安装目录下的 pix 文件夹,而 TR1—2、TR4、TR5 的情况各不相同(PC 版早期作品没有载入画面,TR5 采用加密格式存储),README 因此提供了第三方打包的 loading_screens 资源,引擎同时支持 png 与 pcx 两种图片格式。启动后通过反引号键呼出控制台,输入 help 查看命令、exit 退出;引擎配置集中在 config.lua(分为 screen、audio、render、controls、console、system 等小节)与 autoexec.lua(开机执行的命令列表)中,选关则使用 setgamef(game, level),例如 setgamef(3, 2) 表示加载 TR3 的第二关,宅邸关卡通常编号为 0。
构建方面,源码自带 CMakeLists.txt,可以直接用 CMake 编译;Windows 上也可以使用 Code::Blocks 或 Netbeans,或者手动把 /src 下的源文件递归加入工程,并在链接器里添加 libmingw32.a、libSDL2main.a、libSDL2.dll.a、libpng.a、libz.a、libpthread.a。Linux 下执行 cmake . && make 即可,需要 SDL2、png、ZLIB 的开发头文件,Ubuntu 系可用 apt 安装 libopenal-dev、libsdl2-dev、libpng12-dev、libglu1-mesa-dev、zlib1g-dev;macOS 则使用源码中提供的 Xcode 工程。README 特别提醒必须启用 C++11(-std=c++11),可以使用 -march 之类的 CPU 优化参数以及 -O1/-O2/-O3,但在较老的 GCC 版本上 -O3 可能导致 Bullet 崩溃(GCC 5.1 及以上通常没问题)。平台支持上,README 明确写明引擎是跨平台的,目前可在 Windows、Mac、Linux 上运行,尚无移动端实现,但认为技术上可行。
许可方面,OpenTomb 以 LGPLv3 分发,这意味着源码的任何部分都必须保持开源,因此它链接的库与打包资源也必须是 GPL 兼容的:OpenGL 本身无需授权,OpenAL Soft 为 LGPL,SDL/SDL_image 与 Bullet 为 zlib,Freetype2 为 GPL,Lua 为 MIT,此外还涉及 ffmpeg 的格式与编解码、以及采用 Apache 许可的 Droid Sans Mono、Roboto 系列字体。README 的致谢部分列出 TeslaRus 为主开发者,Cochrane 负责渲染器重写与优化以及 macOS 支持,Gh0stBlade 负责渲染相关的附加功能,并注明贡献者名单仍在不断增补、可能有遗漏。
如果把它当作学习材料,比较值得关注的点包括:经典关卡数据(floordata)如何被转换成用于碰撞的优化网格、用 Lua 驱动实体行为以降低引擎硬编码程度的思路、以及一个跨 Windows/Linux/macOS 的 C++ 老项目如何组织 CMake 与第三方依赖。但需要清醒认识到它已停止维护,代码与依赖(例如 libpng12 之类的旧包)在今天的环境里可能需要额外修补;同时运行它必须自备商业游戏资源,涉及各自的授权与合法性,仓库本身不提供任何游戏素材。真正想做经典关卡新引擎或关卡创作的读者,按 README 的建议应当直接去看仍在活跃开发的 TombEngine。
id Software 公开的初代 DOOM 源代码,限非盈利使用。README 说明:运行仍需...
jfduke3d 是 JonoF 对 3D Realms《Duke Nukem 3D》的源码移植,基于其 Build...
Frogatto & Friends 是一款 2D 横版动作冒险游戏,主角是一只青蛙;开发团队...