プログラミング
Command & Conquer GeneralsがFableを使用してmacOS、iPhone、iPadにネイティブ移植
Command and Conquer Generals natively ported to macOS, iPhone, iPad using Fable (github.com)
要約
この記事は、クラシックRTSゲーム「Command & Conquer Generals: Zero Hour」がFableプロジェクトを使用してmacOS、iPhone、iPadにネイティブ移植されたことを紹介しています。この移植版はApple Silicon上で動作し、DirectX 8をVulkanおよびMoltenVK経由でMetalに変換した2003年のエンジンを使用しており、モバイルデバイス向けにタッチコントロールも備えています。ゲームの所有が必要で、Appleプラットフォームでのビルドと実行方法の詳細な手順が提供されています。
全文翻訳
Command & Conquer Generals: Zero Hour — macOS, iOS & iPadOS Zero HourがApple Silicon Mac、iPhone、iPadでネイティブに動作 — キャンペーン、スカーミッシュ、Generals Challengeが含まれ、RTS向けにタッチコントロール(タップで選択、ドラッグボックス、長押しで選択解除、2本指スクロール、ピンチズーム)が組み込まれています。
エミュレーションではありません:これはARM64用にコンパイルされた実際の2003年エンジンであり、DirectX 8 → DXVK → Vulkan → MoltenVK → Metalにレンダリングしています。
EAのGPL v3ソースリリースをfbraz3/GeneralsX(macOS/Linuxポートの重労働を行った)経由で構築しました。このフォークはiOS/iPadOSポートと一連のエンジン修正を追加します。オリジナルのGeneralsX READMEはupstream-mainブランチにあります。
ゲームアセットは含まれておらず、配布もされません。ご自身のコピー(Steam、セール時約5ドル)が必要です。
クイックスタート — macOS 事前準備(初回のみ):
# Toolchain
xcode-select --install
brew install cmake ninja meson pkgconf
brew install --cask steamcmd
# vcpkg(フルクローン — シャロークローンはマニフェストベースラインを壊します)
git clone https://github.com/microsoft/vcpkg ~/vcpkg && ~/vcpkg/bootstrap-vcpkg.sh
export VCPKG_ROOT=~/vcpkg # シェルプロファイルに追加
# LunarG Vulkan SDK(Homebrew caskではありません) — https://vulkan.lunarg.com/sdk/home
export VULKAN_SDK=$HOME/VulkanSDK/<version>/macOS # シェルプロファイルに追加
クローン、ビルド、アセット取得、プレイ:
git clone https://github.com/ammaarreshi/Generals-Mac-iOS-iPad.git GeneralsX
cd GeneralsX
./scripts/build/macos/build-macos-zh.sh # 依存関係をチェックし、設定、ビルドします
./scripts/build/macos/deploy-macos-zh.sh # ~/GeneralsX/GeneralsZH + run.sh を作成します
./scripts/get-assets.sh <your_steam_username> # 所有しているゲームデータを取得します
cd ~/GeneralsX/GeneralsZH && ./run.sh -win
クイックスタート — iPhone / iPad
macOSの事前準備に加えて:完全なXcode(Apple IDにサインイン済み)、brew install xcodegen、および(無料または有料の)Apple Developerチームが必要です。
cd GeneralsX
git submodule update --init references/fbraz3-dxvk # iOS DXVKはこのフォーク + Patches/dxvk-ios.patch からビルドされます
./scripts/build/ios/fetch-moltenvk.sh # ピン留めされたMoltenVK.framework(チェックサム付き)
./scripts/build/ios/stage-fonts.sh # Liberationフォント、ゲームが期待する名前にリネーム
cmake --preset ios-vulkan
cmake --build build/ios-vulkan --target z_generals GX_TEAM_ID=<your-team-id> GX_BUNDLE_ID=com.you.generalszh \
./scripts/build/ios/package-ios-zh.sh --install # アセンブル、署名、インストールします
Xcode → 設定 → アカウントでチームIDを見つけてください。アセットはアプリバンドル内に同梱されます(自己完結型インストール)。--dev は約2.7 GBのコピーをスキップして高速なコードイテレーションを行います。
場所と内容
Path
What it is
docs/port/PORTING_PLAYBOOK.md
このポートの完全なエンジニアリングログ:すべての障害モード、根本原因、修正 — §8のバグ考古学から始めてください:黒いミニマップ、サイレントEVAライン、そしてチープ音
docs/port/PORTING_PATTERNS.md
クラシックWindowsゲームをAppleプラットフォームに移植するための一般的な方法論
docs/port/RELEASE_CHECKLIST.md
公開リリースのためのゲート
scripts/get-assets.sh
Steamアセットフェッチャー(ご自身のコピー;アプリ2732960)
scripts/build/macos/, scripts/build/ios/
ビルド、デプロイ、パッケージングパイプライン
ios/
XcodeGenサイニングスタブプロジェクト + ios/config/(ステージングされたOptions.ini、dxvk.conf)
Patches/dxvk-ios.patch
DXVKの変更点 iOS d3d8/d3d9 dylibsはこのフォークからビルドされます(ローカルフォークビルドで適用)
既知の問題
iPadでの長時間のセッションは、メモリ(約3 GB以上常駐)のためにiOSによって終了されることがあります。アプリはダイアログなしでホーム画面に戻ります。セッションログ(現在および以前)は、Filesアプリ内のゲームフォルダの下にあります。調査中です。
ゲーム中のバックグラウンド化は時折iOSでクラッシュすることがあります — ライフサイクルの一時停止は一般的なパスをカバーしますが、まれな競合が残っています。頻繁にセーブしてください。
ライセンスとクレジット
エンジンコード GPL v3(EAのソースリリース → GeneralsX → このフォーク)。ゲームアセット:含まれていません、ここでライセンスされていません。クレジット:Westwood/EA Pacific(ゲーム)、EA(ソースリリース)、fbraz3/GeneralsX(ベースポート)、TheSuperHackers/GeneralsGameCode(コミュニティメインライン)、DXVK、MoltenVK、SDL、OpenAL Soft、FFmpeg、Liberation Fonts。
このポートは人間とAIの協力によって構築されました:エンジニアリングはClaude Code(AnthropicのClaude、Fableモデル)によって行われ、Ammaar Reshiによって実際のデバイスで指示され、プレイテストされました。docs/port/のエンジニアリングログは、それがどのように機能したかの編集されていない記録です。