- AthenaEnv라는 오픈소스 환경을 통해 PlayStation 2에서 자바스크립트 코드 실행이 가능해짐
- 이 환경은 QuickJS 엔진을 내장해 자바스크립트를 해석하고, 렌더링·입력·사운드·파일 처리 등 게임 개발용 API를 제공
- 개발자는 main.js, athena.ini, athena.elf 등 기본 파일 구조만으로 게임을 작성하고, PCSX2 에뮬레이터에서 실행 가능
- 완성된 프로젝트는 .iso 파일로 패키징해 단일 파일 형태로 배포할 수 있으며, 이를 위해 zip→iso 변환 절차가 소개됨
- 레트로 콘솔 개발과 웹 기술의 결합을 보여주는 사례로, 자바스크립트 기반 게임 개발의 확장 가능성을 시사
AthenaEnv 프로젝트 개요
- AthenaEnv는 PS2용 자바스크립트 실행 환경으로, 전통적인 게임 엔진이 아닌 API 중심의 개발 환경 제공
- 내부적으로 QuickJS를 수정·내장해 자바스크립트 코드를 해석
- PS2 네이티브 프로그램(C로 작성)이 자바스크립트 코드를 실행하도록 구성
- 제공 API는 렌더링, 에셋 로딩, 입력 처리, 파일 입출력, 사운드 재생 등을 포함
- p5.js나 Raylib 수준의 추상화로, 충돌 감지나 씬 관리 등은 직접 구현 필요
PS2에서 자바스크립트 게임 실행 과정
- 실행에는 PCSX2 에뮬레이터가 사용되며, 설정에서 “Enable host filesystem” 옵션을 활성화해야 함
- 프로젝트 폴더에는 다음 파일이 포함됨
-
athena.elf: Athena 실행 파일 -
athena.ini: 진입점(main.js) 및 부트 로고 설정 등 구성 -
main.js,src/,assets/: 게임 코드 및 리소스
-
- 에뮬레이터에서
athena.elf를 실행하면 게임이 구동되며, 자바스크립트 코드 수정 후 리셋으로 즉시 반영 가능
.iso 파일 생성 절차
- 배포를 위해 프로젝트를 단일 ISO 이미지로 묶는 방법이 설명됨
- 필수 파일:
athena.elf,athena.ini,main.js,src/,ATHA_000.01,SYSTEM.CNF - 모든 파일을 선택해 zip으로 압축 후, mconverter.eu 사이트를 이용해 iso로 변환
- 변환 후에는 “Enable host filesystem” 설정 없이도 실행 가능
- 필수 파일:
- 변환 자동화를 위해 Python 기반 CLI 도구 GENISO(https://github.com/scottvr/GENISO)가 소개됨
- 외부 의존성 없이 zip을 iso로 변환 가능
Hello World 예제
- 기본 예제에서는 폰트와 이미지 로드, 게임 루프 구성, 스프라이트 애니메이션, 입력 처리, 텍스트 렌더링을 구현
-
Screen,Font,Image,Pads등 Athena 내장 모듈 사용 -
Screen.display()메서드로 프레임 단위 루프 실행 -
Pads.get(0)으로 컨트롤러 입력 감지 - 스프라이트의
startx,endx등 속성으로 프레임 단위 애니메이션 제어 -
font.print()로 FPS나 텍스트 출력
-
- 스프라이트 반전은 width에 음수값을 부여해 구현하며, 위치 보정을 위해 오프셋 계산 필요
3D 지원 및 향후 개발
- Athena는 2D와 3D 모두 지원하나, 3D 중심의 v4 버전이 개발 중
- 현재는 2D 중심 예제가 주를 이루며, 일부 3D 데모가 존재
- 공식 GitHub 저장소와 Discord 커뮤니티를 통해 코드와 지원 자료 제공
- Sonic Infinite Runner PS2 포트: https://github.com/DevWill-hub/Sonic-Infinite-Runner-PS2
- AthenaEnv: https://github.com/DanielSant0s/AthenaEnv
- Athena 템플릿: https://github.com/JSLegendDev/Athena-PS2-Template
결론
- AthenaEnv는 자바스크립트만으로 PS2 게임을 제작할 수 있는 혁신적 환경
- 웹 개발자도 레트로 콘솔용 게임 개발에 접근할 수 있게 하며,
자바스크립트 생태계의 확장성과 호환성을 보여주는 사례임