내 게임을 실행 파일 하나로
PHP도 Docker도 아무것도 설치되어 있지 않은 사람에게 게임을 주고 싶을 때, JumPHP는 Linux와 Windows용으로 내려받아 바로 실행할 수 있는 파일 하나를 만들어 줘요. PHP, SDL, OpenGL, OpenAL이 모두 들어 있어요.
내 컴퓨터에 JumPHP 프로젝트(내 컴퓨터에서)와 Docker가 필요해요. Claude에게 "내 게임을 실행 파일로 만들어 줘"라고 부탁하면 대신 해 줘요.
bin/jumphp export:standalone mon-jeu # Linux: games/mon-jeu/dist/standalone/mon-jeu-linux-x86_64
bin/jumphp export:standalone mon-jeu --windows # Windows: mon-jeu-windows-x86_64.exe
bin/jumphp export:standalone mon-jeu --linux --windows
어떻게 만들어질까요
- PHP는 StaticPHP(micro)의 PHP예요. PHP 8.5를 실행 파일 하나로 만든 것이고, JumPHP의 확장(SDL과 이미지·사운드·폰트 모듈, OpenGL, OpenAL, gd, zip…)이 모두 안에 컴파일되어 있어요.
- 내 게임(코드, 이미지, 사운드, 엔진)은 PHAR 아카이브 형태로 맨 끝에 붙어요.
이 PHP는 모든 게임에서 같아요. Linux에서는 한 번 만들거나(약 15분) JumPHP의 공개 릴리스에서 내려받아 ~/.jumphp/standalone에 보관해요. 그 이후에는 실행 파일을 몇 초 만에 만들 수 있어요.
플레이어의 컴퓨터에서
처음 실행할 때 게임을 캐시에 풀고(1초), 이후에는 바로 시작해요. 저장 파일과 옵션은 플레이어의 데이터 폴더에 저장돼요.
| Linux | Windows | |
|---|---|---|
| 게임 | ~/.cache/jumphp/ |
%LOCALAPPDATA%\JumPHP\ |
| 저장 파일 | ~/.local/share/<게임 id>/ |
%APPDATA%\<게임 id>\ |
Linux에서는 2013년 이후의 모든 배포판(glibc 2.17)에서 동작하고, 다른 Linux 게임처럼 컴퓨터의 화면 표시(X11 또는 XWayland), OpenGL, 사운드(PulseAudio, PipeWire, ALSA)를 사용해요. Windows(10 이상)에서는 설치할 것이 없어요.
알아 두면 좋은 점
- 파일은 서명되어 있지 않아요. Windows가 "Windows의 PC 보호" 창을 띄우면 추가 정보를 누른 뒤 실행을 선택하세요. Linux에서는 내려받은 뒤
chmod +x mon-jeu-linux-x86_64를 실행하세요. - Windows용 PHP는 Windows에서만 만들 수 있어요. GitHub가 만들고(JumPHP 저장소의
standalone워크플로) 명령이 내려받아요. - x86_64 프로세서만 지원해요(Mac과 ARM은 아직 지원하지 않아요).
기술적인 자세한 내용은 내 프로젝트의 docs/standalone.md에 있어요.