5 puan yazan GN⁺ 2025-04-29 | 3 yorum | WhatsApp'ta paylaş
  • Architect of Ruin geliştirme ekibi başlangıçta Bevy motoru ve Rust ile geliştirmeye başladı, ancak pratik sorunlar nedeniyle Unity ve C#’a geçti
  • Rust ve Bevy’nin avantajlarına rağmen, iş birliği, üst düzey soyutlama ihtiyacı, sık API değişiklikleri, yapay zeka destekli öğrenme verimliliğinin düşmesi, modlama sınırlamaları gibi konular sorun yarattı
  • Ekip, deneme amacıyla 3 temel özelliği Unity’ye taşıdı; 3 gün içinde bunu başarıyla doğruladı ve 6 haftada tüm portlama sürecini tamamladı
  • Geçişin ardından kod miktarı azaldı, geliştirme hızı arttı ve ekosistem araçlarından yararlanmak mümkün hale gelince geliştirme memnuniyeti büyük ölçüde yükseldi
  • Rust ve Bevy’ye duyulan sevgi hâlâ büyük olsa da, projenin ihtiyaç duyduğu gereksinimleri karşılamak için gerçekçi bir seçim yapıldığını vurguluyorlar

Bevy ve Rust ile ilk geliştirme dönemi

  • Bevy’nin ECS modelinden ve Rust’a özgü derleme zamanı kontrollerinden keyif alarak hızlı refaktör ve yüksek kararlılık deneyimi yaşadılar
  • Tilemap, iskelet animasyonu, özel render pipeline gibi sistemleri Bevy ile doğrudan kendileri uyguladılar
  • Bevy topluluğunun tutkusu ve canlı tartışma kültürü onlara büyük ilham verdi

Emergent Problems: Beklenenden daha ciddi çıkan sorunlar

  • İş birliği sorunları: Rust’a yeni başlayan ekip üyeleri için Rust’ın karmaşıklığı öğrenme bariyeri oluşturdu ve katkı hızını düşürdü
  • Üst düzey soyutlama eksikliği
    • Oynanış fikirlerini hızla koda dökmekte zorlandılar
    • Hızlı prototipleme için gereken esneklik yetersiz kaldı
  • Sık API değişiklikleri: Bevy’nin hızlı gelişim temposu nedeniyle oluşan API istikrarsızlığı ve her güncellemede ortaya çıkan regresyon hataları yıpratıcı oldu
  • Yapay zeka destekli öğrenme eksikliği: C# ve Unity için yapay zeka destekli öğrenme kaynakları güçlüydü, ancak Rust ve Bevy’de bilgi eksikliği verimliliği düşürdü
  • Modlama sınırlamaları: Rust/Bevy ortamında güvenilir script yazımı ve ABI uyumluluğu sağlamanın zor olduğu sonucuna vardılar

Geçiş kararı: Unity deneyi

  • Unreal, Unity, Godot, Bevy ile devam etme ve kendi motorunu geliştirme seçeneklerini karşılaştırmalı olarak analiz ettiler
  • Unity; öğrenilebilirlik, üretkenlik, iş birliği kolaylığı ve modlama imkânı açısından en yüksek puanı aldı

%10 deneyi

  • Tilemap, karakter (Spine), UI kurulumunu içeren 3 temel görevi 3 hafta içinde test etmeyi planladılar
  • Sonuçta 3 görevin tamamını sadece 3 günde bitirerek geçiş kararı aldılar

Portlama süreci ve sonuçlar

  • 6 hafta boyunca tüm sistemleri ve içeriği Unity’de yeniden uyguladılar
  • Kod miktarında azalma, boilerplate’in ortadan kalkması ve geliştirme hızında artış yaşadılar
  • Yapay zeka destekli öğrenme iyileşti ve Unity ekosistemindeki araçlardan (AStar Pathfinding vb.) aktif biçimde yararlanabilir hale geldiler

Sonraki dönem

  • Architect of Ruin şu anda Unity tabanlı olarak geliştiriliyor ve fikirleri hızlıca uygulama ile yüksek üretkenlik korunuyor
  • Rust ve Bevy’ye duyulan derin saygı değişmemiş olsa da, proje için doğru seçimi yapmanın gerekli olduğunu vurguluyorlar
  • İleride Unity tabanlı uygulamanın ayrıntılarını ve portlama deneyimini ayrıca paylaşmayı planlıyorlar

