JumPHP로 게임 만들기
JumPHP는 PHP로 2D 레트로 게임을 만드는 프레임워크예요. 같은 코드가 데스크톱(PHP + SDL2, 실제 창)과 브라우저(WebAssembly로 컴파일한 PHP)에서 모두 실행돼요. 이 사이트의 모든 게임이 이렇게 동작해요. 시작하는 방법은 여러 가지이고, 가장 빠른 것부터 가장 완전한 것까지 있어요.
| 방법 | 계정 | 필요한 것 | 추천 대상 |
|---|---|---|---|
| 샌드박스 | 불필요 | 브라우저 | 1분 만에 체험하기: hello world를 바꿔 보고 실행해 보기 |
| 나의 Claude와 함께 | GitHub | Claude Code + Docker | 게임을 설명하고 Claude가 작성, 테스트, 게시하도록 맡기기 |
| 온라인 에디터 | GitHub | 브라우저 | 게시된 게임을 수정하거나 다른 사람의 게임을 포크하기 |
| 내 컴퓨터에서 | 불필요(게시할 때만 GitHub) | Docker | 전문가처럼 개발하기: 테스트, 스크린샷, 브라우저 빌드. 한 줄 설치: curl -fsSL https://jumphp.net/install.sh | sh |
| 저장소 가져오기 | GitHub | JumPHP 저장소 | 이미 만들어 둔 게임을 이곳에 게시하기 |
| Amstrad CPC 리메이크 | GitHub | 게임의 .dsk 디스크 |
원작의 그래픽과 음악 그대로 CPC 게임 다시 만들기 |
| 기존 게임 포팅 | GitHub | 소스 코드 | 오래된 게임(C, Pascal, BASIC…)을 PHP로 옮기기 |
그다음 튜토리얼에서 게임을 한 단계씩 만들어 봐요.
- Hello world: 메뉴, 텍스트, 사운드
- 움직이고 애니메이션하는 캐릭터
- 플랫폼 게임: 레벨, 충돌, 카메라
- 사운드와 음악
- 메뉴, 옵션, 일시정지, 언어
- 점수와 옵션 저장하기
- 온라인 멀티플레이어
- 게임 홈페이지와 게시
게임을 완성했다면 Google Play에 올려 보세요(bin/jumphp twa로 만드는 Android 앱이에요).
디렉터리를 읽어야 하는 프로그램은 공개 API를 참고하세요.
JumPHP 게임은 어떻게 동작할까요
게임은 JumPHP 프로젝트의 games/<id>/ 폴더예요.
games/mon-jeu/
config/game.yaml 제목, 해상도(320 × 180…), 첫 장면
config/input.yaml 액션(점프, 발사…)과 키, 게임패드, 터치스크린 설정
src/Scene/*.php 화면: 타이틀, 게임, 일시정지…
src/Entity/*.php 움직이는 것: 주인공, 적…
assets/ 이미지, 사운드, 음악, 레벨(선택 사항: 모두 PHP로 그릴 수도 있어요)
site/ (선택 사항) 게임의 홈페이지
매 프레임(초당 60번)마다 엔진이 현재 장면의 update($dt)(게임 상태를 바꿔요)와 render($r)(그려요)를 차례로 호출해요. 좌표는 게임의 해상도인 "가상" 픽셀이고, 엔진이 화면 크기에 맞게 이미지를 확대해 줘요.
사람과 AI 모두를 위한 프레임워크의 전체 규약은 JumPHP 저장소의 AGENTS.md 파일이에요.