open-sourcegamebusiness-simcppsdlrecreation type: concept 创建: 2026-04-09 更新: 2026-04-09
OpenLoco
Chris Sawyer's Locomotion 开源重实现,运输公司经营模拟,继 OpenTTD/OpenRCT2 之后第三条经典复刻路线
基本信息
| 项目 |
内容 |
| GitHub |
https://github.com/OpenLoco/OpenLoco |
| 语言 |
C++(约400 .cpp + 358 .h) |
| 构建系统 |
CMake 3.22+,支持 vcpkg |
| 渲染/引擎 |
SDL3(跨平台)+ 自研渲染层 |
| 许可 |
GPLv2 |
| 平台 |
Windows, Linux, macOS |
| 状态 |
游戏主体已完成重实现(2025年12月),正在开发多人模式 |
核心技术点
清洁室逆向工程
- 不基于 OpenRCT2 代码,从零重写(CSL 原版是 x86 汇编,基于 RCT2 引擎)
- 通过逆向工程理解原版行为,确保兼容 CSL 的 SV5/SC5 存档格式
- 仍需要原版游戏资产文件(Steam/GOG 可购)
模块化 C++ 架构
src/
├── Platform/ # 平台相关(Win/Linux/Mac 抽象)
├── Core/ # 核心工具(内存流、文件系统)
├── Engine/ # 游戏引擎子系统
├── Audio/ # 音频系统
├── Gfx/ # 图形渲染
├── OpenLoco/ # 游戏逻辑层
│ ├── Entities/ # 实体系统(车辆/建筑/人物)
│ ├── Map/ # 地图/地表系统
│ ├── Vehicles/ # 载具物理与AI
│ ├── Economy/ # 经济系统
│ ├── GameCommands/ # 游戏指令(玩家操作)
│ ├── Network/ # 多人网络
│ ├── Objects/ # 资产对象系统
│ └── World/ # 世界/地形系统
└── Utility/ # 通用工具库
依赖管理(vcpkg)
- SDL3:跨平台窗口/输入
- OpenAL Soft:音频
- libpng:PNG 纹理
- yaml-cpp:配置序列化
- fmt:格式化
- TBB(Linux):多线程
- benchmark:性能测试
- GTest:单元测试
网络多人模式
- 已完成游戏主体重实现,当前主攻方向:多人网络体验
- 支持
host/join 命令行模式
- Discord 社区活跃
玩法特点
- 运输帝国经营:建造和管理铁路、公路、航空、航运网络
- 竞争经济:与对手公司竞争,争夺市场份额
- 景观编辑:建设主题公园、研究新技术
- 时间维度:从1900年代开始,管理长期公司发展
- 资产兼容:需要原版 Locomotion 资产包
对公司 AI 游戏的参考价值
| 方向 |
启示 |
| 清洁室逆向 |
不碰原版代码,从零重实现兼容存档 — 适合公司复刻经典游戏 |
| 多模块 CMake |
大型 C++ 项目用 CMake + vcpkg 管理依赖,模块边界清晰 |
| SDL3 跨平台 |
SDL3 是现代 C++ 游戏跨平台首选,值得掌握 |
| 游戏 vs 引擎分离 |
游戏逻辑与渲染/平台层分离,便于未来换引擎 |
| 数据驱动对象系统 |
Objects/ 资产系统 — 新资产无需改代码 |
| 多人网络 |
网络同步是成熟商业游戏的标配功能 |
相关页面