open-sourcegameengine-remakerpgcpp23might-and-magic type: concept 创建: 2026-04-10 更新: 2026-04-10
OpenEnroth
Might and Magic VI-VIII 引擎清洁室重实现,支持现代平台和改进的图形质量
基本信息
| 项目 |
内容 |
| GitHub |
https://github.com/OpenEnroth/OpenEnroth |
| 语言 |
C++23 (~136K LOC: 102K cpp + 34K h) |
| 构建系统 |
CMake 3.27+ |
| 渲染 |
SDL2 + OpenGL(自研渲染管线) |
| 许可 |
GPLv2 |
| 状态 |
仅 MM7 可玩,MM6/MM8 WIP |
| CI |
GitHub Actions (Windows/Linux/macOS) |
核心技术点
架构设计
- 模块化子系统:
src/ 下 9 大子系统(Application/Engine/GUI/Io/Library/Media/Scripting/Utility/Arcomage)
- Engine/: 核心引擎(60 项),包含渲染、碰撞、物理等核心模块
- Library/: 共享工具库(26 项),提供通用数据结构与算法
- Application/: 主循环与入口点
- LuaJIT 脚本:
thirdparty/luajit 子模块,sol2 C++ Lua 绑定,Lua 脚本驱动游戏逻辑
第三方依赖管理
- Git Submodules: 22 个子模块,完全自包含依赖
- 关键依赖: ImGui (docking branch)、spdlog、fmt、nlohmann_json、glm、magic_enum、sol2
- OE_USE_PREBUILT_DEPENDENCIES: CMake 选项,可使用预编译依赖加速构建
- ccache/sccache 支持,mold/lld 链接器支持
构建系统特性
- C++23 强制开启 (
CMAKE_CXX_STANDARD_REQUIRED ON)
- 严格编译选项 (
-Werror=return-type, -Werror=unused-result)
- 自动化代码风格检查 (cpplint + llstlint)
- 测试构建 (
OE_BUILD_TESTS)
- 工具构建 (
OE_BUILD_TOOLS): LodTool + CodeGen
玩法特点
- 经典 RPG 重制: 基于原版 Might and Magic VII 游戏数据运行
- 现代图形增强: 原版 DOS 游戏的现代图形端口
- 跨平台支持: Windows/Linux/macOS
- 需要原版游戏数据: 必须持有 Might and Magic VII 合法拷贝(GOG 可购)
里程碑与进度
对公司 AI 游戏的参考价值
| 方向 |
启示 |
| 引擎架构 |
子系统模块化分离(Engine/GUI/Media/Scripting 各司其职) |
| 脚本系统 |
LuaJIT + sol2 C++ 绑定,数据驱动游戏逻辑 |
| 依赖管理 |
Git Submodules 自包含管理 22 个第三方库 |
| 构建系统 |
CMake 3.27 + C++23 现代工具链,ccache/sccache 加速 |
| CI/CD |
三平台 GitHub Actions 自动化构建测试 |
| 代码风格 |
cpplint + llstlint 自动化检查,-Werror 严格编译 |
| 清洁室逆向 |
从原版二进制到可读源码的逆向工程方法论 |
相关页面