14 puan yazan GN⁺ 2025-01-09 | 9 yorum | WhatsApp'ta paylaş
  • 1 yıl önce Rust ile 3D oyun geliştirme hakkında bir yazı yazmıştı ve o zamandan beri geçen 1 yıl içindeki gidişatı değerlendiren bir geri bakış
  • Hâlâ Rend3, WGPU, Vulkan grafik yığınını kullanıyor ve şu anda oldukça iyi çalışıyor
  • 2024'te Rust ile yürütülen bazı büyük oyun projeleri durduruldu
    • Sahiplik (ownership) kısıtlarını yük olarak gören ekipler de vardı
    • Derleme süreleri gibi nedenlerle memnuniyetsizlik dile getiren ekipler de vardı
  • arewegameyet.rs Temmuz 2024'ten beri seyrek güncellendiği için, ilgili bilgiler geriden gelme eğiliminde
  • Rend3 geliştirmesi durdurulduğu için, doğrudan fork'ladığı rend3-hp'yi bakımda tutuyor
    • Bunu wgpu, winit, egui gibi bileşenlerin en güncel sürümlerine uyarladı ve eski bir race condition hatasını düzeltti
    • GPU performansı mümkün olduğunca kullanıldığında hâlâ CPU darboğazı yaşanıyor. NVidia 3070'te GPU yükü %25 iken CPU süresi yetersiz kalıyor
    • Vulkan'ın bindless özelliği ile birden fazla Vulkan kuyruğu gerekiyor; wgpu bunun desteğini 2025'te sunabilir
    • En yüksek performans gerekmiyorsa bu yığın yeterli şekilde çalışıyor
  • Orbit, Renderling gibi başka render projeleri de vardı, ancak aktif biçimde bakım almıyorlar
    • Renderling yine de bir miktar potansiyel taşıyor, ancak henüz kullanıma hazır değil ve geliştiricisi yalnızca bir kişi
  • Rust ile 3D çalışma yaparken, grafik yığınının alt katmanlarını doğrudan bakımda tutmak çok zaman alıyor
    • winit, wgpu, egui gibi bileşenlerin API'leri her değiştiğinde bunlara uyum sağlamak ve bozulan her şeyi düzeltmek gerekiyor
    • Biri değiştiğinde diğerlerinin yetişmesi 1-2 ay sürebiliyor
  • Rust ekosisteminde sık görülen bir sorun olarak, güvenli Rust sözdizimi yerine özel tahsis yöntemleri kullanıldığında çok iş parçacıklı ortamlarda hata bulmak zorlaşıyor
  • Render mimarisinin sınırlamaları
    • Çoğu renderer uzamsal bilgiyi ayrı yönetmiyor ve her ışık için tüm nesneler üzerinde hesaplama yapan bir yapı (O(N*M)) yaygın olarak kullanılıyor
    • Büyük sahneleri ele almak için uzamsal bölümlendirme (scene graph) kavramı gerekiyor; bu da oyun motoru düzeyinde bir yapıya (ör. Bevy) gitme sorununa çarpıyor
    • Bevy, kendi ECS sistemi nedeniyle Rust'ın sahiplik modelinden büyük ölçüde yararlanmıyor ve Bevy tarzını dayatma dezavantajına sahip
  • Sonuç olarak, Rust ile karmaşık 3D çalışmalar yapmak mümkün, ancak çok fazla emek gerektiriyor

9 yorum

 
ahwjdekf 2025-01-11

Kısıtlayıcı sahiplik kuralları var ama bunları aşabilecek çeşitli veri yapıları olduğu için biraz geçici çözüm gibi hissettiriyor: Evet, mesele tam da bu. Güvenli deniyor ama unsafe gerekiyor, değişmez deniyor ama değişebilir de oluyor, tam bir keşmekeş. Oh olsun. Rust başarılı olamaz.

 
dreamexist 2025-01-10

Peki ya 2D oyunlar?

 
aer0700 2025-01-10

Rust tabanlı bir oyun motoru çıkmalı..

 
bbulbum 2025-01-10

Oyun motoru olmadan oyun geliştirmek herhalde hangi dili kullanırsanız kullanın böyle hissettiriyordur.. hehe

 
coremaker 2025-01-10

Rust,
sağlam motorlar, çekirdekler, framework'ler vb. oluşturmak için uygun olsa da

uygulama katmanını inşa etmek amacıyla
pek tavsiye etmek istemem.

 
bbulbum 2025-01-10

Takma adı görünce güvenilirliği artıyor.

 
gurugio 2025-01-10

Ben de Rust ile kısa da olsa iş yaptım ve kitap çıkarmayı da düşünerek biraz araştırma yapmıştım; ama bugünlerde giderek daha az emin olduğumu hissediyorum.
Simple is best ilkesine sıkı sıkıya inanıyorum, ama sanki bunun tam tersi bir dili görüyorum.
Sonuçta artık kernel’e de girdiğine göre ortadan kaybolacak gibi görünmüyor yine de.

 
GN⁺ 2025-01-09
Hacker News görüşleri
  • Tiny Glade, Rust ile yazılmış etkileyici bir oyuna örnek

    • Rust ile oyun geliştirme, gerçek oyunlardan çok tamamlanmamış crate'ler yayımlamaya daha fazla odaklanıyor gibi görünüyor
  • Rust öğreniyor ve yeni bir ekibe katılmak üzere

    • Rust eğlenceli, ancak dil hakkında güçlü fikirler ileri sürecek kadar yetkin değil
    • Dil tasarımının pek zarif olmadığını düşünüyor
    • Kısıtlayıcı sahiplik kuralları var, ancak bunları aşmak için çeşitli veri yapıları bulunması biraz geçici çözüm hissi veriyor
  • Desen eşleme ve enum türleri C++ programcılarını etkileyebilir, ancak OCaml/Haskell programcıları için pek etkileyici değil

  • C++ zor ve karmaşık, ama daha modern bir dil kullanabilmek ferahlatıcı

    • GC'nin performans ek yükünü karşılayamıyorsanız Rust bu boşluğu dolduruyor, ancak hikâye burada bitmiyor
    • Yeni bir projeye başlayan biri için modern C++'tan mutlaka daha iyi bir seçim olup olmadığı şüpheli
  • Godot'dan bahsedilmemesine şaşırmış

    • Godot, GDExtension üzerinden Rust dahil birçok dili destekliyor
    • C++ resmi olarak destekleniyor; D, Go, Haxe, Rust ve Swift ise topluluk tarafından destekleniyor
  • Kendi 2.5D ray-caster motorunu Rust ile yeniden yapmak istiyor

    • Mevcut uygulama C ile yazılmış ve yaklaşık 500 satır koddan oluşuyor
    • Refactor etmeyi denedi ama ray-caster bozuldu
    • C eğlenceli ama çok sayıda tuzak barındırıyor
    • İlgili depo bağlantısını paylaşıyor