1 पॉइंट द्वारा GN⁺ 4 시간 전 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • Command & Conquer Generals: Zero Hour अब Apple Silicon Mac, iPhone और iPad पर emulation के बिना चलता है, जिससे इस क्लासिक RTS को आधुनिक Apple डिवाइसों पर सीधे खेला जा सकता है
  • इसकी मुख्य बात है 2003 के वास्तविक engine का ARM64 compile, और graphics को DirectX 8 → DXVK → Vulkan → MoltenVK → Metal पथ से रूपांतरित किया जाता है
  • EA की GPL v3 source release और GeneralsX macOS/Linux पोर्ट के आधार पर, यह fork iOS/iPadOS support और engine modifications जोड़ता है
  • गेम assets शामिल नहीं हैं, इसलिए Steam आदि पर मौजूद आपकी खरीदी हुई copy से डेटा खुद लाना होगा
  • iPad पर लंबे समय तक खेलने के दौरान लगभग 3GB+ memory resident होने पर ऐप बंद हो सकती है, और iOS background switching crash की संभावना भी बनी हुई है, इसलिए बार-बार save करना चाहिए

Apple डिवाइसों पर चलने वाला असली Zero Hour engine

  • Zero Hour Apple Silicon Mac, iPhone और iPad पर native रूप से चलता है
  • यह campaign, skirmish और Generals Challenge mode को support करता है
  • RTS के लिए touch controls शामिल हैं
    • tap select
    • drag box select
    • देर तक दबाकर selection हटाना
    • two-finger scroll
    • pinch zoom
  • यह emulation नहीं है, बल्कि 2003 के वास्तविक engine को ARM64 के लिए compile किया गया है
  • rendering DirectX 8 → DXVK → Vulkan → MoltenVK → Metal क्रम से होती है

GeneralsX-आधारित fork का दायरा

  • engine code, EA की GPL v3 source release पर आधारित है
  • आधार पोर्ट fbraz3/GeneralsX है, और macOS/Linux पोर्ट का मुख्य काम GeneralsX में किया गया है
  • यह fork iOS/iPadOS पोर्ट और engine modifications जोड़ता है
  • मूल GeneralsX README upstream-main branch में है

गेम assets उपयोगकर्ता को खुद तैयार करने होंगे

  • गेम assets न तो शामिल हैं और न ही वितरित किए जाते हैं
  • उपयोगकर्ता के पास अपनी गेम copy होनी चाहिए
  • Steam लिंक दिया गया है, और sale के दौरान इसकी कीमत लगभग 5 डॉलर बताई गई है
  • scripts/get-assets.sh एक script है जो उपयोगकर्ता की खरीदी हुई Steam गेम data लाती है, और target app ID 2732960 है

macOS build और run flow

  • macOS build के लिए कुछ one-time prerequisites हैं
    • xcode-select --install
    • brew install cmake ninja meson pkgconf
    • brew install --cask steamcmd
    • vcpkg का full clone और VCPKG_ROOT सेट करना
    • LunarG Vulkan SDK install करना और VULKAN_SDK सेट करना
  • vcpkg के लिए full clone जरूरी है, क्योंकि shallow clone इस्तेमाल करने पर manifest baseline टूट सकती है
  • Vulkan SDK के लिए Homebrew cask नहीं, बल्कि LunarG Vulkan SDK इस्तेमाल करना होगा
  • repository clone करने के बाद निम्न scripts को क्रम से चलाया जाता है
    • ./scripts/build/macos/build-macos-zh.sh: dependencies check, config, build
    • ./scripts/build/macos/deploy-macos-zh.sh: ~/GeneralsX/GeneralsZH और run.sh बनाना
    • ./scripts/get-assets.sh <your_steam_username>: उपयोगकर्ता की खरीदी हुई गेम data लाना
    • cd ~/GeneralsX/GeneralsZH && ./run.sh -win: चलाना

