शुद्ध WASM में चलने वाला Unity-स्टाइल गेम एडिटर
(raverie-us.github.io)- Macromedia/Adobe Flash के पुराने अनुभव को फिर से जीवित करने का लक्ष्य रखने वाला हल्का गेम इंजन
- सभी प्लेटफ़ॉर्म पर चलने के लिए डिज़ाइन किया गया, और इसका एकमात्र आउटपुट लक्ष्य शुद्ध WASM है
- आउटपुट में executable या glue code आदि शामिल नहीं होते, और Emscripten का उपयोग नहीं किया गया है
- import और export की सूची PlatformCommunication.hpp में स्पष्ट रूप से परिभाषित है
- ऐसा ढांचा जिसे ब्राउज़र सहित किसी भी प्लेटफ़ॉर्म पर आसानी से लागू किया जा सकता है
अवलोकन
- हल्का (light-weight) गेम इंजन, जिसका लक्ष्य पुराने Macromedia/Adobe Flash अनुभव को फिर से बनाना है
आर्किटेक्चर
- इसे किसी भी प्लेटफ़ॉर्म पर चलने के लिए बनाया गया है, और इसका एकमात्र आउटपुट लक्ष्य शुद्ध WASM है
- आउटपुट में executable, glue code आदि शामिल नहीं होते, और Emscripten का उपयोग नहीं करता
- import और export की सूची PlatformCommunication.hpp में साफ़-सुथरे ढंग से परिभाषित है, इसलिए ब्राउज़र सहित किसी भी प्लेटफ़ॉर्म पर इसे आसानी से लागू किया जा सकता है
1 टिप्पणियां
Hacker News टिप्पणियां
वाह, ये तो Zero Engine बनाने वाले लोग हैं? बहुत पहले DigiPen के समर कैंप में इसे इस्तेमाल किया था, और Zilch में प्रोग्रामिंग करना वाकई मजेदार था
मैंने Galaga क्लोन खेलने वाला AI भी बनाया था। इस Unity वाली घटना के बाद सोच रहा था कि Zero का क्या हुआ, लेकिन लगता है यह फिर से वापस आएगा, इसलिए सच में उत्साहित हूं
संदर्भ के लिए एक बात और जोड़ दूं: इंटीग्रेटेड ग्राफिक्स वाले एक पक्के तौर पर लो-एंड लैपटॉप पर यह एक और शानदार स्लाइडशो की तरह चलता है
पुराने Mate 20 Pro पर भी आजमाया, लेकिन यह “Downloading runtime” पर अटका हुआ दिखा। लगा कि शायद अस्थिर 4G की वजह नहीं है, तो USB से लैपटॉप पर
chrome://inspectखोलकर टैब देखा, औरUncaught (in promise) Error: Needs OES_texture_float_linear to functionएरर आया। वैसे यह एक दार्शनिक सवाल बन जाता है कि सिर्फ यह बताने के लिए एरर स्क्रीन बनाना वाकई जरूरी है या नहीं कि आप इससे वैसे भी खेल नहीं पाएंगेकॉन्सेप्ट पसंद आया। लेकिन मेरी GPU और ब्राउजर latency की वजह से रो रहे हैं, और यह किसी प्रभावशाली स्लाइडशो जैसा दिख रहा है
कुछ कोशिशों के बाद आखिरकार शुरुआती गोले को चुन पाया। शुरू में तो यह भी पक्का नहीं था कि loading खत्म हुई है या नहीं। हालांकि मैं Firefox पर 1.8GHz Celeron, इंटीग्रेटेड GPU और 8GB RAM इस्तेमाल कर रहा हूं, इसलिए हाई-एंड से तो काफी दूर है
क्योंकि यह native game engine को WASM में port किया गया है, समस्या framerate limiting code में थी जो browser timing API के साथ ठीक से मेल नहीं खा रहा था: https://raverie-us.github.io/raverie-engine/
“हमारे engine में Spaces नाम का एक unique feature था, जिससे अलग-अलग worlds/levels को instantiate किया जा सकता था” वाला हिस्सा मुझे तो Godot engine के काम जैसा ही दिखता है[1]
उस engine का भी browser (WASM) target है। [1]: https://godotengine.org/
लगता है project में इसकी priority ज्यादा नहीं है। थोड़ा test किया तो चलता तो दिखा :), लेकिन native execution से धीमा है
सोच रहा हूं कि क्या कोई ऐसा WASM development flow है जो browser के Web API और pure WASM को JS layer के बिना, या कम cost पर, interact करने दे
कभी-कभी https://github.com/WebAssembly/proposals देखता हूं, लेकिन बहुत confusing लगता है। type imports proposal अभी कई साल दूर लगता है, और लगभग पूरा हो चुका GC proposal GC languages के लिए है, browser↔WASM के लिए नहीं लगता। component model browser use case से दूर लगता है, और JS String Builtins JS strings को तेज करता है, DOM को नहीं। ECMAScript module integration WASM modules को ES modules में बदलता है, लेकिन Web API ES modules नहीं है, इसलिए मदद नहीं करता। Contributors की बातचीत देखने पर कभी-कभी लगता है कि ऐसी functionality देना उनकी priority में भी नहीं है और plan में भी नहीं, और ज्यादातर लोगों के लिए cloud/crypto जैसे uses के लिए WASI और component model ज्यादा important लगते हैं
हालांकि जैसा आपने कहा, यह उनकी priority नहीं लगता। उम्मीद है कभी न कभी संभव होगा
अगर आप सभी relevant Web APIs import कर लें, तो individual API calls के बीच JS objects को वैसे ही pass कर सकते हैं, इसलिए बीच वाला JS लगभग unnecessary हो सकता है। असल में JS की जरूरत बस शुरुआती WASM module initialize करते समय पड़ती है
शानदार project है। high-resolution display पर UI को scale करने का कोई तरीका है?
2:1 display पर fonts में jagged edges दिखते हैं। browser zoom को 50% पर set करने से UI sharp हो जाता है, लेकिन सब कुछ बहुत छोटा हो जाता है और इस्तेमाल करना मुश्किल हो जाता है
window.innerWidth * window.devicePixelRatio, और height कोwindow.innerHeight * window.devicePixelRatioपर set करनाउसके बाद CSS से canvas को screen पर maximize कर दें
resources (memory, network, CPU) के लिहाज से यह सस्ता होता, accessibility support आसान होता, और rendering भी आसान होती
Trevor! DigiPen में grammar के जरिए programming language design पढ़ाने वाला CS elective मुझे बहुत पसंद था
जिन students को आपने पढ़ाया था, उनमें से काफी अब Minecraft पर काम कर रहे हैं। अभी Minecraft scripting API design करते हुए, मैं तब सीखी basics और DigiPen के समय की बहुत-सी चीजों का इस्तेमाल कर रहा हूं। आपको अब भी शानदार काम करते देखकर अच्छा लगा
जिस scripting interface पर आप काम कर रहे हैं, उसे जरूर देखना चाहूंगा। मैंने पहले Minecraft mods बहुत बनाए थे, और हमेशा किसी न किसी form की dynamic scripting चाहता था
सच में शानदार। इस क्षेत्र में pure WASM based product देखकर अच्छा लगा। हालांकि मेरे M1 Mac Pro पर यह काफी हकलाता है
एक सवाल है: क्या यह NES पर भी चलेगा? refurbished front-loading model है और parts ज्यादातर original हैं, लेकिन मैंने थोड़ी और RAM जोड़ दी है
ऊपर glue gun से चिपकाई है, और case को लाल रंग से paint करके उस पर कुछ toy soldiers भी लगा दिए हैं
सिर्फ default ball scene खोलने पर भी Radeon Pro 560X और लगभग 4K setup में GPU पर बहुत जोर पड़ रहा है
camera rotate करने भर से framerate बहुत कम हो जाता है। किसी को पता है कि WebGL optimization issue हो सकता है?
क्योंकि यह native game engine को WASM में port किया गया है, समस्या framerate limiting code में थी जो browser timing API के साथ ठीक से मेल नहीं खा रहा था: https://raverie-us.github.io/raverie-engine/