14 पॉइंट द्वारा GN⁺ 2025-01-09 | 9 टिप्पणियां | WhatsApp पर शेयर करें
  • 1 साल पहले मैंने Rust में 3D गेम डेवलप करने पर एक लेख लिखा था, और उसके बाद 1 साल तक इसके रुझान को देखते हुए यह फॉलो-अप लिखा है
  • अब भी Rend3, WGPU, Vulkan graphics stack का उपयोग कर रहा हूँ, और फिलहाल यह काफ़ी अच्छी तरह काम कर रहा है
  • 2024 में Rust में चल रहे कुछ बड़े गेम प्रोजेक्ट बंद हो गए
    • कुछ टीमों को ownership constraints बोझिल लगे
    • कुछ टीमों ने compile time आदि को लेकर असंतोष जताया
  • arewegameyet.rs को जुलाई 2024 के बाद से बहुत कम अपडेट मिला है, इसलिए संबंधित जानकारी कुछ पीछे छूटती हुई दिखती है
  • Rend3 का डेवलपमेंट बंद हो गया, इसलिए मैं स्वयं fork किए गए rend3-hp को maintain कर रहा हूँ
    • इसे wgpu, winit, egui आदि के latest versions के अनुसार अपडेट किया गया है, और पुराने race condition bug को भी ठीक किया गया है
    • GPU performance को अधिकतम तक खींचने पर अब भी CPU bottleneck की समस्या आती है। NVidia 3070 पर GPU load 25% होने पर ही CPU time कम पड़ने लगता है
    • Vulkan के bindless और कई Vulkan queues की ज़रूरत है, और संभव है कि 2025 में wgpu इसका समर्थन करे
    • अगर maximum performance की आवश्यकता नहीं है, तो यह stack पर्याप्त रूप से काम करता है
  • Orbit, Renderling जैसे अन्य rendering projects भी थे, लेकिन उनका सक्रिय maintenance नहीं हो रहा है
    • Renderling में कुछ संभावना है, लेकिन अभी यह उपयोग के लिए तैयार नहीं है, और इसका केवल एक ही developer है
  • Rust में 3D काम करते समय, graphics stack की निचली परतों को सीधे maintain करने में बहुत समय लगता है
    • winit, wgpu, egui आदि का API बदलते ही हर बार उसके अनुसार ढलना पड़ता है, और टूटे हुए हिस्सों को सब ठीक करना पड़ता है
    • एक चीज़ बदलने पर बाकी चीज़ों को साथ आने में 1-2 महीने लग जाते हैं
  • Rust ecosystem में आम तौर पर दिखने वाली समस्या यह है कि safe Rust syntax के बजाय अपनी allocation scheme इस्तेमाल करने पर multi-threading bugs ढूँढना कठिन हो जाता है
  • rendering architecture की सीमाएँ
    • अधिकांश renderers spatial information को अलग से manage नहीं करते, और प्रति light सभी objects पर computation करने वाली संरचना (O(N*M)) बहुत प्रचलित है
    • बड़े scenes को संभालने के लिए spatial partitioning (scene graph) जैसी अवधारणा चाहिए, और इससे टकराव यह है कि फिर game engine स्तर की संरचना (जैसे Bevy) की ओर जाना पड़ता है
    • Bevy अपने ECS system के कारण Rust के ownership model का बहुत अधिक उपयोग नहीं करता, और Bevy का अपना तरीका अपनाने के लिए मजबूर करता है
  • निष्कर्षतः, Rust में जटिल 3D काम करना संभव है, लेकिन इसके लिए बहुत अधिक मेहनत चाहिए

9 टिप्पणियां

 
ahwjdekf 2025-01-11

स्वामित्व के नियम सीमित हैं, लेकिन उन्हें बायपास करने के लिए तरह-तरह के data structures हैं, इसलिए यह थोड़ा अस्थायी जुगाड़ जैसा लगता है: बिल्कुल, यही तो है। कहते हैं safe है, फिर unsafe चाहिए, कहते हैं immutable है, फिर mutable भी हो जाता है, पूरा गड़बड़झाला है। अच्छा हुआ। Rust सफल हो ही नहीं सकता।

 
dreamexist 2025-01-10

