本页目录

Open Golf:C 语言跨平台迷你高尔夫游戏

Open-Golf · mgerdes/Open-Golf

用 C 语言编写的跨平台迷你高尔夫游戏。README 列出 HTML、iOS、Android、Windows、Linux 平台及对应试玩或下载入口。项目基于 Sokol 库实现跨平台 3D 图形与音频,并自行编写高尔夫球的碰撞检测与碰撞响应物理代码;借助 ImGui 搭建游戏...

策略 自研引擎 C++ 网络联机 音频系统 渲染技术 专家
★ Stars 1,942 Forks 115 License MIT 更新 2026-11-08

国内开发环境适配

Windows
官方声明支持
Linux
不支持
macOS
不支持
引擎 / 框架:自研引擎 暂无中文教程标记 未标记站长实测
构建依赖大量老旧或私有第三方 SDK(DirectX 9、STLport、3DSMax 4 SDK、RAD Miles/Bink、GameSpy、SafeDisk 等),国内获取与合法授权可能困难,需自行准备替代品或移除相关代码;建议使用旧版 MSVC 或自行迁移,实际编译与运行待核验。

中文项目介绍

这是美国艺电(Electronic Arts)以 GPL v3(附带额外条款)方式公开的《命令与征服:将军》及其资料片《绝命时刻》的完整游戏源代码仓库。它与常见的「开源复刻」或「同人重制」项目不同——仓库里放的不是可执行程序或美术资源,而是当年用于构建这款商业即时战略游戏的原始工程文件,包括游戏逻辑、渲染设备层、音频设备层、工具链工程等,属于商业作品源代码的保存(preservation)行为。官方在 README 中明确表示,该仓库不接收任何 Pull Request 与 Issue,也不提供技术支持,仅供存档与研究用途;若希望基于它继续开发,需要自行 Fork 到个人账号下再自行维护。

从内容定位来看,它是完整商业 RTS 的源码快照,而非教学示例。README 特别指出,本次发布的主要目的是为两款游戏提供 Steam 创意工坊(Steam Workshop)支持,并分别给出了《C&C 将军》(appid 2229870)与《C&C 将军:绝命时刻》(appid 2732960)的创意工坊页面链接。工程结构按当年 Westwood/EA 的惯例组织,源代码根目录下的 rts.dsw 是 Visual Studio 6.0 的工作区文件,涵盖了游戏本体与配套工具的多个工程;构建完成后,产物会被复制到各游戏目录根下的 /Run/ 文件夹中。

核心功能

核心特性

在技术实现上,这是一套典型的 2000 年代初期的 Windows 原生 C++ 大型工程:使用自研的 SAGE 世代引擎(仓库中大量出现 GameEngine、GameEngineDevice、WWVegas 等自有模块),把游戏逻辑、设备抽象层(DirectX 图形与输入)、音频、视频播放、压缩、网络联机等拆成独立库。它依赖大量当年的第三方组件,而这正是重建的最大障碍。README 逐一列出了缺失依赖及其在工程中期望的路径:DirectX SDK 9.0 或更高(\Code\Libraries\DirectX\)、STLport 4.5.3、3DSMax 4 SDK、NVASM 汇编器、BYTEmark 基准测试、RAD Miles Sound System SDK 与 Miles 的「Asimp3」模块、RAD Bink 视频 SDK、SafeDisc 光盘校验 API、GameSpy SDK,以及 ZLib 1.1.4 与 LZH-Light 1.0 两个压缩库。这些组件大多已停售、闭源或难以合法获取,README 建议的做法是自行寻找替代实现、重写相关封装,或者干脆把调用它们的代码整段移除。

构建流程方面,官方给出的「最短路径」是:用 Microsoft Visual Studio C++ 6.0(推荐 SP6,以便与《将军》1.08 补丁、《绝命时刻》1.04 补丁的二进制保持一致)打开 rts.dsw,通过 Build → Batch Build 的「Rebuild All」一次编译所有配置。若想用现代编译器,则需要先用 Visual Studio .NET 2003 打开旧工程并转换出新的解决方案文件,再用 MSVC 2015 或更新版本打开。官方同时提醒:现代 MSVC 强制执行更新的 C++ 标准,代码库需要做大量修改才可能通过编译,若打算编译 Win64 版本,改动量还要大得多。此外还提供了一个 stlport.diff 补丁文件,说明 STLport 也必须打补丁才能配合这份源码编译,且必须使用 4.5.3 版本。

技术架构分析

技术要点

平台支持非常明确:仅 Win32。README 的小节标题直接写作「Compiling (Win32 Only)」,没有提供 Linux 或 macOS 的构建说明,工程文件、DirectX 依赖与 SafeDisc 等组件也都是 Windows 专属。仓库中还有一条容易被忽略的「已知问题」:Windows 的策略会让文件名中包含 version、update、install 等字样(不区分大小写)的可执行文件需要 UAC 提权才能运行,这会使得 versionUpdate 与 buildVersionUpdate 这两个工程作为编译后置步骤执行失败;解决办法是重命名输出二进制,避开这些关键词。另外,README 强调即便编译成功,要实际游玩仍必须拥有正版游戏,可通过 EA App 或 Steam 购买《命令与征服 终极合集》。

对学习者而言,这份代码的价值不在于「拿来就能跑」,而在于它是一份罕见的、完整的商业 RTS 工程遗产:可以观察大型 C++ 项目如何分层组织游戏逻辑与设备层、如何组织多配置批量构建、如何处理跨模块的第三方 SDK 封装,以及当年光盘校验、GameSpy 联机、Miles 音频等已经被时代淘汰的技术栈长什么样。适合的人群是有一定 Windows C++ 与 MSVC 工程经验、对 RTS 架构或游戏 preservation 感兴趣的开发者。需要提前有心理准备的是:编译门槛属于专家级,缺失依赖多、许可证是带附加条款的 GPL v3(须阅读 LICENSE.md)、且没有官方支持渠道,任何构建尝试都应视为自行探索而非「按文档即可复现」。仓库未附带依赖、未提供可执行包与在线试玩,也没有 CI 或预编译产物,实际可构建性有待读者自行核验。

开源许可证与版权说明

许可证标识:MIT。源码、资源与依赖许可可能不同,请以官方仓库为准。本站仅做索引,不托管源码。

相似项目