这是一个将《Command & Conquer Generals: Zero Hour》(命令与征服:将军 绝命时刻)原生移植到 macOS、iPhone 和 iPadOS 的 C++ 项目。它基于 EA 公开的 GPLv3 引擎源码及 GeneralsX 等社区成果,使用 SDL3、DXVK、Vulkan、MoltenVK、Metal 等技术栈,让 2003 年的 DirectX 8 RTS 游戏在 Apple Silicon、iOS/iPadOS 上运行。仓库不包含任何游戏资源,用户必须自行拥有正版游戏资源,例如 Steam 版本。
适用领域
游戏移植 / 经典 RTS 游戏 / macOS 原生游戏 / iOS/iPadOS 游戏移植 / Apple Silicon / C++ 游戏引擎 / DirectX 到 Metal 渲染转换 / DXVK / MoltenVK / SDL3 / 跨平台构建 / 开源游戏引擎工程
配置难度
高。该仓库面向具备 C++、macOS/iOS 开发、图形 API、构建系统和命令行经验的开发者。macOS 版本安装相对可控,但 iOS/iPadOS 版本涉及签名、打包、资源复制、DXVK/MoltenVK、CMake preset、Xcode Team ID 等内容,对普通用户不友好。
商业价值
未知
01
技术亮点
- 不是模拟器方案,而是将真实 2003 年游戏引擎编译为 ARM64 并在 Apple 平台原生运行
- 支持 macOS、iPhone、iPadOS,覆盖 Apple Silicon 设备
- 使用 DirectX 8 到 DXVK,再到 Vulkan、MoltenVK、Metal 的渲染链路
- 为 RTS 游戏设计了触控操作,包括点击选择、拖框选择、长按取消或右键语义、双指滚动、捏合缩放
- README 提供了较完整的构建、部署、资源获取和 iOS 打包流程
- 仓库包含详细移植文档和工程日志,例如 PORTING_PLAYBOOK 和 PORTING_PATTERNS
- 对 iOS 特有限制做了大量工程适配,例如只读 App Bundle、沙盒路径、渲染生命周期、dlopen 限制、资源打包等
- 明确不分发游戏资产,降低资产版权风险
- 基于成熟社区链路:EA GPLv3 源码、TheSuperHackers、Fighter19 Unix port、GeneralsX 等
- 项目 Star 数较高,说明在经典游戏和 Apple 平台玩家社区中有一定关注度
02
目标用户
- 想在 Mac、iPhone 或 iPad 上运行《命令与征服:将军 绝命时刻》的玩家
- 对经典 Windows 游戏移植到 Apple 平台感兴趣的开发者
- 研究 DXVK、MoltenVK、SDL3、Vulkan-to-Metal 技术链路的图形开发者
- 希望学习大型遗留 C++ 游戏引擎现代化和跨平台适配的工程师
- 开源游戏社区贡献者
- 拥有正版游戏资源并愿意自行编译安装的高级用户
03
配置要求
- 需要 macOS 开发环境,推荐 Apple Silicon Mac
- 需要 Xcode 命令行工具;iOS/iPadOS 构建需要完整 Xcode
- 需要 Homebrew
- 需要 CMake、Ninja、Meson、pkgconf
- 需要 vcpkg,且应完整克隆
- 需要 LunarG Vulkan SDK,并正确配置 VULKAN_SDK
- 需要 SteamCMD 以获取正版游戏资源
- 需要用户自行拥有《Command & Conquer Generals: Zero Hour》正版资源,仓库不提供游戏资产
- iOS/iPadOS 安装需要 Apple Developer Team ID,可使用免费或付费开发者账号
- iOS/iPadOS 需要配置 GX_TEAM_ID 和 GX_BUNDLE_ID
- iOS/iPadOS 包会将约 2.7GB 游戏资源打入 App Bundle,开发模式可使用 --dev 跳过资源复制以加快迭代
- 需要理解 GPLv3 引擎代码与商业游戏资产之间的授权边界
04
适用场景
- 在 Apple Silicon Mac 上原生运行《Generals: Zero Hour》
- 在 iPhone 或 iPad 上运行 RTS 游戏并使用触控操作
- 研究 DirectX 8 到 Vulkan 再到 Metal 的渲染迁移路径
- 学习如何处理 iOS 沙盒、只读 App Bundle、签名、资源打包等平台限制
- 作为其他经典 Windows 游戏移植到 Apple 平台的参考工程
- 分析遗留游戏引擎在现代 C++、SDL3、OpenAL、FFmpeg 等技术栈下的适配方式
05
部署与配置
- macOS 构建前需要安装 Xcode 命令行工具:xcode-select --install
- 使用 Homebrew 安装依赖:cmake、ninja、meson、pkgconf、steamcmd
- 完整克隆并初始化 vcpkg,不能使用浅克隆,因为 manifest baseline 可能失效
- 安装 LunarG Vulkan SDK,注意 README 明确要求使用官方 SDK,而不是 Homebrew cask
- 设置环境变量 VCPKG_ROOT 和 VULKAN_SDK
- 克隆仓库:git clone https://github.com/ammaarreshi/Generals-Mac-iOS-iPad.git GeneralsX
- 进入目录后执行 macOS 构建脚本:./scripts/build/macos/build-macos-zh.sh
- 执行部署脚本:./scripts/build/macos/deploy-macos-zh.sh
- 使用 ./scripts/get-assets.sh <Steam用户名> 获取自己拥有的游戏资源
- 进入 ~/GeneralsX/GeneralsZH 后执行 ./run.sh -win 启动游戏
- iOS/iPadOS 构建还需要完整 Xcode、Apple ID、Apple Developer Team,以及 xcodegen
- 初始化 iOS DXVK 子模块:git submodule update --init references/fbraz3-dxvk
- 拉取 MoltenVK:./scripts/build/ios/fetch-moltenvk.sh
- 准备字体:./scripts/build/ios/stage-fonts.sh
- 使用 CMake iOS preset 构建:cmake --preset ios-vulkan && cmake --build build/ios-vulkan --target z_generals
- 设置 GX_TEAM_ID 和 GX_BUNDLE_ID 后运行 ./scripts/build/ios/package-ios-zh.sh --install 进行签名、打包和安装
06
风险与注意事项
- 许可证信息在 GitHub 元数据中显示为 NOASSERTION,虽然 README 声称引擎代码为 GPLv3,但仍建议审查仓库实际 LICENSE 文件和依赖许可
- 游戏资产不在仓库中,用户必须自行拥有正版资源,否则存在版权风险
- iOS 长时间运行可能因内存占用超过约 3GB 被系统杀死
- iOS 后台切换过程中仍存在偶发崩溃风险
- 构建链路复杂,涉及 CMake、Meson、vcpkg、Vulkan SDK、MoltenVK、DXVK、Xcode 签名等多个环节
- iOS 上运行经典 PC RTS 仍可能存在输入体验、性能、内存、生命周期等边缘问题
- DXVK/MoltenVK/D3D8 转译链路较长,图形问题定位难度较高
- 项目依赖多个上游社区项目,未来同步、兼容和补丁维护成本较高
- 由于是游戏移植项目,可能受到原游戏发行商、平台政策或 App Store 分发限制影响
- 普通玩家如果不熟悉命令行和签名流程,安装门槛较高
2026-07-11
第4名
新收录 · github_search
2026-07-10
第5名
新收录 · github_search
2026-07-09
第4名
新收录 · github_search
2026-07-08
第2名
新收录 · github_search
2026-07-07
第4名
新收录 · github_search
2026-07-06
第6名
新收录 · github_search