1 puan yazan GN⁺ 4 시간 전 | 1 yorum | WhatsApp'ta paylaş
  • Command & Conquer Generals: Zero Hour, Apple Silicon Mac, iPhone ve iPad’de emülasyon olmadan çalışıyor; böylece klasik RTS, modern Apple cihazlarında doğrudan oynanabiliyor
  • İşin özü, 2003’teki gerçek motorun ARM64 için derlenmesi; grafikler DirectX 8 → DXVK → Vulkan → MoltenVK → Metal hattından dönüştürülüyor
  • EA’in GPL v3 kaynak kod yayını ve GeneralsX macOS/Linux portu temel alınırken, bu fork iOS/iPadOS desteği ve motor düzeltmeleri ekliyor
  • Oyun varlıkları pakete dahil edilmediğinden, Steam gibi platformlardan sahip olduğunuz kopyanın verilerini kendiniz getirmeniz gerekiyor
  • iPad’de uzun süreli oyun oturumları, yaklaşık 3 GB+ bellek kullanımında sonlanabiliyor; ayrıca iOS’ta arka plana geçiş sırasında çökme ihtimali de sürdüğü için sık kayıt yapmak gerekiyor

Apple cihazlarda çalışan gerçek Zero Hour motoru

  • Zero Hour, Apple Silicon Mac, iPhone ve iPad’de yerel olarak çalışıyor
  • Campaign, skirmish ve Generals Challenge modlarını destekliyor
  • RTS için dokunmatik kontroller içeriyor
    • dokunarak seçme
    • sürükleyerek kutu seçimi
    • uzun basarak seçimi kaldırma
    • iki parmakla kaydırma
    • pinch zoom
  • Çalışma şekli emülasyon değil, 2003’teki gerçek motorun ARM64 için derlenmiş hali
  • Render hattı DirectX 8 → DXVK → Vulkan → MoltenVK → Metal şeklinde ilerliyor

GeneralsX tabanlı fork’un kapsamı

  • Motor kodu, EA’in GPL v3 kaynak kod yayınına dayanıyor
  • Temel port fbraz3/GeneralsX; macOS/Linux portunun ana çalışması GeneralsX içinde yapıldı
  • Bu fork, iOS/iPadOS portunu ve motordaki düzenlemeleri ekliyor
  • Orijinal GeneralsX README dosyası upstream-main branch’inde bulunuyor

Oyun varlıklarını kullanıcı kendisi hazırlamalı

  • Oyun varlıkları dahil edilmiyor veya dağıtılmıyor
  • Kullanıcının oyunun kendi kopyasına sahip olması gerekiyor
  • Bir Steam bağlantısı veriliyor ve indirim dönemlerinde yaklaşık 5 dolar olduğu belirtiliyor
  • scripts/get-assets.sh, kullanıcının sahip olduğu Steam oyun verilerini getiren betik; hedef uygulama ID’si 2732960

macOS derleme ve çalıştırma akışı

  • macOS derlemesi için bir kereye mahsus bazı ön hazırlıklar gerekiyor
    • xcode-select --install
    • brew install cmake ninja meson pkgconf
    • brew install --cask steamcmd
    • vcpkg için tam clone ve VCPKG_ROOT ayarı
    • LunarG Vulkan SDK kurulumu ve VULKAN_SDK ayarı
  • vcpkg, shallow clone kullanılırsa manifest baseline bozulabildiği için tam clone gerektiriyor
  • Vulkan SDK için Homebrew cask değil, LunarG Vulkan SDK kullanılmalı
  • Depo clone edildikten sonra şu betikler sırayla çalıştırılıyor
    • ./scripts/build/macos/build-macos-zh.sh: bağımlılık kontrolü, yapılandırma, derleme
    • ./scripts/build/macos/deploy-macos-zh.sh: ~/GeneralsX/GeneralsZH ve run.sh oluşturma
    • ./scripts/get-assets.sh <your_steam_username>: kullanıcının sahip olduğu oyun verilerini getirme
    • cd ~/GeneralsX/GeneralsZH && ./run.sh -win: çalıştırma

