- 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
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.
Tersine, iyi kullananlar zaten herkes bunu kadarını yapıyordur diye düşünüp paylaşmıyor olabilir mi?
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ü
Ticari oyun motorlarının oyun geliştirmeye neden hakim olduğuna dair iyi bir ders gibi geliyor
Rust'ı C++ alternatifi olarak seviyorum ama çoğu proje için C++'ın uygun olmadığını düşünüyorum
Rust ile oyun geliştirmek frontier geliştirmeye benziyor ve çok iş gerektiriyor
Rust'ı seviyorum ama hızlı iterasyon zor
Bir projede Rust yerine Go'ya geçildi ve iterasyon hızı arttı
Rust ekosistemindeki yüksek oynaklık beklenmedik bir dezavantaj
Bir geliştirici oyun motorunu C ile yapıyor, oyunu ise Lua ile geliştiriyor
Rust ile çalışmak neredeyse her zaman daha zor
Projenin amacı, kod yazmayan erkek kardeşin de katkıda bulunabilmesini sağlamaktı