- AthenaEnv नाम के एक open source environment की मदद से अब PlayStation 2 पर JavaScript code चलाना संभव हो गया है
- यह environment QuickJS engine को embed करता है, JavaScript को interpret करता है, और rendering, input, sound, file handling जैसी game development APIs देता है
- डेवलपर सिर्फ main.js, athena.ini, athena.elf जैसी basic file structure के साथ गेम लिख सकते हैं और उन्हें PCSX2 emulator में चला सकते हैं
- तैयार प्रोजेक्ट को .iso file के रूप में package करके single-file format में distribute किया जा सकता है, जिसके लिए zip→iso conversion प्रक्रिया भी बताई गई है
- यह retro console development और web technologies के मेल का एक उदाहरण है, जो JavaScript-आधारित game development की विस्तार संभावनाओं की ओर इशारा करता है
AthenaEnv प्रोजेक्ट का अवलोकन
- AthenaEnv एक PS2 के लिए JavaScript runtime environment है, जो पारंपरिक game engine की जगह API-केंद्रित development environment देता है
- अंदरूनी तौर पर यह QuickJS को modify और embed करके JavaScript code को interpret करता है
- इसे इस तरह बनाया गया है कि PS2 native program (C में लिखा गया) JavaScript code चला सके
- उपलब्ध APIs में rendering, asset loading, input handling, file I/O, sound playback शामिल हैं
- abstraction का स्तर p5.js या Raylib जैसा है, इसलिए collision detection या scene management जैसी चीजें खुद implement करनी होंगी
PS2 पर JavaScript गेम चलाने की प्रक्रिया
- इसे चलाने के लिए PCSX2 emulator का उपयोग होता है, और settings में “Enable host filesystem” option चालू करना होगा
- प्रोजेक्ट फ़ोल्डर में ये फ़ाइलें शामिल होती हैं
athena.elf: Athena executable file
athena.ini: entry point (main.js) और boot logo settings जैसी configuration
main.js, src/, assets/: game code और resources
- emulator में
athena.elf चलाने पर गेम शुरू हो जाता है, और JavaScript code बदलने के बाद reset करके तुरंत बदलाव देखे जा सकते हैं
.iso file बनाने की प्रक्रिया
- distribution के लिए प्रोजेक्ट को एक single ISO image में पैक करने का तरीका बताया गया है
- ज़रूरी फ़ाइलें:
athena.elf, athena.ini, main.js, src/, ATHA_000.01, SYSTEM.CNF
- सभी फ़ाइलों को चुनकर zip में compress करें, फिर mconverter.eu साइट से उसे iso में convert करें
- conversion के बाद “Enable host filesystem” setting के बिना भी इसे चलाया जा सकता है
- इस conversion को automate करने के लिए Python-आधारित CLI tool GENISO(https://github.com/scottvr/GENISO) का भी परिचय दिया गया है
- यह बिना external dependency के zip को iso में convert कर सकता है
Hello World उदाहरण
- basic example में font और image loading, game loop बनाना, sprite animation, input handling, text rendering को implement किया गया है
- Athena के built-in modules जैसे
Screen, Font, Image, Pads का उपयोग होता है
Screen.display() method से frame-by-frame loop चलाया जाता है
Pads.get(0) से controller input detect किया जाता है
- sprite के
startx, endx जैसी properties से frame-based animation control होता है
font.print() से FPS या text output दिखाया जाता है
- sprite flip करने के लिए width में negative value दी जाती है, और position correction के लिए offset calculation की ज़रूरत पड़ती है
3D support और आगे का विकास
- Athena 2D और 3D दोनों को support करता है, लेकिन 3D-केंद्रित v4 version पर काम चल रहा है
- अभी ज़्यादातर examples 2D-केंद्रित हैं, हालांकि कुछ 3D demos भी मौजूद हैं
- आधिकारिक GitHub repository और Discord community के ज़रिए code और support materials उपलब्ध हैं
निष्कर्ष
- AthenaEnv एक ऐसा अभिनव environment है जो सिर्फ JavaScript से PS2 गेम बनाने देता है
- यह web developers को भी retro console के लिए game development तक पहुँच देता है, और
JavaScript ecosystem की विस्तार क्षमता और compatibility को दिखाता है
1 टिप्पणियां
Hacker News टिप्पणियाँ
ऐसा लगता है कि Fabrice Bellard के प्रोजेक्ट्स का असर वाकई बहुत व्यापक है
QuickJS की वजह से PS2 जैसे पुराने सिस्टम पर भी AthenaEnv के ज़रिये homebrew का फिर से उभार संभव होना शानदार है
कई FOSS projects की dependency chain में कहीं न कहीं उसका code शामिल है
लेखक ने ZIP को ISO में बदलने वाली वेबसाइट इस्तेमाल करने की असुविधा का ज़िक्र किया, तो मैंने खुद एक cross-platform Python script बना दी जिसमें कोई external dependency नहीं है
इसे ZIP2ISO.py पर देखा जा सकता है
यह दिलचस्प लगा कि ISO9660 spec पढ़े बिना Gemini3 Pro के साथ इसे “vibe-coded” किया गया
AthenaEnv दिलचस्प है। लगता है यह QuickJS को JS interpreter की तरह इस्तेमाल करता है और PS2 की native system libraries को wrap करता है
सोच रहा हूँ कि क्या modern consoles (Switch/2, PS5, Xbox) पर भी JS Canvas(WebGPU/WebGL) games deploy करने के लिए ऐसा कोई मिलता-जुलता प्रोजेक्ट है
console SDKs NDA के तहत होते हैं, इसलिए सार्वजनिक जानकारी लगभग नहीं के बराबर है, और ज़्यादातर games Unreal या Unity इस्तेमाल करते हैं
PC या mobile पर Electron या WebView से चलाना आसान है, इसलिए वहाँ मामला तुलनात्मक रूप से सरल है
Switch का WebKit browser applet JIT disabled होने की वजह से e-manual जैसे सीमित उपयोगों तक ही सिमटा है
सोच रहा था कि असली console पर चलाने के लिए क्या ISO को disc पर burn करना पड़ेगा
QuickJS इस्तेमाल करने वाले ऐसे ही एक मिलते-जुलते प्रोजेक्ट के रूप में Nintendo Switch के लिए nx.js है
हालांकि v8/JIT engine से QuickJS पर आने पर performance hit काफ़ी बड़ा होगा
अब PS2 भी JavaScript की पकड़ से बच नहीं सकता
AthenaEnv उसी developer के Lua-आधारित Enceladus का successor project है
games ही नहीं, homebrew apps में भी इसका खूब उपयोग होता है; Enceladus में RETROLauncher और POPSLoader, और Athena में OSD-XMB जैसे उदाहरण हैं
लगा कि शायद PS2 के लिए web browser बनाकर games को website की तरह खोला जा सकता है
मैं इसी तरह की चीज़ ढूँढ रहा था, यह सच में शानदार project है, धन्यवाद
लोग .gdscript या Godot इस्तेमाल न करने के लिए कुछ भी कर लेते हैं