electronicarts/CnC_Generals_Zero_Hour
GitHub: electronicarts/CnC_Generals_Zero_Hour
EA 开源的经典即时战略游戏《命令与征服:将军》及《绝命时刻》的完整源代码,提供 Steam Workshop 支持并附带编译说明。
Stars: 4695 | Forks: 1760
# 《命令与征服:将军》(包含《绝命时刻》)源代码
本仓库包含《命令与征服:将军》(Command & Conquer Generals)及其资料片《绝命时刻》(Zero Hour)的源代码。此次发布为这两款游戏([C&C Generals](https://steamcommunity.com/workshop/browse/?appid=2229870) 和 [C&C Generals - Zero Hour](https://steamcommunity.com/workshop/browse/?appid=2732960))提供了 Steam Workshop 支持。
## 依赖项
如果您希望成功重新编译源代码和工具,您将需要寻找或编写新的替代库(或者完全移除使用这些库的代码)来替代以下库;
- DirectX SDK(版本 9.0 或更高)(预期路径 `\Code\Libraries\DirectX\`)
- STLport (4.5.3) - (预期路径 `\Code\Libraries\STLport-4.5.3`)
- 3DSMax 4 SDK - (预期路径 `\Code\Libraries\Max4SDK\`)
- NVASM - (预期路径 `\Code\Tools\NVASM\`)
- BYTEmark - (预期路径 `\Code\Libraries\Source\Benchmark`)
- RAD Miles Sound System SDK - (预期路径 `\Code\Libraries\Source\WWVegas\Miles6\`)
- RAD Bink SDK - (预期路径 `\Code\GameEngineDevice\Include\VideoDevice\Bink`)
- SafeDisk API - (预期路径 `\Code\GameEngine\Include\Common\SafeDisk` 和 `\Code\Tools\Launcher\SafeDisk\`)
- Miles Sound System "Asimp3" - (预期路径 `\Code\Libraries\WPAudio\Asimp3`)
- GameSpy SDK - (预期路径 `\Code\Libraries\Source\GameSpy\`)
- ZLib (1.1.4) - (预期路径 `\Code\Libraries\Source\Compression\ZLib\`)
- LZH-Light (1.0) - (预期路径 `\Code\Libraries\Source\Compression\LZHCompress\CompLibSource` 和 `CompLibHeader`)
## 编译(仅限 Win32)
要使用编译后的二进制文件,您必须拥有该游戏。您可以在 [EA App](https://www.ea.com/en-gb/games/command-and-conquer/command-and-conquer-the-ultimate-collection/buy/pc) 或 [Steam](https://store.steampowered.com/bundle/39394/Command__Conquer_The_Ultimate_Collection/) 上购买 C&C Ultimate Collection。
编译项目中所有配置的最快方法是在 Microsoft Visual Studio C++ 6.0(推荐使用 SP6 以使二进制文件与将军的 1.08 补丁和绝命时刻的 1.04 补丁匹配)中打开 `rts.dsw`,然后选择 Build -> Batch Build,并点击“Rebuild All”按钮。
如果您希望在现代版本的 Microsoft Visual Studio 下编译代码,可以通过在 Microsoft Visual Studio .NET 2003 中打开 `rts.dsw`,将旧版项目文件转换为现代的 MSVC solution,然后在 MSVC 2015 或更新版本中打开新创建的项目和 solution 文件。
注意:由于现代版本的 MSVC 强制执行更新版本的 C++ 标准,在成功编译之前,您需要对代码库进行大量的修改;如果您计划为 Win64 平台进行编译,则更是如此。
当 workspace 完成编译后,编译生成的二进制文件将被复制到每个游戏目录根目录下的 `/Run/` 文件夹中。
## 已知问题
Windows 有一项策略:如果可执行文件的文件名中包含“version”、“update”或“install”等词语,运行它们时将需要 UAC 提权。这将影响“versionUpdate”和“buildVersionUpdate”项目作为 post-build event 的运行。将这些项目输出的二进制文件名进行重命名,使其不包含这些词语,应该就能解决此问题。
## STLport
要成功编译此源代码,需要对 STLport 进行一些修改。我们为您提供了 [stlport.diff](stlport.diff) 文件,以便您查看并应用这些更改。在尝试应用该补丁之前,请确保您使用的是 STLport 4.5.3。
## 支持
本仓库仅用于保存目的,已归档且不提供支持。
## 许可证
本仓库及其内容采用 GPL v3 许可证授权,并适用附加条款。详情请参阅 [LICENSE.md](LICENSE.md)。
标签:C++, DirectX, 即时战略, 数据擦除, 游戏, 游戏源码