1 poin oleh GN⁺ 4 jam lalu | 1 komentar | Bagikan ke WhatsApp
  • Command & Conquer Generals: Zero Hour kini dapat berjalan di Apple Silicon Mac, iPhone, dan iPad tanpa emulasi, sehingga RTS klasik ini bisa dimainkan langsung di perangkat Apple modern
  • Kuncinya adalah kompilasi ARM64 dari engine asli tahun 2003, dengan grafis dikonversi melalui jalur DirectX 8 → DXVK → Vulkan → MoltenVK → Metal
  • Berdasarkan rilis source GPL v3 dari EA dan port macOS/Linux GeneralsX, fork ini menambahkan dukungan iOS/iPadOS serta perubahan pada engine
  • Karena aset game tidak disertakan, pengguna harus mengimpor sendiri data dari salinan yang mereka miliki melalui Steam atau sumber lain
  • Sesi bermain panjang di iPad bisa dihentikan karena penggunaan memori menetap sekitar 3GB atau lebih, dan potensi crash saat aplikasi iOS berpindah ke background juga masih ada, jadi sebaiknya sering menyimpan progres

Engine Zero Hour asli yang berjalan di perangkat Apple

  • Zero Hour berjalan secara native di Apple Silicon Mac, iPhone, dan iPad
  • Mendukung mode campaign, skirmish, dan Generals Challenge
  • Termasuk kontrol sentuh untuk RTS
    • ketuk untuk memilih
    • seret untuk seleksi kotak
    • tekan lama untuk membatalkan pilihan
    • scroll dengan dua jari
    • pinch untuk zoom
  • Cara kerjanya bukan emulasi, melainkan engine asli tahun 2003 yang dikompilasi ke ARM64
  • Rendering melewati urutan DirectX 8 → DXVK → Vulkan → MoltenVK → Metal

Cakupan fork berbasis GeneralsX

  • Kode engine didasarkan pada rilis source GPL v3 dari EA
  • Port dasarnya adalah fbraz3/GeneralsX, dan pekerjaan inti port macOS/Linux dilakukan di GeneralsX
  • Fork ini menambahkan port iOS/iPadOS dan perubahan pada engine
  • README asli GeneralsX ada di branch upstream-main

Aset game harus disiapkan sendiri oleh pengguna

  • Aset game tidak disertakan maupun didistribusikan
  • Pengguna memerlukan salinan game milik mereka sendiri
  • Tautan Steam disediakan, dan disebutkan harganya sekitar US$5 saat diskon
  • scripts/get-assets.sh adalah skrip untuk mengambil data game Steam yang dimiliki pengguna, dengan app ID target 2732960

Alur build dan menjalankan di macOS

  • Build macOS memiliki persiapan awal yang hanya perlu dilakukan sekali
    • xcode-select --install
    • brew install cmake ninja meson pkgconf
    • brew install --cask steamcmd
    • clone penuh vcpkg dan setel VCPKG_ROOT
    • instal LunarG Vulkan SDK dan setel VULKAN_SDK
  • vcpkg memerlukan clone penuh karena clone dangkal bisa merusak manifest baseline
  • Untuk Vulkan SDK, harus menggunakan LunarG Vulkan SDK, bukan cask Homebrew
  • Setelah me-clone repositori, jalankan skrip berikut secara berurutan
    • ./scripts/build/macos/build-macos-zh.sh: memeriksa dependensi, konfigurasi, dan build
    • ./scripts/build/macos/deploy-macos-zh.sh: membuat ~/GeneralsX/GeneralsZH dan run.sh
    • ./scripts/get-assets.sh <your_steam_username>: mengambil data game yang dimiliki pengguna
    • cd ~/GeneralsX/GeneralsZH && ./run.sh -win: menjalankan game

Syarat build untuk iPhone dan iPad

  • Build iOS/iPadOS memerlukan tambahan di atas persiapan macOS: Xcode penuh, login Apple ID, xcodegen, dan Apple Developer team
  • Proses build terdiri dari elemen berikut
    • inisialisasi submodule references/fbraz3-dxvk
    • DXVK untuk iOS dibangun dari submodule tersebut dan Patches/dxvk-ios.patch
    • mengambil versi tetap MoltenVK.framework dengan checksum lewat ./scripts/build/ios/fetch-moltenvk.sh
    • menyiapkan Liberation Fonts dengan nama yang diharapkan game lewat ./scripts/build/ios/stage-fonts.sh
    • build dengan cmake --preset ios-vulkan dan cmake --build build/ios-vulkan --target z_generals
  • Untuk packaging dan instalasi, setel GX_TEAM_ID dan GX_BUNDLE_ID, lalu jalankan ./scripts/build/ios/package-ios-zh.sh --install
  • Team ID dapat dicek di Xcode → Settings → Accounts
  • Aset dimasukkan ke dalam app bundle sehingga instalasinya mandiri, dan --dev melewati penyalinan sekitar 2.7GB untuk iterasi kode yang lebih cepat

