- 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
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
unsafegerekiyor, değişmez deniyor ama değişebilir de oluyor, tam bir keşmekeş. Oh olsun. Rust başarılı olamaz.Peki ya 2D oyunlar?
Rust tabanlı bir oyun motoru çıkmalı..
Oyun motoru olmadan oyun geliştirmek herhalde hangi dili kullanırsanız kullanın böyle hissettiriyordur.. hehe
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.
Takma adı görünce güvenilirliği artıyor.
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 bestilkesine 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.
Hacker News görüşleri
Tiny Glade, Rust ile yazılmış etkileyici bir oyuna örnek
Rust öğreniyor ve yeni bir ekibe katılmak üzere
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ı
Godot'dan bahsedilmemesine şaşırmış
Kendi 2.5D ray-caster motorunu Rust ile yeniden yapmak istiyor