open-sourcegame-enginekotorkotorsstar-warsclean-roomcpp type: concept 创建: 2026-04-10 更新: 2026-04-10
reone
Star Wars: Knights of the Old Republic (KotOR) & The Sith Lords 开源引擎清洁室重实现
基本信息
核心技术点
清洁室设计原则
- 不依赖反编译:完全基于 BioWare 公开的文件格式规格 + 自身观察
- 仅需原版游戏数据:不分发任何版权素材,用户需自行持有 KotOR/TSL 合法副本
- 非商业项目:明确不做捐赠/盈利
模块化引擎架构
src/
├── apps/
│ ├── engine/ # 主游戏引擎入口
│ ├── launcher/ # 游戏启动器(选择游戏目录)
│ ├── toolkit/ # 工具集
│ └── dataminer/ # 数据挖掘工具
└── libs/
├── audio/ # 音频子系统
├── game/ # 游戏逻辑 (action/animation/combat/d20/effect/gui/object/party/script)
├── graphics/ # 渲染 (animation/camera/font/mesh/model/pbr/shader)
├── gui/ # GUI 系统
├── input/ # 输入处理
├── movie/ # 视频播放 (Bink/Miles)
├── resource/ # 资源解析 (GFF/2DA/TalkTable/Director)
├── scene/ # 场景图
├── script/ # NWScript 虚拟机 (format/instrutil/program/routine/variable/vm)
└── system/ # 系统层 (logger/threadutil)
依赖库
- Boost (program_options, exception) — 程序选项和异常
- SDL2 — 跨平台窗口和输入
- OpenGL 3.3 — 3D 渲染
- GLEW — OpenGL 扩展管理
- MAD — MP3 音频解码
- OpenAL — 3D 音频
- FFmpeg (可选) — 视频播放
渲染管线
- PBR 材质纹理处理 (pbrtextures.cpp)
- 模型/骨骼动画系统 (model.cpp, modelnode.cpp, animation.cpp)
- 帧缓冲区和渲染目标 (framebuffer.cpp, renderbuffer.cpp)
- AABB 包围盒裁剪 (aabb.cpp)
- GLSL Shader 程序 (shader.cpp)
资源系统
- GFF — BioWare 通用文件格式解析器
- 2DA — 二维数组数据表
- TalkTable — 字符串本地化表
- Director — 过场动画调度
- LIP Animation — 口型同步动画
- MDL/MDX — 模型格式支持
脚本系统
- NWScript 虚拟机完整实现
- 指令工具 (instrutil.cpp)
- 程序/Routine/Variable 系统
- 支持 KotOR/TSL 游戏脚本逻辑
玩法特点
- 完整运行 KotOR 和 TSL 从头到尾
- 支持 Mod 大幅修改游戏性或提升画质
- 启动器图形界面选择游戏目录
- 命令行:
reone --game GAME_DIR
- 配置文件
reone.cfg 定制化选项
- 测试目标: Steam 未修改版 KotOR + TSL(GOG/零售版应可兼容)
与同类项目对比
| 项目 |
语言 |
范围 |
引擎依赖 |
| reone |
C++ |
KotOR/TSL 专用 |
自研 SDL2+GL3.3 |
| xoreos |
C++ |
Aurora 引擎全游戏 |
自研 |
| KotOR.js |
JavaScript |
KotOR |
Web 技术栈 |
| KotOR-Unity |
C# |
KotOR |
Unity |
| Northern Lights |
C# |
KotOR |
Unity |
reone 优势: 专用代码库更轻量,C++ 性能优于 JS,实用的 SDL2+OpenGL 而非专有引擎
对公司 AI 游戏的参考价值
| 方向 |
启示 |
| 清洁室逆向 |
完全自主实现、不依赖反编译的合规逆向工程范式 |
| BioWare 资源格式 |
GFF/2DA/TalkTable 等文件格式解析可作为资源系统设计参考 |
| NWScript VM |
脚本虚拟机设计(instruction-based bytecode VM)可用于游戏脚本系统 |
| SDL2+OpenGL 架构 |
轻量级现代跨平台游戏引擎技术栈选择 |
| PBR 渲染 |
PBRTextured 系统管线可用于光照/材质系统设计 |
项目状态