File dan dokumen menarik di repositori

  • docs/port/PORTING_PLAYBOOK.md: log rekayasa lengkap port ini, mencatat mode kegagalan, akar masalah, dan perbaikannya
  • docs/port/PORTING_PATTERNS.md: metodologi umum untuk mem-port game Windows klasik ke platform Apple
  • docs/port/RELEASE_CHECKLIST.md: gerbang rilis publik
  • scripts/get-assets.sh: skrip untuk mengambil aset Steam milik pengguna
  • scripts/build/macos/, scripts/build/ios/: pipeline build, deploy, dan packaging
  • ios/: proyek stub penandatanganan XcodeGen serta Options.ini dan dxvk.conf yang sudah disiapkan di ios/config/
  • Patches/dxvk-ios.patch: perubahan DXVK yang digunakan untuk build dylib d3d8/d3d9 di iOS

Batasan yang masih ada

  • Sesi panjang di iPad bisa dihentikan oleh iOS saat penggunaan memori menetap sekitar 3GB atau lebih
    • Dalam kasus ini, aplikasi keluar ke layar utama tanpa dialog
    • Log sesi saat ini dan sebelumnya ada di folder game dalam aplikasi Files
    • Masalah ini masih diselidiki
  • Di iOS, berpindah ke background saat bermain kadang bisa menyebabkan crash
    • Jeda siklus hidup menangani jalur umum
    • Masih ada race condition langka, jadi sebaiknya sering menyimpan progres

Lisensi dan cara pembuatannya

  • Kode engine menggunakan GPL v3, dengan alur EA source release → GeneralsX → fork ini
  • Aset game tidak disertakan dan tidak dilisensikan di sini
  • Kredit mencakup Westwood/EA Pacific, EA, fbraz3/GeneralsX, TheSuperHackers/GeneralsGameCode, DXVK, MoltenVK, SDL, OpenAL Soft, FFmpeg, Liberation Fonts
  • Port ini dibuat lewat kolaborasi manusia+AI
    • Rekayasa dikerjakan oleh Claude Code, yaitu model Fable dari Claude milik Anthropic
    • Ammaar Reshi menangani pengarahan dan playtest di perangkat nyata
    • Log rekayasa di docs/port/ adalah catatan tanpa edit dari cara kerja tersebut