2D गेम का क्या?

 
aer0700 2025-01-10

Rust-आधारित गेम इंजन आना चाहिए..

 
bbulbum 2025-01-10

गेम इंजन के बिना गेम डेवलपमेंट करें तो, शायद किसी भी भाषा में कुछ ऐसा ही महसूस होगा..हह

 
coremaker 2025-01-10

Rust मज़बूत engine, core, framework आदि बनाने के लिए तो उपयुक्त है, लेकिन

application layer बनाने के लिए इतनी सिफारिश नहीं करना चाहूँगा।

 
bbulbum 2025-01-10

यूज़रनेम देखकर भरोसा और बढ़ जाता है।

 
gurugio 2025-01-10

मैंने भी Rust में थोड़े समय के लिए काम किया था और किताब लिखने के बारे में भी कुछ रिसर्च की थी, लेकिन आजकल मेरा भरोसा धीरे-धीरे कम होता हुआ लग रहा है.
मैं Simple is best पर मज़बूती से विश्वास करता हूँ, लेकिन इसे देखते हुए लगता है जैसे मैं इसके उलट किसी भाषा को देख रहा हूँ.
खैर, अब जबकि यह kernel में भी शामिल हो चुका है, इसलिए यह गायब हो जाएगा ऐसा नहीं लगता.

 
GN⁺ 2025-01-09
Hacker News की राय
  • Tiny Glade, Rust में लिखे गए एक प्रभावशाली गेम का उदाहरण है

    • ऐसा लगता है कि Rust गेम डेवलपमेंट का ज़्यादा फोकस वास्तविक गेम्स की बजाय अधूरे crates रिलीज़ करने पर है
  • मैं Rust सीख रहा हूँ और जल्द ही एक नई टीम में शामिल होने वाला हूँ

    • Rust मज़ेदार है, लेकिन मैं अभी इतना सक्षम नहीं हूँ कि भाषा पर बहुत मज़बूत राय रख सकूँ
    • मुझे लगता है कि भाषा का डिज़ाइन इतना सुरुचिपूर्ण नहीं है
    • ownership के कड़े नियम हैं, लेकिन उन्हें बायपास करने के लिए कई data structures मौजूद हैं, इसलिए यह थोड़ा ad-hoc सा लगता है
  • pattern matching और enum types से C++ प्रोग्रामर प्रभावित हो सकते हैं, लेकिन OCaml/Haskell प्रोग्रामरों के लिए यह उतना प्रभावशाली नहीं है

  • C++ कठिन और जटिल है, लेकिन अधिक आधुनिक भाषा इस्तेमाल कर पाना ताज़गीभरा लगता है

    • अगर आप GC का performance overhead वहन नहीं कर सकते, तो Rust उस gap को भरता है, लेकिन बात वहीं खत्म नहीं होती
    • नया प्रोजेक्ट शुरू करने वालों के लिए यह ज़रूरी नहीं कि Rust, आधुनिक C++ से हमेशा बेहतर विकल्प हो
  • यह देखकर हैरानी हुई कि Godot का ज़िक्र नहीं किया गया

    • Godot, GDExtension के ज़रिए Rust सहित कई भाषाओं को सपोर्ट करता है
    • C++ आधिकारिक रूप से सपोर्टेड है, और D, Go, Haxe, Rust, Swift को community support मिलता है
  • मैं अपने 2.5D Ray-caster engine को Rust में फिर से बनाना चाहता हूँ

    • मौजूदा implementation C में है और लगभग 500 lines of code का है
    • मैंने refactoring की कोशिश की, लेकिन Ray-caster टूट गया
    • C मज़ेदार है, लेकिन उसमें बहुत से pitfalls हैं
    • संबंधित repository का लिंक दिया गया है