open-sourcertscommand-and-conquereawestwoodreverse-engineeringgame-engine type: concept 创建: 2026-04-10 更新: 2026-04-10
Command & Conquer Remastered Collection
EA 官方开源的 C&C 泰伯利亚黎明 + 红色警戒 源码及地图编辑器
基本信息
仓库结构
CnCRemastered.sln # 主解决方案(TiberianDawn + RedAlert DLL)
CnCTDRAMapEditor.sln # 地图编辑器解决方案
TIBERIANDAWN/ # 泰伯利亚黎明游戏逻辑
├── *.H # ~134 个 C 源码文件(.H 为历史遗留命名)
│ ├── DEFINES.H # 95KB — 核心宏定义
│ ├── TYPE.H # 62KB — 类型系统
│ ├── CONQUER.H # 42KB — 征服逻辑
│ ├── FUNCTION.H # 38KB — 函数表
│ └── *.ASM # 汇编文件(IPX 网络、键盘缓冲等)
└── DLLInterface.cpp # DLL 导出接口
REDALERT/ # 红色警戒游戏逻辑
├── *.H # ~241 个 C 源码文件
│ ├── OCIDL.H # 237KB — 超大核心定义文件
│ ├── DEFINES.H # 107KB
│ ├── MEMCHECK.H # 89KB — 内存检查
│ ├── INLINE.H # 79KB — 内联函数
│ └── *.ASM # 汇编文件
└── DLLInterface.cpp
CnCTDRAMapEditor/ # C# Windows Forms 地图编辑器
├── TiberianDawn/ # TD 地图编辑器模块
├── RedAlert/ # RA 地图编辑器模块
└── Render/ # 渲染组件
SCRIPTS/
└── tgautil.py # Steam Workshop 内容处理脚本
核心技术点
- C + 内联汇编架构:游戏逻辑以 .H 文件形式保存(C 代码用 .H 扩展名),配合 .ASM 汇编文件处理性能关键代码(网络协议、键盘处理等)
- 双游戏单仓库:TiberianDawn.dll 和 RedAlert.dll 各自独立但共享解决方案结构
- DLL 导出接口:4 个薄封装 .CPP 文件(DLLInterface/Editor/MiscAsm/Shape)作为 DLL 导出层
- 地图编辑器 C# 重写:编辑器用 C# Windows Forms 重写(独立于游戏逻辑仓库)
- IPX 协议支持:保留原始 IPX 网络协议相关汇编代码(IPXREAL.ASM/WIN32LIB/)
- Steam Workshop 集成:源码支持 Steam Workshop 地图上传,分发通过
tgautil.py 脚本处理
对公司 AI 游戏的参考价值
| 方向 |
启示 |
| RTS 引擎架构 |
经典 Westwood RTS 代码结构(HOUSEs/TECHNO/FOOT/CONQUER 分层)直接研究价值高 |
| DLL 化改造 |
游戏逻辑封装为 DLL + 接口层分离模式,可用于运行时热重载探索 |
| 网络同步 |
IPX 协议栈完整保留,对理解 90 年代锁步网络同步机制有历史价值 |
| 地图编辑器 |
C# WinForms 重写设计模式,与游戏核心解耦,可独立发布和迭代 |
| 代码保留 |
EA 官方开源 + GPL 双许可模式,商业游戏源码开放的范式参考 |