Command & Conquer Generals: Zero Hour 原生移植至 macOS、iOS 與 iPadOS

Command & Conquer Generals: Zero Hour 原生移植至 macOS、iOS 與 iPadOS

Command & Conquer Generals: Zero Hour 現已在 Apple Silicon 上原生執行

Command & Conquer Generals: Zero Hour 現已可在 macOS、iPhone 與 iPad 上原生遊玩。這不是模擬層,而是原始 2003 年遊戲引擎的原生 ARM64 編譯,讓戰役、對戰與 Generals Challenge 模式能在現代 Apple 硬體上運行。

技術架構與渲染管線

此移植透過多層渲染堆疊將舊有 DirectX 8 呼叫轉譯至 Apple 的 Metal API,以達成相容性。管線運作方式如下:

DirectX 8 → DXVK → Vulkan → MoltenVK → Metal

此架構讓原始引擎能與現代 GPU 驅動程式溝通,而不必完全重寫遊戲的渲染邏輯。專案是基於 EA 的 GPL v3 原始碼釋出,透過 GeneralsX 專案取得 macOS 與 Linux 支援的初始基礎。此特定分支加入了 iOS/iPadOS 移植以及各種引擎修正。

行動裝置的實作

為了讓即時策略(RTS)遊戲在觸控螢幕上可行,移植實作了一套自訂的觸控控制:

  • 選取: 點擊選取與拖曳框選。
  • 管理: 長按以取消選取單位。
  • 導航: 雙指捲動與捏合縮放。

已知的 iOS/iPadOS 穩定性問題

  • 記憶體管理: 在 iPad 上長時間遊玩可能因記憶體使用過高(超過 3 GB 常駐記憶體)而被 iOS 終止,導致返回主畫面並當機。
  • 生命週期處理: 在遊戲中途切換至背景時,偶爾會因生命週期暫停邏輯中遺留的競爭條件而發生當機。

AI 輔助的工程工作流程

此專案是人類指導與 AI 合作開發的結果。Ammaar Reshi 負責指導與遊戲測試,而工程則由 Claude Code(使用 Anthropic 的 Fable 模型)完成。

開發過程記錄於倉庫內的「Porting Playbook」,作為工程日誌,詳細說明失敗模式、根本原因與特定 bug(如靜音 EVA 台詞與黑色小地圖)的修正方式。

設定與需求

使用者必須自行提供合法的遊戲資產(可於 Steam 取得),本專案不會分發遊戲資料。

macOS 需求

  • 工具鏈: Xcode 命令列工具、CMake、Ninja、Meson 與 pkgconf。
  • 相依性: vcpkg(完整克隆)與 LunarG Vulkan SDK。
  • 資產取得: 提供一支腳本可從使用者的 Steam 帳號下載資產。

iOS/iPadOS 需求

  • 工具鏈: 完整的 Xcode 安裝與 xcodegen
  • 開發者帳號: 需要免費或付費的 Apple Developer 團隊 ID 以進行應用簽署與安裝。

社群觀點

雖然此專案因其在保存經典遊戲方面的實用性受到讚揚,但部分社群成員對 AI 在專案時程中的角色以及渲染堆疊的性質提出了疑問。

"我讀得對嗎?它會經過 5 個不同層級的 API 呼叫才真正渲染?這有點瘋狂。"

其他使用者則指出,雖然 AI 輔助移植對粉絲而言是強大的工具,但產出的文件有時會出現「AI‑ism」——大型語言模型傾向以複合名詞概括複雜概念的現象。

"我希望移植文件能稍微由人類潤飾一下,AI 生成的文字風格讓人有點刺耳。"

Sources