查看源码下载文档
READING GUIDE

《红色警戒》初代源码剖析

面向同时喜欢游戏和编程的读者:从一局即时战略游戏如何运行,读到对象、地图、战斗、经济、AI、图形、联机、存档和底层工具。

分析对象Electronic Arts 官方 CnC_Red_Alert 仓库
固定提交0dc09bb1d6188d1ec79ab4765b22a48b75ffee32,提交日期 2025-02-27。
分析日期:2026-09-20。
工作方式:获取实际源码,沿函数体与调用关系进行静态分析,按子系统研读后交叉核验。所有源码行号链接固定到同一提交。

先弄清楚这套资料的范围

这是 Red Alert 1,不是《红色警戒2》,也不是 OpenRA 或重制版引擎。代码含资料片、不同平台、DVD 和联网服务相关历史分支,不能将整个仓库视为最初发行版的一套无条件生效实现。

文档力求覆盖制作这款游戏的完整主要技术链路,重点分析关键算法、数据结构、状态机与跨模块关系。它不是对全部 798,402 个可计数文本行逐行完成的审计,也不是已经复原并运行的游戏版本。全量文件盘点和重点代码研读是不同层次的工作。

官方 README 明示源码当前不能完整编译。文档中的“源码事实”来自该提交;“工程解释”是据此作出的设计分析;“教学示例”是帮助理解的输入或伪代码;“待验证”表示尚无运行证据。尤其不能把构造默认值当成最终发行版数值,因为游戏资源和关卡配置仍会覆盖它。官方构建说明

目录

阅读主题 你将能回答的问题
00 整体制作原理 一堆代码、图片和规则怎样形成一场战争?
01 仓库、历史与构建 拿到的是什么版本?为什么不能直接编译?
02 启动、主循环与时间 一帧究竟执行什么?游戏速度与画面刷新如何联系?
03 对象模型与内存 坦克、建筑、子弹怎样组织?对象消失后引用怎么办?
04 地图、坐标与寻路 格子和像素如何对应?坦克怎样绕过障碍?
05 规则、类型与数据驱动 INI 改的是哪层数据?可以任意新增单位吗?
06 射击、弹体与伤害 命中、装甲、范围伤害和死亡如何算?
07 经济、生产与建筑 采矿、扣钱、电力、建造、出售怎样闭环?
08 兵种与特殊机制 飞机、潜艇、运输、工程师、超武怎样实现?
09 AI、队伍与任务状态机 电脑为什么会进攻?单位自己的 AI 又是什么?
10 关卡、触发器与战役 增援、计时器、过关条件和剧情如何编排?
11 渲染、界面与输入 坦克为什么像立体的?鼠标点击如何变成命令?
12 资源、音频与视频 MIX、精灵、调色板、音乐和过场怎样工作?
13 联机、同步与录像 多台电脑为何能维持同一场战斗?
14 存档与二进制表示 内存中的对象关系怎样保存到磁盘又恢复?
15 底层库、工具与移植 哪些属于引擎底座?今天修复应从哪里开始?
16 跨模块追踪 一次移动、开火、生产和过关如何串起各章?
17 阅读实验与设计启示 如何亲手验证理解,并用于自己的游戏项目?

三种阅读路线

  • 先从玩家视角理解:00 → 16 → 04 → 06 → 07 → 08 → 09 → 10,再回头补 02、03、05。
  • 按程序员的依赖顺序:01 → 00 → 02 → 03 → 05 → 04 → 06 → 07 → 09 → 13 → 14,再读表现和平台部分。
  • 准备改代码或做自己的 RTS:01 → 05 → 16 → 17 → 15;遇到具体机制再进入对应章节。

不必顺序读完才有收获。每章都包含源码入口、具体例子和验证边界。阅读时把章内解释与源码并排打开,比连续阅读几十个头文件更容易建立因果关系。

附录和可复核材料

获取与复核

分析时已在工作区克隆源码。若在自己的电脑阅读,可执行:

bash
git clone https://github.com/electronicarts/CnC_Red_Alert.git
cd CnC_Red_Alert
git checkout --detach 0dc09bb1d6188d1ec79ab4765b22a48b75ffee32

将本资料目录和源码目录放在同一父目录,使用 Python 3 复核:

bash
python RedAlert-Source-Guide/scripts/index_source.py CnC_Red_Alert
python RedAlert-Source-Guide/scripts/audit_guide.py CnC_Red_Alert

这两项只做文件盘点和文档结构核验,不编译游戏,也不证明全部语义正确。需要精确定位时可使用章内固定提交链接,或在本地用 rg -n 查找函数名。检索可能命中文件顶部的旧函数目录,务必继续找到函数体。

使用边界

原始代码的许可及附加条款以仓库 LICENSE.md为准。本资料以解释、链接和少量教学示意为主,没有打包原版游戏资源,也没有构建或分发可执行游戏。

红色警戒初代 · 源码剖析18 章正文 / 5 份附录
输入关键词,检索 24 份完整文档
全文检索 · 点击结果直达对应小节