iPhone ve iPad derleme koşulları

  • iOS/iPadOS derlemesi için macOS ön hazırlıklarına ek olarak tam Xcode, Apple ID ile giriş, xcodegen ve bir Apple Developer team gerekiyor
  • Derleme süreci şu bileşenlerden oluşuyor
    • references/fbraz3-dxvk submodule’ünü başlatma
    • iOS için DXVK, ilgili submodule ve Patches/dxvk-ios.patch üzerinden derleniyor
    • ./scripts/build/ios/fetch-moltenvk.sh ile checksum’ı doğrulanmış sabit sürüm MoltenVK.framework alınıyor
    • ./scripts/build/ios/stage-fonts.sh ile Liberation Fonts, oyunun beklediği adlarla hazırlanıyor
    • cmake --preset ios-vulkan ve cmake --build build/ios-vulkan --target z_generals ile derleme yapılıyor
  • Paketleme ve kurulum için GX_TEAM_ID ve GX_BUNDLE_ID ayarlandıktan sonra ./scripts/build/ios/package-ios-zh.sh --install çalıştırılıyor
  • Team ID, Xcode → Settings → Accounts altında görülebiliyor
  • Varlıklar uygulama bundle’ının içine dahil edilerek kendi kendine yeterli bir kurulum sağlanıyor; --dev, hızlı kod iterasyonu için yaklaşık 2.7 GB’lık kopyalama adımını atlıyor

Depoda bakmaya değer dosyalar ve belgeler

  • docs/port/PORTING_PLAYBOOK.md: portun tam mühendislik günlüğü; başarısızlık modları, kök nedenler ve düzeltmeleri kaydediyor
  • docs/port/PORTING_PATTERNS.md: klasik Windows oyunlarını Apple platformlarına port etmenin genelleştirilmiş metodolojisi
  • docs/port/RELEASE_CHECKLIST.md: genel kullanıma açık sürüm için kontrol kapıları
  • scripts/get-assets.sh: kullanıcının sahip olduğu Steam varlıklarını getiren betik
  • scripts/build/macos/, scripts/build/ios/: derleme, dağıtım ve paketleme pipeline’ları
  • ios/: XcodeGen imzalama stub projesi ve ios/config/ içindeki hazır Options.ini, dxvk.conf
  • Patches/dxvk-ios.patch: iOS d3d8/d3d9 dylib derlemelerinde kullanılan DXVK değişiklikleri

Hâlâ kalan kısıtlar

  • iPad’de uzun oturumlar, yaklaşık 3 GB+ bellek kullanımında iOS tarafından sonlandırılabiliyor
    • Bu durumda uygulama herhangi bir iletişim kutusu göstermeden ana ekrana dönüyor
    • Geçerli ve önceki oturum günlükleri, Files uygulamasındaki oyun klasöründe bulunuyor
    • Sorun şu anda araştırılıyor
  • iOS’ta oyun sırasında arka plana geçildiğinde bazen çökme yaşanabiliyor
    • Yaşam döngüsü duraklatması normal akışı ele alıyor
    • Nadir bir race condition kaldığı için sık kayıt yapmak gerekiyor

Lisans ve üretim biçimi

  • Motor kodu GPL v3 lisanslı; akış EA kaynak kod yayını → GeneralsX → bu fork şeklinde
  • Oyun varlıkları dahil edilmiyor ve burada lisanslanmıyor
  • Katkı listesinde Westwood/EA Pacific, EA, fbraz3/GeneralsX, TheSuperHackers/GeneralsGameCode, DXVK, MoltenVK, SDL, OpenAL Soft, FFmpeg ve Liberation Fonts yer alıyor
  • Port, insan + yapay zeka iş birliğiyle geliştirildi
    • Mühendislik tarafını Claude Code, yani Anthropic’in Claude Fable modeli üstleniyor
    • Ammaar Reshi, gerçek cihazlarda yönlendirme ve playtest çalışmalarını yürütüyor
    • docs/port/ içindeki mühendislik günlükleri, bu çalışma biçiminin düzenlenmemiş kaydı niteliğinde

