本页目录

开源《古墓丽影》1-5 引擎重制(OpenTomb)

OpenTomb · opentomb/OpenTomb

OpenTomb 是用 C++ 编写的开源《古墓丽影》经典引擎重实现,目标是运行 1—5 代原版关卡以及 TRLE 自制关卡,且不使用原始游戏代码。仓库已明确标注为不活跃、停止维护,README 建议改用社区维护的 TombEngine。具体功能完整度与可玩性待...

动作游戏 平台跳跃 SDL 自研引擎 C++ 角色控制 碰撞检测 物理系统 关卡管理 高级
★ Stars 1,443 Forks 162 License LGPL-3.0 更新 2026-11-07

国内开发环境适配

Windows
官方声明支持
Linux
官方声明支持
macOS
官方声明支持
引擎 / 框架:SDL 暂无中文教程标记 未标记站长实测
README 中的音乐包、加载画面包等资源下载地址为境外站点,国内访问可能不稳定,需自备原版游戏数据目录;Linux 依赖包名(如 libpng12-dev)较旧,在新发行版上可能需替换为当前包名,具体待核验。

中文项目介绍 AI 整理

OpenTomb 是一个用 C++ 编写的开源项目,目标是重新实现经典《古墓丽影》(Tomb Raider)引擎。按照 README 的说明,它面向经典时期 1—5 代作品的原版关卡,同时也希望支持玩家用 TRLE(Tomb Raider Level Editor)制作的自定义关卡。

项目特别强调:它没有使用任何原版《古墓丽影》代码。README 提到,从 Eidos/Core 获取源码的尝试均未成功,因此引擎逻辑是从零重新开发的;不过项目也坦承借用了若干未完成开源项目的遗留例程,例如 OpenRaider、icculus.org 上的 VT 项目,以及 Quake Tenebrae 的部分代码。

需要首先说明的是,仓库当前已明确标注为不活跃、停止维护。README 在免责声明中建议,如果希望使用仍在活跃开发、由社区驱动的经典关卡引擎,可以转向 TombEngine(tombengine.com)。因此,本条目更适合作为引擎重制与逆向工程方向的学习参考,而不是持续更新的可玩项目。

核心功能

不同的碰撞方案

不沿用原版引擎的碰撞方式,而是根据关卡中的 floordata 为每个房间生成优化的碰撞网格(terrain generator)。

可变帧率

不受原版 30fps 上限约束。

通用库依赖

使用 OpenGL、OpenAL、SDL 与 Bullet Physics 等常见且灵活的库。

Lua 脚本化实体

实体功能由 Lua 脚本定义,减少硬编码,扩展或修改功能时不必改动并重新编译引擎本体。

启用原版遗留内容

尝试开启原引擎中大量被弃用或未使用的特性,例如新动画、未使用物品、关卡文件中隐藏的 PSX 专用结构等。

补充说明

设计动机

README 用专门一节解释了“为什么还要写一个新引擎”,理由主要有两点:

  • 长期可运行性:虽然 TR2—5 有可用的 Windows 版本,TR1 也能通过 DosBox 运行,但随着操作系统演进,旧游戏的兼容性只会越来越差。开源引擎理论上可以移植到任何目标平台。
  • 突破原版二进制限制:原版引擎存在 TREP、TRNG 等补丁工具,但它们始终受制于原始可执行文件。开源实现不受这一限制,在新增特性、画面增强和代码修改上空间更大。

项目希望在现代 PC 的 CPU 与显卡上重现经典《古墓丽影》的体验,同时加入当代的更新与扩展。

平台支持

README 明确说明 OpenTomb 是跨平台引擎,当前可在 Windows、Mac 与 Linux 上运行。移动端尚无开发计划,但作者认为技术上可行。

资源准备

要运行原版关卡,需要自备对应游戏的资源,且这些资源往往格式晦涩、各代之间还有差异。README 给出的准备方式包括:

  • 数据目录:从零售光盘或 Steam/GOG 版本中取出各代的 data 文件夹,放入对应的 /data/tr*/ 目录,例如 TR3 为 OpenTomb/data/tr3/data/;Gold 版本放入 data/tr*_gold/。
  • CD 音轨:引擎目前仅支持 OGG 音轨,需要自行转换,或从 README 给出的地址下载 TR1—5 音乐包;README 提醒文件可能需要重命名才能生效。
  • 加载画面:TR1—3 与 TR5 的加载画面获取较麻烦(TR4 用关卡截图,TR5 使用加密格式),README 提供了现成的加载画面包下载地址,引擎支持 png 与 pcx 格式。

编译方式

源码附带 CMakeLists.txt,可用 CMake 构建。README 给出的要点:

  • Windows:可用 CMake,也可在 Code::Blocks 或 Netbeans 中编译;手动编译需递归加入 /src 下所有源文件,并在链接器设置中加入 libmingw32、libSDL2main、libSDL2.dll、libpng、libz、libpthread 等库。
  • Linux:下载源码后在终端执行 cmake . && make;依赖 SDL2、png、ZLIB 的开发头文件,Ubuntu 系可用 sudo apt-get install libopenal-dev libsdl2-dev libpng12-dev libglu1-mesa-dev zlib1g-dev 安装。
  • Mac:使用源码中提供的 XCode 工程。

README 特别提醒:编译需要 C++11(-std=c++11)。可以使用 -march 等 CPU 优化参数与 -O1/-O2/-O3 优化级别,但旧版 GCC 使用 -O3 可能因 Bullet 导致崩溃,GCC 5.1+ 据称可正常编译。

运行与配置

构建完成后直接运行生成的可执行文件即可,默认无需命令行参数。按反引号键()打开控制台,可输入命令选择关卡、修改设置,输入 help查看命令列表,输入exit` 退出。

配置由 config.lua 与 autoexec.lua 管理:前者保存持久的引擎与游戏设置,分为 screen、audio、render、controls、console、system 等区段;后者是启动时执行的命令列表,README 提醒随意修改可能导致引擎工作异常。

选择关卡使用 setgamef(game, level),其中 game 为 1—5。庄园关卡通常为 0,没有庄园的作品从 1 开始;例如加载 TR3 第 2 关输入 setgamef(3, 2)。

学习建议

由于项目已停止维护,阅读时建议把它当作“如何从零重写一个经典 3D 动作冒险引擎”的案例:关注其房间碰撞网格生成思路、Lua 驱动的实体脚本化设计,以及基于 SDL/OpenGL/Bullet 的跨平台工程组织方式。若目标是实际制作或运行经典关卡,README 本身已建议转向 TombEngine。

开源许可证与版权说明

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

相似项目