Anda Bisa Membuat Game PS2 dengan JavaScript
(jslegenddev.substack.com)- Melalui lingkungan open-source bernama AthenaEnv, kini kode JavaScript dapat dijalankan di PlayStation 2
- Lingkungan ini menanamkan engine QuickJS untuk menginterpretasikan JavaScript, serta menyediakan API untuk pengembangan game seperti rendering, input, suara, dan pemrosesan file
- Pengembang dapat menulis game hanya dengan struktur file dasar seperti main.js, athena.ini, athena.elf, lalu menjalankannya di emulator PCSX2
- Proyek yang sudah selesai bisa dipaketkan sebagai file .iso untuk didistribusikan dalam bentuk satu file, dan prosedur konversi zip→iso juga diperkenalkan
- Ini menjadi contoh penggabungan pengembangan konsol retro dan teknologi web, sekaligus menunjukkan potensi perluasan pengembangan game berbasis JavaScript
Gambaran umum proyek AthenaEnv
- AthenaEnv adalah lingkungan eksekusi JavaScript untuk PS2, yang menyediakan lingkungan pengembangan berbasis API alih-alih game engine tradisional
- Secara internal, AthenaEnv memodifikasi dan menanamkan QuickJS untuk menginterpretasikan kode JavaScript
- Program native PS2 (ditulis dalam C) dikonfigurasikan untuk mengeksekusi kode JavaScript
- API yang disediakan mencakup rendering, pemuatan aset, penanganan input, input/output file, dan pemutaran suara
- Tingkat abstraksinya setara dengan p5.js atau Raylib, sehingga hal seperti deteksi tabrakan atau manajemen scene tetap perlu diimplementasikan sendiri
Proses menjalankan game JavaScript di PS2
- Untuk menjalankannya digunakan emulator PCSX2, dan pada pengaturan perlu mengaktifkan opsi “Enable host filesystem”
- Folder proyek berisi file-file berikut
athena.elf: file eksekusi Athenaathena.ini: konfigurasi seperti entry point (main.js) dan pengaturan logo bootmain.js,src/,assets/: kode game dan resource
- Menjalankan
athena.elfdi emulator akan menyalakan game, dan perubahan pada kode JavaScript bisa langsung diterapkan dengan reset
Prosedur membuat file .iso
- Dijelaskan cara mengemas proyek menjadi satu image ISO untuk distribusi
- File wajib:
athena.elf,athena.ini,main.js,src/,ATHA_000.01,SYSTEM.CNF - Pilih semua file lalu kompres menjadi zip, kemudian gunakan situs mconverter.eu untuk mengubahnya menjadi iso
- Setelah dikonversi, game bisa dijalankan tanpa pengaturan “Enable host filesystem”
- File wajib:
- Untuk mengotomatisasi konversi, diperkenalkan tool CLI berbasis Python GENISO(https://github.com/scottvr/GENISO)
- Dapat mengonversi zip ke iso tanpa dependensi eksternal
Contoh Hello World
- Dalam contoh dasar, diimplementasikan pemuatan font dan gambar, penyusunan game loop, animasi sprite, penanganan input, dan rendering teks
- Menggunakan modul bawaan Athena seperti
Screen,Font,Image,Pads - Menjalankan loop per frame dengan metode
Screen.display() - Mendeteksi input controller dengan
Pads.get(0) - Mengontrol animasi per frame melalui properti sprite seperti
startx,endx - Menampilkan FPS atau teks dengan
font.print()
- Menggunakan modul bawaan Athena seperti
- Pembalikan sprite diimplementasikan dengan memberi nilai negatif pada width, dan diperlukan perhitungan offset untuk koreksi posisi
Dukungan 3D dan pengembangan ke depan
- Athena mendukung 2D maupun 3D, tetapi versi v4 yang berfokus pada 3D sedang dikembangkan
- Saat ini contoh yang ada masih didominasi 2D, meski sudah ada beberapa demo 3D
- Kode dan materi dukungan tersedia melalui repositori GitHub dan komunitas Discord resmi
- Port Sonic Infinite Runner PS2: https://github.com/DevWill-hub/Sonic-Infinite-Runner-PS2
- AthenaEnv: https://github.com/DanielSant0s/AthenaEnv
- Template Athena: https://github.com/JSLegendDev/Athena-PS2-Template
Kesimpulan
- AthenaEnv adalah lingkungan inovatif yang memungkinkan pembuatan game PS2 hanya dengan JavaScript
- Ini memungkinkan developer web ikut mengakses pengembangan game untuk konsol retro, serta menunjukkan
ekspansi dan kompatibilitas ekosistem JavaScript
1 komentar
Opini Hacker News
Proyek-proyek buatan Fabrice Bellard tampaknya memang punya dampak yang sangat luas
Keren rasanya bahwa berkat QuickJS, kebangkitan homebrew di sistem lama seperti PS2 jadi memungkinkan lewat AthenaEnv
Di suatu titik dalam rantai dependensi banyak proyek FOSS, pasti ada kodenya
Setelah melihat penulis menyebut repotnya memakai situs web yang mengubah ZIP menjadi ISO, saya malah membuat sendiri skrip Python lintas platform tanpa dependensi eksternal
Bisa dilihat di ZIP2ISO.py
Menarik bahwa itu di-"vibe-code" dengan Gemini3 Pro tanpa membaca spesifikasi ISO9660
AthenaEnv menarik. Tampaknya strukturnya menggunakan QuickJS sebagai interpreter JS dan membungkus library sistem native milik PS2
Saya penasaran apakah ada proyek serupa untuk mendistribusikan game JS Canvas(WebGPU/WebGL) di konsol modern(Switch/2, PS5, Xbox)
Karena SDK konsol terikat NDA, informasi publik hampir tidak ada, dan kebanyakan game memakai Unreal atau Unity
Di PC atau mobile relatif lebih sederhana karena bisa dijalankan dengan mudah lewat Electron atau WebView
Applet browser WebKit di Switch menonaktifkan JIT, jadi hanya dipakai untuk penggunaan terbatas seperti e-manual
Saya sempat penasaran apakah untuk menjalankannya di konsol sungguhan harus membakar ISO ke disk
Sebagai proyek serupa yang memakai QuickJS, ada nx.js untuk Nintendo Switch
Hanya saja, jika mengganti engine v8/JIT dengan QuickJS, penurunan performanya akan besar
Sekarang bahkan PS2 pun tidak bisa lolos dari cengkeraman JavaScript
AthenaEnv adalah proyek penerus dari Enceladus berbasis Lua yang dibuat oleh pengembang yang sama
Selain untuk game, ini juga banyak dipakai untuk aplikasi homebrew; contoh di Enceladus ada RETROLauncher dan POPSLoader, sedangkan di Athena ada OSD-XMB
Saya juga berpikir, bukankah mungkin membuat browser web untuk PS2 lalu membuka game sebagai situs web
Saya memang sedang mencari hal seperti ini, proyeknya benar-benar keren, terima kasih
Orang-orang benar-benar akan melakukan apa saja demi tidak memakai .gdscript atau Godot