- Gracias a un entorno de código abierto llamado AthenaEnv, ahora es posible ejecutar código JavaScript en PlayStation 2
- Este entorno integra el motor QuickJS para interpretar JavaScript y ofrece APIs para desarrollo de juegos como renderizado, entrada, sonido y manejo de archivos
- Los desarrolladores pueden crear juegos con una estructura básica de archivos como main.js, athena.ini y athena.elf, y ejecutarlos en el emulador PCSX2
- Los proyectos terminados pueden empaquetarse como archivos .iso para distribuirse como un solo archivo, y se presenta el proceso de conversión de zip a iso
- Es un ejemplo de la combinación entre desarrollo para consolas retro y tecnologías web, y sugiere el potencial de expansión del desarrollo de juegos basado en JavaScript
Resumen del proyecto AthenaEnv
- AthenaEnv es un entorno de ejecución de JavaScript para PS2 que ofrece un entorno de desarrollo centrado en APIs en lugar de un motor de juegos tradicional
- Internamente modifica e integra QuickJS para interpretar código JavaScript
- Está estructurado para que un programa nativo de PS2 (escrito en C) ejecute código JavaScript
- Las APIs disponibles incluyen renderizado, carga de assets, manejo de entrada, entrada/salida de archivos y reproducción de sonido
- El nivel de abstracción es similar al de p5.js o Raylib, por lo que funciones como detección de colisiones o gestión de escenas deben implementarse manualmente
Proceso para ejecutar juegos JavaScript en PS2
- Para la ejecución se usa el emulador PCSX2, y es necesario activar la opción “Enable host filesystem” en la configuración
- La carpeta del proyecto incluye los siguientes archivos
athena.elf: ejecutable de Athena
athena.ini: configuración del punto de entrada (main.js) y del logo de arranque, entre otros
main.js, src/, assets/: código del juego y recursos
- Al ejecutar
athena.elf en el emulador, el juego se inicia, y los cambios al código JavaScript se reflejan de inmediato tras un reset
Procedimiento para crear un archivo .iso
- Se explica cómo empaquetar el proyecto en una única imagen ISO para su distribución
- Archivos obligatorios:
athena.elf, athena.ini, main.js, src/, ATHA_000.01, SYSTEM.CNF
- Se seleccionan todos los archivos, se comprimen en zip y luego se convierten a iso usando el sitio mconverter.eu
- Después de la conversión, puede ejecutarse incluso sin la opción “Enable host filesystem”
- Para automatizar la conversión se presenta la herramienta CLI GENISO, basada en Python (https://github.com/scottvr/GENISO)
- Permite convertir zip a iso sin dependencias externas
Ejemplo Hello World
- El ejemplo básico implementa carga de fuentes e imágenes, estructura del game loop, animación de sprites, manejo de entrada y renderizado de texto
- Usa módulos integrados de Athena como
Screen, Font, Image y Pads
- Ejecuta el loop por fotogramas con el método
Screen.display()
- Detecta la entrada del control con
Pads.get(0)
- Controla la animación por fotogramas con propiedades del sprite como
startx y endx
- Muestra FPS o texto con
font.print()
- El volteo del sprite se implementa asignando un valor negativo a
width, y requiere calcular un offset para corregir la posición
Soporte 3D y desarrollo futuro
- Athena soporta tanto 2D como 3D, pero actualmente se está desarrollando una versión v4 centrada en 3D
- Por ahora predominan los ejemplos orientados a 2D, aunque existen algunas demos en 3D
- El código y los materiales de apoyo se ofrecen a través del repositorio oficial en GitHub y la comunidad de Discord
Conclusión
- AthenaEnv es un entorno innovador que permite crear juegos de PS2 solo con JavaScript
- También permite que desarrolladores web se acerquen al desarrollo de juegos para consolas retro, y
muestra la expansión y compatibilidad del ecosistema JavaScript
1 comentarios
Comentarios en Hacker News
Parece que los proyectos creados por Fabrice Bellard realmente tienen un impacto amplísimo
Está genial que, gracias a QuickJS, incluso en sistemas antiguos como la PS2 sea posible revivir el homebrew a través de AthenaEnv
En alguna parte de la cadena de dependencias de muchísimos proyectos FOSS hay código suyo
Al ver que el autor mencionó lo incómodo que era usar un sitio web para convertir ZIP a ISO, hice yo mismo un script de Python multiplataforma sin dependencias externas
Se puede ver en ZIP2ISO.py
Me impresionó que estuviera “vibe-codeado” con Gemini3 Pro sin leer la especificación ISO9660
mkisofstambién podría hacer lo mismoAthenaEnv es interesante. Parece estar estructurado usando QuickJS como intérprete de JS y envolviendo las bibliotecas nativas del sistema de la PS2
Me pregunto si habrá un proyecto similar para distribuir juegos JS Canvas (WebGPU/WebGL) también en consolas modernas (Switch/2, PS5, Xbox)
Los SDK de consolas están bajo NDA, así que casi no hay información pública, y la mayoría de los juegos usan Unreal o Unity
En PC o móvil es relativamente simple porque se puede ejecutar fácilmente con Electron o WebView
El applet de navegador WebKit de Switch tiene el JIT desactivado, así que solo se usa para fines limitados como el e-manual
Me preguntaba si para ejecutarlo en una consola real habría que grabar el ISO en un disco
Hay un proyecto similar con QuickJS para Nintendo Switch llamado nx.js
Eso sí, cambiar de un motor v8/JIT a QuickJS implicaría una pérdida de rendimiento considerable
Ahora ni siquiera la PS2 puede escapar del alcance de JavaScript
AthenaEnv es el proyecto sucesor de Enceladus, basado en Lua y hecho por el mismo desarrollador
Se usa mucho no solo para juegos, sino también para apps homebrew, y en Enceladus hay ejemplos como RETROLauncher y POPSLoader, mientras que en Athena está OSD-XMB
Pensé que quizá también sería posible crear un navegador web para PS2 y abrir el juego como si fuera un sitio web
Justo estaba buscando algo así; qué proyecto tan genial, gracias
La gente hace de todo para no usar .gdscript ni Godot