1 yorum

 
GN⁺ 4 시간 전
Hacker News görüşleri
  • Bu, bir insanın modeli yönlendirip kitlesel dönüşüm yaptırdığı oldukça iyi bir kullanım örneği gibi görünüyor
    Yine de portlama belgelerini bir insanın biraz elden geçirmesi iyi olurmuş. Yapay zeka üretimi üslup rahatsız ediyor
    Eşik düşük, yapılan iş çoğunlukla eğlence amaçlı ve tekrar tekrar iyileştirme de mümkün. Bu, Bun’ın “her şeyi Zig’den Rust’a geçirdik, tabii ki iyi çalışıyor, yakında prodüksiyona da alabiliriz ve ne yaptığımızı anlatan bir blog yazısı da yazacağız” deyip o yazının hâlâ ortada olmamasından farklı

    • Bun kısmını pek anlamadım. Bun muhtemelen şu anda en çok kullanılan geliştirici uygulamalarından biri olan Claude Code üzerinde çalışıyor
      LLM’lerin kötü kullanımı örneği deniyor ama zaten bir süredir prodüksiyonda kullanılıyor ve Claude Code yüzünden hataların ya da segmentation fault gibi sorunların öncekine göre anlamlı biçimde arttığına dair bir şey duymadım
    • Model işi yaptıysa ve muhtemelen her şeyi bağlam penceresi içinde tuttuysa, burada belgeleri yazmak için aslında daha bile uygun olabilir
    • “İnsanın modeli yönlendirip kitlesel dönüşüm yaptırdığı iyi bir kullanım” ifadesi fazla zayıf kalıyor. Belki de yılın en büyük küçümsemesi
      “Oldukça iyi, fena değil, iyi bir kullanım örneği” falan. Fable tam olarak ne başardı ki
  • (tap-select, drag-box, long-press deselect, two-finger scroll, pinch zoom) gibi şeyler, kodlama ajanlarında sık görülen başka bir AIvari ifade biçimi
    Görece karmaşık ve spesifik kavramları yeni bileşik isimler ya da bazen fiiller üreterek tek kelimelik kalıplar gibi özetlemeyi seviyor gibiler. Bunun token tasarrufu için mi yoksa sonra yeniden başvurulabilecek kısa bir tanımlayıcı üretmek için mi olduğunu bilmiyorum ama oldukça göze batıyor
    Ortaya çıkan cümleler okunması zor oluyor ama bu eğilimi bilip isim öbeklerini bilinçli biçimde ayrıştırınca biraz daha anlaşılır hale geliyor. Yine de bunlar kodlama ajanının ara çıktıları, bir deneme yazısı ya da blog yazısı değil; o yüzden sorun etmiyorum

    • Ben de bazen böyle yapıyorum
      Bazı Cermen dilleri zaten böyle. İçgüdüsel olarak isimleri birleştirip lawnchair gibi yazmak istiyorum ama imla denetimi altını çiziyor, lawn chair da garip görünüyor, o yüzden lawn-chair bir ara bölge oluyor
    • Gerçekten sinir bozucu. AGENTS.md içinde yasaklamayı denedim ama %100 etkili olmuyor
      ## Basit konuş, jargon değil
      Kısaltılmış uzman dili kullanma, gerçekten ne demek istiyorsan onu söyle diye yazdım
      Mesela “load-bearing assumptions” yerine “xyz’nin dayandığı varsayımlar” yazsın, “cross-service” demesin de doğrudan X servisi ve Y servisini adlandırsın
      “Cross-RCA double-counting is unfounded” gibi soyut isim öbekleriyle hüküm vermeyi de yasakladım; bunun yerine “RCA çalışmaları arasında aynı kök nedenin iki kez sayılıp sayılmadığını kontrol ettik ve sayılmadığını gördük” gibi yazsın
      ## Dünyayı sarsan ilanlar yok
      “Önemli keşif her şeyi değiştiriyor”, “artık büyük resmi gördük”, “oyun değiştirici” gibi abartıları çıkarsın, yalnızca bulunan şeyi sade biçimde anlatsın
      ## yes cevabını refleks olarak bulandırma
      Cevap yes ise yes desin. Her olumlu cevaba bir koşul eklemek kesinliği zayıflatıyor; o yüzden yalnızca gerçekten belirli bir belirsizlik varsa koşul eklesin
    • Belki de LLM sadece Alman’dır
    • Anadili İngilizce olmayan biri olarak İngilizce konuşma ve yazmada epey akıcıyım ama Claude’daki en büyük zorluk tam da bu
      İki ila dört ileri kavramı bir ya da iki kelimeye sıkıştırıp yapıştırıyor; ben de her seferinde “bunu açıp açıklar mısın” demek zorunda kalıyorum. Anadili İngilizce olanlar için de kolay değildir ama olmayanlar için daha da zor
    • Aşırı-hyphen-kullanımı AI-takıntısıdır
  • Buradaki asıl nokta, bunun EA’nın GPL v3 olarak açtığı kaynak kod sürümünü temel alan fbraz3/GeneralsX üstüne inşa edilmiş olması. macOS/Linux portunun büyük kısmını GeneralsX yapmış; bu fork ise buna iOS/iPadOS portunu ve birkaç motor değişikliğini ekliyor

    • Renegade tarafında da benzer bir şey üzerinde çalışılıyor ama tüm bunlar bu kez baştan farklı bir motorla yapılıyor; bu yüzden gayet mümkün görünüyor
    • Bu oyun modern Windows’ta o kadar kötü çalışıyor ki bir Winx64 geri portu lazım
    • Evet. Fable’ın yaptığı şey, zaten çapraz platform olan bir projeyi iOS’a portlamak kadar görünüyor
      İnanılmaz zahmetli bir iş gibi görünmüyor; Opus 4.6 ile de gayet yapılabilirmiş gibi
  • Bu tekniğin Emperor: Battle for Dune (2001) için de işe yarayıp yaramayacağını merak ediyorum
    Westwood Studios’un ilk 3D gerçek zamanlı strateji oyunuydu ve C&C Generals’tan birkaç yıl daha eskiydi. Fikri mülkiyet anlaşmazlıkları ve orijinal evrenden sapıp yeni fraksiyonlar eklemesi yüzünden popülerliği sınırlı kaldı ama oynanışı, müzikleri ve görev tasarımları harikaydı

    • Fable, Claude Code abonelik ücretinden çıkarılmadan önce, yani 7 Temmuz’dan önce denemek iyi olabilir
    • Bu dönemin en iyi gerçek zamanlı strateji oyunlarından biriydi ve bugün bile gayet oynanır. Müziği de çok iyiydi
    • Bir deneyeyim
    • Bu Dune 2000 değil mi? https://www.openra.net/download/#linux
    • Bu oyunu gerçekten çok seviyordum. Oynadığım ilk gerçek zamanlı strateji oyunuydu
  • Küçükken bu oyuna sayısız saat harcadım ve yaş ilerledikçe teknoloji oyunun tasarlandığı platformu aştığı için yeniden oynamak giderek zorlaştı
    Sadık hayranların elinde bu, yapay zekanın yardımcı olabileceği iyi bir alan. Zaman bulursam kullanıcı yapımı haritalar ve birimleri de denemek isterim. C&C Generals mod topluluğu her zaman oldukça hareketliydi

  • Arkadan gelecek diğer ahmaklar için söyleyeyim, aşağıdaki hata oyunu Steam’den satın almadığınız anlamına geliyor
    "ERROR! Failed to install app '2732960' (No subscription)"
    Tabii README’de zaten yazıyor

  • Fable bunu yapmış olamaz. “command and conquer” ifadesini görünce durup Opus’a düşürmüştür; aynı anda da muhtemelen NSA izleme listesine eklemiştir

    • Çin fraksiyonu ve terörist fraksiyonla ilgili kod bölümlerini okumaya başlayınca gerçekten öyle olacakmış gibi geliyor
  • “Fable kullanıldı” demek için ilk commit’in geçen yılın şubatına ait olması nasıl açıklanıyor?

    • GeneralsX’i fork’ladıktan sonra yalnızca son birkaç commit’i eklemişler
    • Muhtemelen sadece Fable ile yapılmadı
    • Öyle değil; bu sadece Anthropic için yazılmış bir başka bedava pazarlama yazısı
  • Benzer şekilde aynı motorun Battle for Middle Earth sürümünü yapay zeka kullanarak “açık kaynaklaştırmaya” çalışıyorlar: https://github.com/dginovker/BFME-Source-Code

    • Sevdiğim birkaç eski oyun için benzer işler yaptım ama “byte düzeyinde aynı” iddiası endişe verici
      İkili dosyadan kaynak kodu sadece decompile edip yayımlamak sorun olmaz mı?
      Bu clean-room yöntemi değil ve şirketler hâlâ telif hakkı ihlali diyerek bunu kaldırtabilir
  • Başlık clickbait
    Bu çalışma şubatta başladı ve commit’lere bakınca Fable’ın yaptığı şeyin yalnızca en yeni commit’lerin küçük bir kısmı olduğu görülüyor. 2000 commit’in 19’u: https://github.com/ammaarreshi/Generals-Mac-iOS-iPad/commits...
    Üstelik Fable da olmayabilir. Opus’a düşürülmüş olması da mümkün
    Bu kadar sık yanlış bilgilendirme olması, Anthropic’in LLM iddialarına karşı beni daha şüpheci yapıyor. Web geliştirme iş akışlarında GPT 5.5 ile karşılaştırınca durum karşılıklı olarak bir o öne geçip bir bu öne geçiyor; yeniden etkinleştirildikten sonra test etmeye başladığım Fable için de aynı şey geçerliydi
    Düzgün herhangi bir LLM bu tür bir portu yapabilirmiş gibi geliyor. GLM 5.2 bile yapabilirdi; en azından benim devleti hacklemeye çalışan bir terörist mi yoksa biyolojik silah üretmeye çalışan biri mi olduğumu durmadan tahmin etmiyor, bu yüzden belki daha bile iyi olurdu
    İnsanların LLM’leri kıyaslayacak yeterli kaynağı yok, bu yüzden kullandıkları modelin tarihteki en iyisi olduğunu ve yepyeni iş akışları açtığını kolayca ima ediyorlar. Opus 4.6’dan beri neredeyse hiç ilerleme görmedim

    • Bu proje bir fork ve gerçekte yaptığı şey iOS desteği eklemek
      Depo sahibinin fork üzerindeki commit’leri 19 saat önce başlıyor; dolayısıyla o kısmın Fable ile yapılmış olması gayet makul. Ama iOS desteği eklemenin önceki modellerin yapamayacağı, yalnızca Fable’ın yapabileceği bir iş olup olmadığı bana da hiç net değil