1 komentar

 
GN⁺ 4 jam lalu
Komentar Hacker News
  • Ini tampak seperti contoh penggunaan yang cukup bagus: manusia mengarahkan model untuk melakukan transformasi massal
    Meski begitu, saya berharap dokumen porting-nya sedikit dirapikan oleh manusia. Gaya tulisan yang dihasilkan AI terasa mengganggu
    Bebannya rendah, sebagian besar dikerjakan untuk bersenang-senang, dan bisa ditingkatkan secara berulang. Ini berbeda dengan situasi Bun yang mengatakan “kami sudah mengganti semuanya dari Zig ke Rust, tentu berjalan baik, sebentar lagi bisa dipakai di produksi, dan kami akan menulis posting blog tentang apa yang kami lakukan”, tetapi tulisan itu sampai sekarang belum ada

    • Saya kurang paham dengan pembicaraan soal Bun. Bun mungkin menjalankan Claude Code, salah satu aplikasi pengembang yang paling banyak dipakai saat ini
      Orang bilang itu contoh pemakaian LLM yang buruk, tetapi nyatanya sudah dipakai di produksi cukup lama, dan saya belum pernah mendengar bukti bahwa karena Claude Code jumlah bug atau segmentation fault meningkat secara berarti dibanding sebelumnya
    • Karena model yang mengerjakannya dan kemungkinan besar memiliki keseluruhan proyek di dalam jendela konteks, justru mungkin model lebih cocok untuk menulis dokumentasi dalam kasus ini
    • Ungkapan “contoh bagus manusia mengarahkan model untuk melakukan transformasi massal” terlalu lemah. Mungkin ini kandidat pernyataan paling meremehkan tahun ini
      “Lumayan bagus, tidak buruk, contoh penggunaan yang baik.” Sebenarnya Fable berhasil melakukan apa sih
  • Hal seperti (tap-select, drag-box, long-press deselect, two-finger scroll, pinch zoom) adalah contoh lain dari ungkapan khas AI yang sering terlihat pada coding agent
    Model tampaknya suka mengambil konsep yang relatif rumit dan spesifik lalu meringkasnya menjadi frasa satu kata dengan membuat nomina majemuk baru, atau kadang kata kerja baru. Saya tidak tahu apakah ini untuk menghemat token atau untuk membuat pengenal ringkas yang bisa dirujuk lagi nanti, tetapi cukup mencolok
    Kalimat hasilnya memang susah dibaca, tetapi kalau kita sadar akan kecenderungan itu dan sengaja mem-parsing frasa bendanya, jadinya sedikit lebih mudah. Tetap saja, ini kan keluaran antara dari coding agent, bukan esai atau posting blog, jadi saya rasa masih wajar

    • Saya juga kadang melakukan itu
      Di beberapa bahasa rumpun Jermanik memang seperti itu. Secara naluriah saya ingin menggabungkan nomina menjadi sesuatu seperti lawnchair, tetapi pengecekan ejaan menandainya, lalu lawn chair juga terlihat aneh, jadi lawn-chair jadi jalan tengah
    • Itu benar-benar menyebalkan. Saya sudah mencoba melarangnya di AGENTS.md, tetapi tidak 100% efektif
      ## Gunakan kata-kata sederhana, bukan jargon
      Saya tulis agar jangan memakai jargon singkat, tetapi benar-benar mengatakan maksudnya
      Misalnya, daripada “load-bearing assumptions”, tulis “asumsi yang menjadi sandaran xyz”; dan jangan bilang “cross-service”, sebut langsung layanan X dan layanan Y
      Saya juga melarang penilaian dengan frasa nomina abstrak seperti “Cross-RCA double-counting is unfounded”, dan meminta agar ditulis seperti “kami memeriksa apakah akar penyebab yang sama dihitung dua kali di antara eksekusi RCA, dan ternyata tidak”
      ## Jangan membuat pernyataan yang mengguncang dunia
      Saya minta agar hiperbola seperti “penemuan penting ini mengubah segalanya”, “sekarang kami sudah memahami gambaran besarnya”, atau “ini game changer” dihilangkan, dan cukup menjelaskan apa yang ditemukan dengan datar
      ## Jangan mengaburkan yes secara refleks
      Kalau jawabannya yes, bilang yes. Jika setiap jawaban positif selalu diberi syarat, keyakinannya jadi melemah, jadi saya minta syarat hanya ditambahkan bila memang ada ketidakpastian yang spesifik
    • Mungkin LLM itu sebenarnya cuma orang Jerman
    • Sebagai non-native speaker, kemampuan bicara dan menulis bahasa Inggris saya cukup lancar, tetapi justru ini rintangan terbesar saya dengan Claude
      Ia sering menjahit 2 sampai 4 konsep tingkat lanjut menjadi satu atau dua kata, jadi saya harus terus meminta “tolong jelaskan secara lebih rinci”. Mungkin ini juga tidak mudah bagi penutur asli, tetapi bagi non-native speaker jelas lebih sulit
    • Hipenisasi-yang-berlebihan adalah overfitting-terhadap-AI
  • Intinya adalah proyek ini dibangun di atas fbraz3/GeneralsX yang berbasis rilis source code GPL v3 dari EA. Pekerjaan besar untuk porting macOS/Linux dilakukan oleh GeneralsX, dan fork ini menambahkan porting iOS/iPadOS beserta beberapa modifikasi mesin

    • Hal serupa juga sedang dikerjakan untuk Renegade, dan semuanya dilakukan dari awal dengan mesin yang berbeda, jadi tampaknya sangat mungkin
    • Game ini berjalan sangat buruk di Windows modern, jadi perlu backport Winx64
    • Betul. Yang dilakukan Fable pada dasarnya cuma mem-porting proyek yang memang sudah cross-platform ke iOS
      Kelihatannya bukan pekerjaan yang luar biasa berat, dan mungkin Opus 4.6 pun sudah cukup
  • Saya penasaran apakah teknik seperti ini akan berguna juga untuk Emperor: Battle for Dune (2001)
    Itu adalah game strategi real-time 3D pertama dari Westwood Studios dan beberapa tahun lebih awal daripada C&C Generals. Popularitasnya terbatas karena sengketa hak kekayaan intelektual dan masuknya faksi baru yang menyimpang dari latar asli, tetapi gameplay, soundtrack, dan misi kampanyenya sangat bagus

    • Sebaiknya Fable mencobanya sebelum hilang dari harga langganan Claude Code pada 7 Juli
    • Itu salah satu game strategi real-time terbaik pada masanya, dan sampai sekarang pun masih layak dimainkan. Musiknya juga sangat bagus
    • Saya akan mencoba sekali
    • Bukankah ini Dune 2000? https://www.openra.net/download/#linux
    • Saya benar-benar menyukai game ini. Ini game strategi real-time pertama yang pernah saya mainkan
  • Waktu kecil saya menghabiskan waktu yang tak terhitung banyaknya untuk game ini, dan makin bertambah usia, makin sulit memainkannya lagi karena teknologi melampaui platform yang tadinya memang dituju
    Kalau ada di tangan para penggemar yang berdedikasi, ini adalah contoh penggunaan yang baik untuk bantuan AI. Kalau sempat, saya juga ingin bereksperimen dengan peta atau unit buatan pengguna. Komunitas modding C&C Generals memang selalu cukup aktif

  • Untuk para bodoh lain yang datang belakangan, error di bawah ini berarti kalian tidak membeli game tersebut di Steam
    "ERROR! Failed to install app '2732960' (No subscription)"
    Tentu saja ini sudah tertulis di README

  • Rasanya tidak mungkin Fable yang melakukan ini. Ia mungkin berhenti di kata “command and conquer”, menurunkannya ke Opus, dan sekaligus memasukkan saya ke daftar pengawasan NSA

    • Begitu mulai membaca bagian kode yang menangani faksi China dan faksi teroris, rasanya itu memang bisa terjadi
  • Kalau dibilang “menggunakan Fable”, bagaimana mungkin commit pertama sudah ada sejak Februari tahun lalu?

    • Mereka mem-fork GeneralsX lalu hanya menambahkan beberapa commit terakhir
    • Mungkin bukan dikerjakan dengan Fable saja
    • Bukan begitu, ini cuma satu lagi tulisan pemasaran gratis untuk Anthropic
  • Dengan cara serupa, ada juga pekerjaan “meng-open-source-kan” Battle for Middle Earth dengan AI pada mesin yang sama: https://github.com/dginovker/BFME-Source-Code

    • Saya sudah melakukan pekerjaan serupa pada beberapa game lama yang saya sukai, tetapi klaim “identik sampai tingkat byte” membuat saya khawatir
      Apakah tidak bermasalah jika source code hanya didekompilasi dari biner lalu dirilis ke publik?
      Ini bukan metode clean room, dan perusahaan masih bisa mengeklaimnya sebagai pelanggaran hak cipta lalu memaksanya diturunkan
  • Judulnya clickbait
    Pekerjaan ini dimulai pada Februari, dan kalau melihat commit, bagian yang dikerjakan Fable hanya sebagian kecil dari commit terbaru. Dari 2000 commit, hanya 19: https://github.com/ammaarreshi/Generals-Mac-iOS-iPad/commits...
    Bahkan mungkin bukan Fable. Bisa saja diturunkan ke Opus
    Karena klaim keliru yang terus berulang seperti ini, saya jadi skeptis terhadap klaim LLM dari Anthropic. Dalam alur kerja pengembangan web, kalau dibandingkan dengan GPT 5.5 hasilnya saling kejar-mengejar, dan Fable yang mulai saya uji lagi setelah diaktifkan ulang juga sama saja
    Kalau LLM-nya lumayan bagus, mestinya porting seperti ini bisa dilakukan. Mungkin GLM 5.2 juga bisa, dan malah bisa lebih baik karena ia tidak terus menebak apakah saya teroris yang mau meretas pemerintah atau membuat senjata biologis
    Orang-orang kekurangan sumber daya untuk membandingkan LLM, jadi mudah sekali tersirat bahwa model yang mereka pakai adalah yang terbaik sepanjang masa dan membuka alur kerja baru. Sejak Opus 4.6 saya hampir tidak melihat peningkatan berarti

    • Proyek ini adalah fork, dan pekerjaan nyatanya adalah menambahkan dukungan iOS
      Commit dari pemilik fork repositori dimulai 19 jam lalu, jadi bagian itu cukup masuk akal jika memang dikerjakan dengan Fable. Hanya saja, apakah penambahan dukungan iOS itu sesuatu yang tidak bisa dilakukan model sebelumnya dan hanya bisa dilakukan Fable, itu juga sama sekali tidak jelas bagi saya