9 poin oleh GN⁺ 2025-11-22 | 1 komentar | Bagikan ke WhatsApp
  • 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 Athena
    • athena.ini: konfigurasi seperti entry point (main.js) dan pengaturan logo boot
    • main.js, src/, assets/: kode game dan resource
    Iklan
  • Menjalankan athena.elf di 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”
  • Untuk mengotomatisasi konversi, diperkenalkan tool CLI berbasis Python GENISO(https://github.com/scottvr/GENISO)
    • Dapat mengonversi zip ke iso tanpa dependensi eksternal
Iklan

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()
  • Pembalikan sprite diimplementasikan dengan memberi nilai negatif pada width, dan diperlukan perhitungan offset untuk koreksi posisi

Dukungan 3D dan pengembangan ke depan

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

 
GN⁺ 2025-11-22
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

    • Saya hampir tidak punya kemampuan Photoshop jadi tidak melakukannya, tapi saya ingin menulis di meme xkcd 2347 sesuatu seperti “diimplementasikan oleh Fabrice Bellard setengah tertidur hanya untuk membuktikan bahwa itu bisa”
      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

    • Sepertinya hal yang sama juga bisa dilakukan dengan mkisofs
  • 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

    • Ada contoh game buatan JS, Cross Code, yang di-port ke konsol. Proses detailnya dirangkum di posting blog ini
    • Saya ingat SDK Nintendo 3DS dan Wii U punya framework mirip Electron berbasis teknologi web, tetapi di Switch tampaknya dihentikan
      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

    • Sepertinya bisa jika digabungkan dengan FreeDVDBoot
    • Kombinasi FreeMcBoot di memory card + USB flash drive adalah cara yang populer. Ini juga bisa mengurangi keausan optical drive
    • Untuk menjalankannya dari disk bakar memang perlu hack konsol, tetapi lewat USB juga bisa. Mungkin ada yang tetap membakarnya hanya demi sensasi disk asli
    • Ada juga pendapat bahwa lebih baik memakai emulasi optical drive daripada disk fisik
  • Sebagai proyek serupa yang memakai QuickJS, ada nx.js untuk Nintendo Switch

    • Saat ini proyek itu hanya mendukung canvas2d, tetapi secara teori rasanya mungkin membuat layer untuk mengonversi game WebGPU atau WebGL ke 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

    • Tapi karena kebutuhan memori minimum Chrome adalah 4GB, agar muat di RAM 32MB milik PS2, ukurannya harus diperkecil menjadi 1/128
  • 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

    • Saya suka Godot, tapi itu tidak mungkin dijalankan di PS2
    • Sebenarnya membangun dengan Godot lalu mengekspornya ke PS2 bukanlah hal yang sederhana