- 90s.dev एक नया वेब-आधारित गेम मेकर API है, जो 90 के दशक की शैली वाला GUI ऐप बनाने का अनुभव देता है
- यह प्लेटफ़ॉर्म सीधा गेम इंजन या गेम मेकर नहीं है, बल्कि गेम, गेम इंजन और गेम निर्माण टूल बनाने के लिए API प्रदान करता है
- HTML Canvas आधारित, 320x180 स्क्रीन, WebGL2 सपोर्ट, और web worker के ज़रिये सुरक्षा व performance इसकी प्रमुख विशेषताएँ हैं
- TypeScript-first SDK और कई भाषाओं के wasm modules import करने के सपोर्ट के साथ तेज़ और scalable prototyping संभव है
- उपयोगकर्ता अपने ऐप बनाकर उन्हें GitHub या NPM पर share या load कर सकते हैं, और इसका उद्देश्य developer community के साथ collaboration और extensibility को बढ़ावा देना है
90s.dev जारी होने का महत्व
- 90s.dev वेब पर चलने वाला एक नए प्रकार का गेम मेकर API प्लेटफ़ॉर्म है
- यह 90 के दशक की शैली वाला GUI ऐप निर्माण वातावरण देता है, और गेम, गेम इंजन, तथा गेम मेकर टूल बनाने के लिए API प्रदान करता है
- इसका लक्ष्य ऐसा ecosystem बनाना है जहाँ कोई भी HTML Canvas पर pixel art, sprite, map जैसे गेम एसेट और टूल आसानी से बना और share कर सके
मुख्य विशेषताएँ और विज़न
प्लेटफ़ॉर्म का मूल परिचय
- 90s.dev browser में चलता है, और 320x180 (16:9) resolution के साथ web window को भरने वाली स्क्रीन देता है
- सभी ऐप web worker environment में चलते हैं, जिससे बेहतर security और performance मिलती है
- WebGL2 offscreen canvas के माध्यम से अधिकतम 60fps पर गेम चल सकते हैं
- GitHub और NPM पर hosted app modules को आसानी से load और deploy किया जा सकता है
- VSCode-अनुकूल TypeScript SDK तेज़ prototyping को सपोर्ट करता है
- WebAssembly (wasm) में build किए गए कई भाषाओं के modules के साथ compatibility उपलब्ध है
डिफ़ॉल्ट रूप से उपलब्ध ऐप
- डिफ़ॉल्ट रूप से pixel art, sprite creation tools, map editor जैसे गेम एसेट बनाने वाले बेसिक ऐप उपलब्ध हैं
- sound और music editing tools अभी उपलब्ध नहीं हैं, लेकिन कोई भी उन्हें खुद बनाकर publish/share कर सकता है
- बने हुए ऐप और टूल iframe या link के ज़रिये सभी उपयोगकर्ताओं के साथ share किए जा सकते हैं
प्रेरणा और अंतर
संदर्भित गेम डेवलपमेंट टूल
- pico8: minimalism पर केंद्रित, एकल भाषा सपोर्ट
- tic80: pico8 की कई सीमाएँ हटाता है
- love2d: बाहरी IDE की आवश्यकता
- picotron: operating system architecture का उपयोग
- 90s.dev एक तरह से meta pico8 है, और TypeScript जोड़े गए love2d या vertical expansion पर केंद्रित tic80 के अधिक करीब है
GUI नवाचार और तकनीकी विवरण
लेआउट सिस्टम
- manual placement और resizing की झंझट कम करने के लिए एक सरल लेकिन शक्तिशाली auto layout system लागू किया गया है
- view (API) सीधे स्क्रीन पर draw करता है और child view tree structure का उपयोग करता है
Ref सिस्टम
- view की properties (size, children, background color आदि) को watchable pointer (ref) के माध्यम से manage किया जाता है
- सभी properties को reference object (ref) दिया जाता है, जो property changes को अपने-आप detect करके लागू करता है
- यह मौजूदा React/Vue ref से पूरी तरह अलग रूप में डिज़ाइन किया गया है
Composites (composite view की अवधारणा)
- JSX में string tags (lowercase) और value tags (uppercase) की भूमिका उलटकर implementation और usage के अलगाव को मज़बूत किया गया है
- abstract views को global table में register किया जाता है और सिस्टम के अन्य हिस्सों में स्वतंत्र रूप से इस्तेमाल किया जा सकता है
- उदाहरण: colorpicker view डिफ़ॉल्ट implementation देता है, लेकिन डेवलपर चाहें तो इसे अपनी पसंद की शैली से बदल सकते हैं
- GUI ऐप development में उच्च लचीलापन और extensibility मिलती है
ऐप डिप्लॉयमेंट और कम्युनिटी सहयोग
ऐप डिप्लॉयमेंट का बदला हुआ तरीका
- पहले अपना database-आधारित
net/ share drive इस्तेमाल किया जाता था
- अब NPM/GitHub से CDN के ज़रिये सीधे module hosting और importing का सपोर्ट है
- उदाहरण:
/os/fs/ghb/someuser/project@1.0.0/some/file.js
- service worker के उपयोग से कई स्रोतों से loading mechanism पूरा किया गया है
भागीदारी और सहयोग
- operating-system-जैसे design के तहत ज़रूरी apps (default apps) के अलावा community apps development को प्रोत्साहन दिया जाता है
- issue tracker, forum, wiki (सभी GitHub repo पर) के माध्यम से संवाद और सहयोग को सपोर्ट किया जाता है
- इश्यू: feature requests और bug reports
- फ़ोरम: project announcements और discussions
- विकी: project collections और curation
ऐप शेयरिंग
- ऐप शेयरिंग
/os/#app फ़ॉर्मेट के links से संभव है
- community-केंद्रित तरीके से apps, libraries, assets की स्वतंत्र रचना और प्रसार को बढ़ावा दिया जाता है
निष्कर्ष और दिशा
- 90s.dev एक ऐसा API प्लेटफ़ॉर्म है जो गेम मेकर ecosystem को डिज़ाइन और परिभाषित करता है
- इसका लक्ष्य ऐसा विस्तारयोग्य वेब गेम निर्माण वातावरण बनाना है जहाँ कोई भी आसानी से ऐप बना, deploy और उपयोग कर सके
- यह community collaboration और open platform दर्शन पर आधारित भविष्य-उन्मुख गेम development tool है
2 टिप्पणियां
गेम इंजन खुद कैसा होगा, यह जानने की उत्सुकता हो रही है।
Hacker News राय
एक अनुभव साझा किया कि फरवरी के किसी दिन रात 2 बजे उठकर बस कोडिंग शुरू कर दी, अब और इंतज़ार करते-करते ऊब चुके थे, लगातार कोड लिखते हुए API-आधारित game maker tool, game engine और game बना डाला, और इस प्रक्रिया में समझ आया कि उनकी असली दिलचस्पी API design में है; इस तरह अपना जुनून खोजकर उसमें पूरी तरह जुट जाने वाले लोग बहुत शानदार लगते हैं
तारीफ़ के लिए धन्यवाद कहा, और अफ़सोस जताया कि project का सार ठीक से समझाया नहीं जा सका; असल में API ही सबसे दिलचस्प हिस्सा है, लेकिन वह ऊपर से दिखाई नहीं देता, इसलिए खीझ हुई; लगा कि API की इनोवेटिव उपयोगिता दिखाने वाले और उदाहरण आने तक इंतज़ार करना चाहिए था; launch कुछ ज़्यादा ही जल्दबाज़ी में कर दिया, इसका पछतावा है
बताया कि वे इस project के लेखक हैं, feedback के लिए धन्यवाद दिया; साफ़ महसूस होता है कि launch जल्दी कर दिया गया; कई उठे हुए मुद्दों पर सुधार कर रहे हैं और कुछ महीनों में फिर लौटने की बात कही
यह बिल्कुल भी जल्दी किया गया launch नहीं है, ऐसा मानते हैं; इसे बेहद शानदार और हद से ज़्यादा over-engineered project बताते हुए तारीफ़ की; मशहूर bike shed उपमा के साथ इसे बेहतरीन कहा; अपना अलग reactive system तक बना डालने पर ज़बरदस्त हैरानी जताई
Show HN के लिए इसे बिल्कुल सही समय माना; Hello World tour देखकर सहज रूप से समझ आया कि project क्या है; अगर पहले से PICO-8 और React का अनुभव हो तो यह और भी मज़ेदार लगता है; 16:9 aspect ratio चुनना भी समझदारी भरा लगा; PICO-8 का चौकोर ratio थोड़ा अटपटा लगता है
जल्दी launch करने के लिए धन्यवाद दिया, और बार-बार release करने की रणनीति की ज़ोरदार सिफ़ारिश की; कहा कि 10,000 बार दोहराना ही सफलता का रास्ता है, एक कोशिश तो बस शुरुआत है
हौसला बढ़ाया कि यह बहुत जल्दी किया गया launch नहीं है; लेखक बहुत अच्छा काम कर रहे हैं, ऐसा समर्थन दिया
भले ही बहुत गहराई से नहीं सोचा था, लेकिन इस retro एहसास की ओर चुपके से ज़्यादा खिंचाव होने की बात कबूल की; शायद पुराने, ज़्यादा सरल और सुकूनभरे समय से जुड़ी तसल्ली ऐसे projects को देखकर फिर जाग उठती है
पूछा कि paint app काम करता है या नहीं; Firefox और Chrome में कोशिश की, लेकिन color चुनने के बाद click करने पर कुछ भी draw नहीं होता; console में भी कोई error नहीं है; अलग बात के तौर पर 90s वाला एहसास बहुत सफलतापूर्वक दोबारा बनाने पर हैरानी जताई; पहले इसे 70~80s terminal vibe समझा था, लेकिन ध्यान से देखने पर अहसास हुआ कि 90s सच में ऐसे ही दिखते थे; आगे यह कैसे बढ़ेगा, इसे लेकर उत्साह जताया
भ्रम पैदा करने के लिए माफ़ी मांगी; बताया कि अभी केवल color picker तक ही बनाया गया है, उसके आगे का हिस्सा अभी implement नहीं हुआ; लगता है जल्द ही एक घंटे के भीतर इसे पूरा किया जा सकेगा; साथ ही कहा कि मूल इरादा 90s की भावना के साथ GUI app development की खुशी और ताकत को फिर से बनाना था; असुविधा नहीं, सिर्फ़ हैरत रखना चाहते थे, इसलिए इसका नाम 90s.dev रखा
कहा कि संभव है यह अभी implement ही न हुआ हो; window के बाएँ ऊपर वाले “hash” button पर click करके “View Source” चुनने पर दिखता है कि UI सिर्फ़ mock किया गया है; scroll area में केवल पैटर्न जैसे draw किए गए code ही दिखते हैं
मेरे यहाँ भी यह काम नहीं करता
project को पूरी तरह समझ नहीं पाए, लेकिन उसके vibe से बहुत प्रभावित हुए; यह दिलचस्प लगा कि सिर्फ़ एक भावनात्मक माहौल और visual elements भी लोगों की भावनाओं पर गहरा असर डालकर अधिक रुचि जगा सकते हैं
कहा कि उन्होंने भी समझाने के तरीके पर सोचा; वे एक ज़्यादा आसान pico8 बनाना चाहते थे, इसलिए 320x180 design और prototype बनाया; साथ ही VS Code की सारी सुविधा और TypeScript support भी चाहिए था, इसलिए अंत में pico8 के tabs में मौजूद चीज़ों को बनाकर deploy किए जा सकने वाले platform के रूप में इसे सोचा; और अब सोचते हैं कि यह भी शायद कुछ ज़्यादा जल्दी launch कर दिया
vibe पसंद है, लेकिन 16:9 ratio और 90s PC का मेल उतना सही नहीं लगता; CRT monitors का लगभग चौकोर ratio और उसका अलग एहसास ज़्यादा पसंद है
धन्यवाद दिया, और कहा कि किसी चीज़ को समझाना बहुत कठिन काम है; स्वीकार किया कि यह पोस्ट भी अंततः इस कोशिश का हिस्सा थी कि उन्होंने क्या बनाया है, इसे जितना हो सके छोटा करके समझाया जाए; लेकिन छोटा version भी धुंधला ही रह जाता है, इसलिए अब तो हार मानने जैसा मन है
project बहुत शानदार लगा, लेकिन शुरुआत थोड़ी कठिन महसूस हुई; सुझाव दिया कि mini game बनाने के तरीके पर एक सरल walkthrough हो तो अच्छा रहेगा
धन्यवाद कहते हुए समझाया कि अभी game build करने का तरीका app build tutorial जैसा ही है, बस custom view बनाकर
drawmethod override करना होता है; performance के लिए OffscreenCanvas बनाकर इस्तेमाल करना और भी अच्छा है; अभी WebGL2 को आसान बनाकर लपेटने वाला API नहीं दिया गया है; आगे चलकर beginners के लिए पूरा game खुद बनाने वाला tutorial ज़रूर बनाएँगे; फिलहाल focus apps पर है, इसलिए पहले game maker tools (sprite, map आदि) के development पर ज़ोर है; Hello World tutorial का link साझा कियाproject को बेहद दिलचस्प बताया; लगा जैसे तुरंत बचपन में लौट गए हों; pico8 भी पसंद है, लेकिन वे desktop और GUI के साथ बड़े हुए, इसलिए pico8 उन्हें एक पीढ़ी पहले का सा लगता है; यह project मानो फिर से CD खरीदने वाली nostalgia जगाता है
Pico8 developer द्वारा बनाए गए Picotron का भी ज़िक्र किया; बताया कि यह Pico8 जैसा है, लेकिन थोड़ा कम प्रतिबंधों वाला desktop OS है; खुद ने इस्तेमाल नहीं किया, सिर्फ़ GIFs देखे हैं, लेकिन project paradigm काफ़ी मिलता-जुलता लगता है; “platform” उन्मुखता, जिसमें अंदर pico8 जैसा कुछ बनाया जा सके, इस project से मिलती-जुलती लगी; लगा कि अलग रास्तों से सही, दोनों एक ही आदर्श की ओर बढ़ रहे हैं
Getting Started guide के पहले step में ही अटक गए;
helloworld.zipको local में download करने के बाद web परfiler.app.jsखोला और mount button दबाकर drive name मेंhelloworld/appडाला, लेकिन कुछ नहीं हुआ; zip file को 90s.dev instance पर upload करने का तरीका उलझाऊ लगाfeedback के लिए धन्यवाद दिया; कहा कि संभवतः आप Firefox इस्तेमाल कर रहे हैं; यह feature
showDirectoryPickerपर निर्भर करता है, जिसे Firefox support नहीं करता, इसलिए Chrome इस्तेमाल करने की सलाह दी; यह भी बताया कि drive name में path नहीं, सिर्फ़ नाम डालना चाहिए (जैसेfoo), और guide को जल्द ठीक करने का वादा किया; फिर समझाया कि उसके बादfoo/helloworld.app.jsअसली local path से जुड़ जाएगाकहा कि 90s वाला एहसास सच में बहुत पसंद आया, खासकर font बहुत प्रभावशाली लगा; महसूस किया कि 80s शैली के pixel art की तुलना में 90s design उन्हें कहीं ज़्यादा आकर्षित करता है
landing page की आलोचना की; लगा कि project को ‘game maker’ कहकर साथ ही ‘game maker नहीं’ कहना विरोधाभासी है और उलझन पैदा करता है; कहा कि terminology में एकरूपता नहीं है
याद दिलाया कि naming अपने आप में बहुत कठिन समस्या है; इसे computer science की सबसे कठिन समस्याओं में से एक माना, cache invalidation के साथ इसका ज़िक्र किया