iPhone·iPad build की शर्तें

  • iOS/iPadOS build के लिए macOS prerequisites के अलावा full Xcode, Apple ID sign-in, xcodegen, और Apple Developer team की जरूरत होती है
  • build process में ये हिस्से शामिल हैं
    • references/fbraz3-dxvk submodule initialize करना
    • iOS के लिए DXVK उसी submodule और Patches/dxvk-ios.patch से build होता है
    • ./scripts/build/ios/fetch-moltenvk.sh से checksum वाली fixed version MoltenVK.framework लाना
    • ./scripts/build/ios/stage-fonts.sh से Liberation Fonts को उन नामों में तैयार करना जिनकी गेम को अपेक्षा है
    • cmake --preset ios-vulkan और cmake --build build/ios-vulkan --target z_generals से build करना
  • packaging और install के लिए GX_TEAM_ID और GX_BUNDLE_ID सेट करने के बाद ./scripts/build/ios/package-ios-zh.sh --install चलाना होता है
  • Team ID को Xcode → Settings → Accounts में देखा जा सकता है
  • assets app bundle के अंदर शामिल किए जाते हैं, जिससे self-contained install बनता है, और --dev तेज code iteration के लिए लगभग 2.7GB copy को skip करता है

repository में देखने लायक files और documents

  • docs/port/PORTING_PLAYBOOK.md: पोर्ट का पूरा engineering log, जिसमें failure modes, root causes और fixes दर्ज हैं
    • §8 bug archaeology में black minimap, silent EVA lines और chirp issues शामिल हैं
  • docs/port/PORTING_PATTERNS.md: क्लासिक Windows games को Apple platforms पर पोर्ट करने की सामान्य methodology
  • docs/port/RELEASE_CHECKLIST.md: public release gates
  • scripts/get-assets.sh: खरीदे हुए Steam assets लाने वाली script
  • scripts/build/macos/, scripts/build/ios/: build, deploy, packaging pipeline
  • ios/: XcodeGen signing stub project और ios/config/ में तैयार Options.ini, dxvk.conf
  • Patches/dxvk-ios.patch: iOS d3d8/d3d9 dylib build के लिए इस्तेमाल होने वाले DXVK changes

अभी बाकी सीमाएँ

  • iPad पर लंबे session के दौरान लगभग 3GB+ memory resident पर iOS ऐप को बंद कर सकता है
    • ऐसे में ऐप बिना किसी dialog के home screen पर लौट जाती है
    • मौजूदा और पिछले session logs, Files app के गेम folder में मिलते हैं
    • इस समस्या की जांच जारी है
  • iOS पर गेम खेलते समय background में जाने पर कभी-कभी crash हो सकता है
    • lifecycle pause सामान्य paths को handle करता है
    • एक दुर्लभ race condition अब भी बाकी है, इसलिए बार-बार save करना चाहिए

लाइसेंस और बनाने का तरीका

  • engine code GPL v3 के तहत है, और flow है EA source release → GeneralsX → यह fork
  • गेम assets शामिल नहीं हैं, और यहाँ license नहीं किए गए हैं
  • credits में Westwood/EA Pacific, EA, fbraz3/GeneralsX, TheSuperHackers/GeneralsGameCode, DXVK, MoltenVK, SDL, OpenAL Soft, FFmpeg, Liberation Fonts शामिल हैं
  • यह पोर्ट मानव+AI सहयोग से बनाया गया है
    • engineering का काम Claude Code, यानी Anthropic के Claude Fable model ने किया
    • Ammaar Reshi ने वास्तविक डिवाइसों पर direction setting और playtesting की
    • docs/port/ के engineering logs उस कार्यप्रणाली का बिना संपादन किया गया रिकॉर्ड हैं