Sonuç

  • Başlangıçta seçenekleri adil biçimde değerlendirememiş olduklarını kabul ediyorlar
  • Yön değiştirmek için zaman harcadılar ama sonuçta daha fazla zaman kazandıklarını düşünüyorlar
  • Geliştirme vizyonunu hayata geçirmek için içgüdünün ötesine geçen gerçekçi kararların önemli olduğunu fark ettiler

3 yorum

 
aer0700 2025-04-30

Muhtemelen Rust'u betik dili olarak kullanan bir GUI motoru vardır, ama prodüksiyon seviyesinde kullanılan bir şey var mı bilmiyorum. Rust ile oyun yapma konusunda ara sıra başarısızlık örnekleri? paylaşılıyor ama, hm... başarısızlık örneklerinin çıkmasını normal karşılayabilirim, fakat başarı örnekleriyle ilgili pek bir şey duymuyor olmamız biraz düşündürücü. İyi kullananlar da mutlaka bir yerlerdedir.

 
qwqwhs 2025-04-30

Tersine, iyi kullananlar zaten herkes bunu kadarını yapıyordur diye düşünüp paylaşmıyor olabilir mi?

 
GN⁺ 2025-04-29
Hacker News görüşleri
  • Rust ile bir oyun projesi yürütülüp başarısız olan bir örnek daha ortaya çıktı. Bu üzücü

    • Bir metaverse istemcisi yaklaşık 5 yıldır Rust ile geliştiriliyor ve bu çok uzun sürüyor
    • Başka biri benzer bir projeyi C#/Unity ile 2 yıl içinde tamamladı
    • Rust 3D oyun geliştirme kullanıcı tabanı çok küçük
    • Rust ile geliştirilmiş bir AAA oyun örneği yok ve performans sorunlarını çözen de olmadı
    • Kullanılan stack Rend3/Egui/Winit/Wgpu/Vulkan, ancak Vulkan dışında hepsinde çok hata var
    • Event loop'u sahiplenmek isteyen çok fazla farklı crate var
    • Crate'ler birkaç ayda bir refactor edilip API'leri sık sık bozuluyor
    • Rust'ta dereference etmek zor
    • Rust'ın tek sahip ve dereference için tutarlı bir yönteme ihtiyacı var
    • Rust trait'leri nesne değildir ve nesne hiyerarşisi kurmak için uygun değildir
  • Ticari oyun motorlarının oyun geliştirmeye neden hakim olduğuna dair iyi bir ders gibi geliyor

    • Oyun yapmak için yapılması gereken çok şey var, ancak bunların çoğu zaten çözülmüş problemler
  • Rust'ı C++ alternatifi olarak seviyorum ama çoğu proje için C++'ın uygun olmadığını düşünüyorum

    • Görünüşe göre birçok kişi Rust'ı daha verimli olacağını düşündüğü için seçiyor
  • Rust ile oyun geliştirmek frontier geliştirmeye benziyor ve çok iş gerektiriyor

    • Rust henüz hazır değil
  • Rust'ı seviyorum ama hızlı iterasyon zor

    • Bevy'yi denedim ama Godot'a geri döndüm
  • Bir projede Rust yerine Go'ya geçildi ve iterasyon hızı arttı

    • Kod daha kırılgan ama projenin doğası gereği bunun doğru seçim olduğunu düşünüyorum
  • Rust ekosistemindeki yüksek oynaklık beklenmedik bir dezavantaj

    • Crate'ler sık sık terk ediliyor ve bunun, insanların Rust'ı ana dil olarak kullanmak istemesinden kaynaklandığını düşünüyorum
  • Bir geliştirici oyun motorunu C ile yapıyor, oyunu ise Lua ile geliştiriyor

    • Oyun motoru ile oyun arasında net bir ayrım var
    • 'Sapiens' adlı oyun Steam'de başarıyla yayımlandı
  • Rust ile çalışmak neredeyse her zaman daha zor

    • Bu, kişisel deneyime dayanan bir görüş
  • Projenin amacı, kod yazmayan erkek kardeşin de katkıda bulunabilmesini sağlamaktı

    • Sürekli en güncel sürüme yükseltmek gerektiği hissediliyor
    • Unity kullanan stüdyolar, belirli hatalar düzeltilmedikçe sürümü sık sık yükseltmiyorlar