14 poin oleh GN⁺ 2025-01-09 | 9 komentar | Bagikan ke WhatsApp
  • Setahun lalu saya menulis tentang pengembangan game 3D dengan Rust, dan ini adalah catatan setelah mengikuti perkembangannya selama satu tahun
  • Masih menggunakan stack grafis Rend3, WGPU, dan Vulkan, dan saat ini semuanya bekerja cukup baik
  • Pada 2024, beberapa proyek game besar yang dikembangkan dengan Rust dihentikan
    • Ada tim yang merasa terbebani oleh batasan ownership
    • Ada juga tim yang menyampaikan keluhan karena waktu kompilasi dan alasan lainnya
  • arewegameyet.rs jarang diperbarui sejak Juli 2024, sehingga informasi terkait cenderung tertinggal
  • Rend3 sudah tidak lagi dikembangkan, sehingga penulis memelihara fork sendiri bernama rend3-hp
    • Sudah diperbarui agar sesuai dengan versi terbaru wgpu, winit, egui, dan lain-lain, serta memperbaiki bug race condition lama
    • Saat performa GPU didorong semaksimal mungkin, masalah bottleneck CPU masih terjadi. Pada NVidia 3070, waktu CPU menjadi tidak mencukupi saat beban GPU berada di 25%
    • Dibutuhkan bindless Vulkan dan beberapa queue Vulkan, dan ada kemungkinan wgpu akan mendukung ini pada 2025
    • Jika tidak membutuhkan performa puncak, stack ini bekerja dengan cukup layak
  • Ada proyek rendering lain seperti Orbit dan Renderling, tetapi tidak dipelihara secara aktif
    • Renderling masih terlihat paling menjanjikan, tetapi belum siap digunakan, dan pengembangnya hanya satu orang
  • Saat mengerjakan 3D dengan Rust, banyak waktu habis untuk memelihara sendiri lapisan bawah stack grafis
    • Setiap kali API winit, wgpu, egui, dan lainnya berubah, semuanya harus disesuaikan dan semua bagian yang rusak harus diperbaiki
    • Saat satu komponen berubah, komponen lain butuh 1-2 bulan untuk menyusul
  • Ini adalah masalah yang sering muncul di ekosistem Rust: ketika memakai skema alokasi buatan sendiri alih-alih sintaks Rust yang aman, bug di lingkungan multithread menjadi sulit ditemukan
  • Keterbatasan struktur rendering
    • Banyak renderer tidak mengelola informasi spasial secara terpisah, dan sering memakai struktur yang menghitung semua objek untuk setiap sumber cahaya (O(N*M))
    • Untuk menangani scene berskala besar, dibutuhkan konsep pembagian ruang (scene graph), dan ini kemudian berbenturan dengan kebutuhan akan struktur setingkat game engine (misalnya Bevy)
    • Bevy tidak banyak memanfaatkan model ownership Rust karena menggunakan sistem ECS-nya sendiri, dan memiliki kelemahan karena memaksakan pendekatan khas Bevy
  • Kesimpulannya, melakukan pekerjaan 3D yang kompleks dengan Rust itu memungkinkan, tetapi membutuhkan upaya besar

9 komentar

 
ahwjdekf 2025-01-11

Meski ada aturan kepemilikan yang membatasi, ada berbagai struktur data untuk mengakalinya sehingga terasa agak seperti solusi tambal sulam: betul, ini dia masalahnya. Katanya aman tapi tetap butuh unsafe, katanya immutable tapi malah bisa jadi mutable, benar-benar berantakan. Rasain. Rust tidak mungkin bisa berhasil.

 
dreamexist 2025-01-10

Bagaimana dengan game 2D?

 
aer0700 2025-01-10

Harus ada game engine berbasis Rust..

 
bbulbum 2025-01-10

Kalau mengembangkan game tanpa game engine, rasanya akan seperti ini apa pun bahasa yang dipakai.. hehe

 
coremaker 2025-01-10

Rust untuk pengembangan game: kondisi setelah 1 tahun

Rust cocok untuk membuat engine, core, framework, dan sejenisnya yang tangguh,

namun

saya tidak begitu ingin merekomendasikannya untuk membangun lapisan aplikasi.

 
bbulbum 2025-01-10

Melihat nama penggunanya, tingkat kepercayaannya jadi meningkat.

 
gurugio 2025-01-10

Saya juga sempat bekerja singkat dengan Rust dan melakukan sedikit riset karena ingin menerbitkan buku, tetapi belakangan ini rasanya keyakinan saya makin berkurang.
Saya sangat percaya bahwa Simple is best, tetapi rasanya seperti melihat bahasa yang bertolak belakang.
Bagaimanapun, karena sudah masuk ke kernel, sepertinya bahasa ini tidak akan menghilang.

 
GN⁺ 2025-01-09
Opini Hacker News
  • Tiny Glade adalah contoh game mengesankan yang ditulis dengan Rust

    • Pengembangan game dengan Rust tampaknya lebih berfokus pada merilis crate yang belum matang daripada benar-benar membuat game
  • Sedang belajar Rust dan akan bergabung dengan tim baru

    • Rust memang menyenangkan, tetapi belum cukup mahir untuk punya pendapat yang kuat soal bahasa ini
    • Merasa desain bahasanya tidak terlalu elegan
    • Ada aturan ownership yang membatasi, tetapi juga ada berbagai struktur data untuk mengakalinya, sehingga terasa agak seperti solusi tambal sulam
  • Programmer C++ mungkin akan terkesan dengan pattern matching dan tipe enum, tetapi bagi programmer OCaml/Haskell hal itu tidak terlalu mengesankan

  • C++ sulit dan kompleks, tetapi rasanya segar karena bisa memakai bahasa yang lebih modern

    • Jika tidak bisa menanggung overhead performa dari GC, Rust mengisi celah itu, tetapi itu bukan akhir dari segalanya
    • Bagi orang yang memulai proyek baru, masih diragukan apakah ini pasti pilihan yang lebih baik daripada C++ modern
  • Terkejut karena Godot tidak disebutkan

    • Godot mendukung banyak bahasa, termasuk Rust, melalui GDExtension
    • C++ didukung secara resmi, sedangkan D, Go, Haxe, Rust, dan Swift didukung oleh komunitas
  • Ingin membuat ulang engine Ray-caster 2.5D miliknya dalam Rust

    • Implementasi saat ini dibuat dalam C dan terdiri dari sekitar 500 baris kode
    • Pernah mencoba refactor, tetapi Ray-caster-nya jadi rusak
    • C itu menyenangkan, tetapi punya banyak jebakan
    • Menyertakan tautan repositori terkait