1 टिप्पणियां

 
GN⁺ 4 시간 전
Hacker News की राय
  • यह इंसान द्वारा मॉडल को गाइड करके बड़े पैमाने पर रूपांतरण करवाने के एक काफ़ी अच्छे उपयोग-केस जैसा लगता है
    लेकिन पोर्टिंग डॉक्युमेंट्स को इंसान थोड़ा और सँवार देता तो अच्छा होता। AI-जनरेटेड लिखने का अंदाज़ खटकता है
    दायरा कम है, ज़्यादातर मज़े के लिए किया गया काम है, और बार-बार सुधार भी संभव है। यह उस स्थिति से अलग है जहाँ Bun ने कहा था, “हमने सब कुछ Zig से Rust में बदल दिया, यह स्वाभाविक रूप से अच्छी तरह चलता है, जल्द ही प्रोडक्शन में डाल सकते हैं, और हमने क्या किया उस पर एक ब्लॉग पोस्ट भी लिखेंगे,” लेकिन वह पोस्ट अब तक नहीं आई

    • Bun वाली बात ठीक से समझ नहीं आ रही। Bun शायद इस समय सबसे ज़्यादा इस्तेमाल होने वाले dev apps में से एक Claude Code चला रहा है
      इसे LLM के खराब इस्तेमाल का उदाहरण कहा जाता है, लेकिन यह पहले से काफ़ी समय से प्रोडक्शन में इस्तेमाल हो रहा है, और Claude Code की वजह से bugs या segmentation faults जैसी चीज़ें पहले से अर्थपूर्ण रूप से बढ़ी हों, ऐसा कोई सबूत मैंने नहीं सुना
    • मॉडल ने काम किया है, और शायद उसके पास पूरी चीज़ context window के भीतर रही होगी, इसलिए यहाँ तो उल्टा यह documentation लिखने के लिए और भी उपयुक्त हो सकता है
    • “इंसान मॉडल को गाइड करके बड़े पैमाने पर रूपांतरण करवाने का अच्छा उपयोग” कहना बहुत हल्का बयान है। शायद यह साल का सबसे बड़ा understatement हो
      “काफ़ी ठीक, बुरा नहीं, अच्छा उपयोग-केस।” आख़िर Fable ने किया क्या है
  • (tap-select, drag-box, long-press deselect, two-finger scroll, pinch zoom) जैसी चीज़ें coding agents में अक्सर दिखने वाली एक और AI-जैसी अभिव्यक्ति हैं
    लगता है इन्हें अपेक्षाकृत जटिल और ठोस अवधारणाओं को नए compound nouns या कभी-कभी verbs बनाकर एक-शब्दीय phrase की तरह समेटना पसंद है। यह tokens बचाने के लिए है या बाद में फिर से संदर्भित करने लायक संक्षिप्त identifier बनाने के लिए, पता नहीं, लेकिन काफ़ी नज़र आता है
    नतीजे में वाक्य पढ़ने में मुश्किल होते हैं, लेकिन अगर इस प्रवृत्ति का पता हो और जानबूझकर noun phrases को parse किया जाए, तो थोड़ा आसान हो जाता है। फिर भी, यह coding agent का intermediate output है, कोई essay या blog post नहीं, इसलिए मुझे ठीक लगता है

    • मैं भी कभी-कभी ऐसा करता हूँ
      कुछ Germanic languages में यह स्वाभाविक है। सहज रूप से nouns को जोड़कर lawnchair जैसा बनाना चाहता हूँ, लेकिन spelling underline आ जाती है, और lawn chair भी अजीब लगता है, तो lawn-chair बीच का रास्ता बन जाता है
    • यह सच में बहुत झुंझलाने वाला है। AGENTS.md में इसे मना करके देखा, लेकिन 100% असर नहीं हुआ
      ## आसान शब्द, jargon नहीं
      मैंने लिखा है कि संक्षिप्त jargon मत लिखो, बल्कि जो कहना चाहते हो उसे सीधे कहो
      जैसे “load-bearing assumptions” की जगह “वह assumptions जिन पर xyz निर्भर करता है” लिखो, और “cross-service” कहने के बजाय X service और Y service का नाम सीधे लिखो
      “Cross-RCA double-counting is unfounded” जैसे अमूर्त noun phrases भी मना हैं, और उसकी जगह “हमने जाँचा कि RCA runs के बीच वही root cause दो बार तो नहीं गिना जा रहा, और ऐसा नहीं था” जैसा लिखने को कहा है
      ## दुनिया हिला देने वाली घोषणाएँ नहीं
      “महत्वपूर्ण खोज सब कुछ बदल देती है”, “अब हमें पूरी तस्वीर समझ आ गई”, “यह game changer है” जैसी अतिशयोक्ति हटाकर, जो मिला है उसे सादगी से लिखने को कहा है
      ## yes को रिफ्लेक्स की तरह धुँधला मत करो
      अगर जवाब yes है तो yes कहो। हर positive जवाब के साथ caveat जोड़ने से भरोसा कमज़ोर पड़ता है, इसलिए caveat तभी जोड़ो जब सचमुच कोई ठोस uncertainty हो
    • शायद LLM बस जर्मन है
    • मैं non-native speaker होते हुए भी अंग्रेज़ी बोलने और लिखने में काफ़ी धाराप्रवाह हूँ, लेकिन Claude के साथ सबसे बड़ी मुश्किल यही है
      यह 2–4 advanced concepts को एक-दो शब्दों में पिरो देता है, इसलिए हर बार कहना पड़ता है, “इसे खोलकर समझाओ।” native speakers के लिए भी यह आसान नहीं होगा, लेकिन non-native लोगों के लिए और कठिन है
    • हद से ज़्यादा-hyphenation AI-की-अति-लगन है
  • असली बात यह है कि यह EA के GPL v3 source release पर आधारित fbraz3/GeneralsX के ऊपर बनाया गया है। macOS/Linux पोर्टिंग का बड़ा काम GeneralsX ने किया था, और यह fork सिर्फ iOS/iPadOS पोर्टिंग और engine में कुछ अतिरिक्त बदलाव जोड़ता है

    • Renegade की तरफ़ भी कुछ ऐसा ही चल रहा है, लेकिन वह सब कुछ शुरू से किसी दूसरे engine में कर रहा है, इसलिए काफ़ी संभव लगता है
    • यह गेम आधुनिक Windows पर बहुत खराब चलता है, इसलिए Winx64 backport की ज़रूरत है
    • सही। Fable ने मूलतः पहले से cross-platform बने प्रोजेक्ट को iOS पर पोर्ट किया है
      यह ऐसा नहीं लगता कि इसमें असाधारण मेहनत लगी हो, और Opus 4.6 भी शायद इसके लिए काफ़ी था
  • सोच रहा हूँ कि क्या यह तकनीक Emperor: Battle for Dune (2001) के लिए भी उपयोगी होगी
    यह Westwood Studios का पहला 3D real-time strategy गेम था और C&C Generals से कुछ साल पहले आया था। intellectual property विवादों और मूल सेटिंग से हटकर नए factions जोड़ने की वजह से इसकी लोकप्रियता सीमित रही, लेकिन gameplay, soundtrack, और campaign missions शानदार थे

    • Fable को Claude Code subscription pricing से हटाने वाली 7 जुलाई से पहले यह आज़माना चाहिए
    • यह उस दौर के सबसे बेहतरीन real-time strategy games में से एक था, और आज भी ठीक लगता है। इसका संगीत भी बहुत अच्छा था
    • मैं इसे एक बार आज़माऊँगा
    • क्या यह Dune 2000 नहीं है? https://www.openra.net/download/#linux
    • मुझे यह गेम सच में बहुत पसंद था। यही पहला real-time strategy गेम था जो मैंने खेला था
  • बचपन में मैंने इस गेम पर अनगिनत घंटे लगाए थे, और उम्र बढ़ने के साथ, जैसे-जैसे तकनीक अपने मूल प्लेटफ़ॉर्म से आगे निकल गई, इसे फिर से खेलना लगातार मुश्किल होता गया
    समर्पित फैंस के हाथों में यह AI की मदद का एक अच्छा इस्तेमाल है। समय मिला तो मैं user-made maps और units के साथ भी प्रयोग करना चाहूँगा। C&C Generals की modding community हमेशा काफ़ी सक्रिय रही है

  • पीछे आने वाले दूसरे मूर्खों के लिए बता दूँ, नीचे दी गई गलती का मतलब है कि आपने Steam पर गेम नहीं खरीदा है
    "ERROR! Failed to install app '2732960' (No subscription)"
    बेशक, यह README में पहले से लिखा है

  • Fable ने यह किया होगा, ऐसा नहीं लगता। “command and conquer” शब्द पर ही रुककर इसे Opus पर downgrade कर दिया होगा, और साथ ही शायद NSA watchlist में भी डाल दिया होगा

    • जब यह Chinese faction और terrorist faction वाले code sections पढ़ना शुरू करेगा, तब तो यह और भी सच लगेगा
  • “Fable इस्तेमाल किया” कहना अजीब है, क्योंकि पहला commit तो पिछले साल फ़रवरी का है, तो मामला क्या है?

    • GeneralsX को fork करने के बाद बस आख़िरी कुछ commits जोड़े गए हैं
    • शायद यह सिर्फ Fable से नहीं किया गया होगा
    • ऐसा नहीं है, यह Anthropic के लिए बस एक और मुफ़्त marketing post है
  • इसी तरह AI का इस्तेमाल करके उसी engine के Battle for Middle Earth को “open source” बनाने पर काम हो रहा है: https://github.com/dginovker/BFME-Source-Code

    • मैंने अपने कुछ पसंदीदा पुराने games पर ऐसा ही काम किया है, लेकिन “byte-for-byte identical” होने का दावा चिंता पैदा करता है
      binary से source code को सिर्फ decompile करके सार्वजनिक करना क्या समस्या नहीं है?
      यह clean room approach नहीं है, और कंपनियाँ अब भी इसे copyright infringement कहकर हटवा सकती हैं
  • शीर्षक भ्रामक है
    यह काम फ़रवरी में शुरू हुआ था, और commits देखने पर Fable का योगदान हाल के commits के छोटे से हिस्से तक ही सीमित दिखता है। 2000 में से 19 commits: https://github.com/ammaarreshi/Generals-Mac-iOS-iPad/commits...
    ऊपर से यह Fable भी न हो सकता है। संभव है कि इसे Opus पर downgrade किया गया हो
    ऐसी बार-बार की ग़लत जानकारी की वजह से Anthropic के LLM दावों पर संदेह होता है। web development workflow में GPT 5.5 के मुकाबले ये लोग कभी आगे, कभी पीछे दिखते हैं, और दोबारा चालू होने के बाद जिस Fable को मैंने टेस्ट करना शुरू किया, उसमें भी यही लगा
    अगर कोई LLM ठीक-ठाक है, तो वह ऐसा पोर्ट कर सकता था। GLM 5.2 जैसा मॉडल भी शायद कर लेता, और शायद वह इसलिए बेहतर रहता क्योंकि वह बार-बार यह अंदाज़ा नहीं लगाता कि क्या मैं सरकार को hack करने वाला terrorist हूँ या biological weapon बनाने वाला हूँ
    लोगों के पास LLMs की तुलना करने के लिए संसाधन कम हैं, इसलिए वे आसानी से इशारा कर देते हैं कि जो मॉडल उन्होंने इस्तेमाल किया वही अब तक का सबसे बेहतरीन है और उसने नया workflow खोल दिया। Opus 4.6 के बाद से मैंने बहुत कम सुधार देखा है

    • यह प्रोजेक्ट एक fork है और असल काम iOS support जोड़ना है
      repository fork owner के commits 19 घंटे पहले से शुरू होते हैं, इसलिए यह कहना काफ़ी संभव है कि वह हिस्सा Fable से किया गया। लेकिन iOS support जोड़ना ऐसा काम था जिसे पुराने models नहीं कर सकते थे और सिर्फ Fable ही कर सकता था, यह बात मुझे भी बिल्कुल स्पष्ट नहीं है