KO

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로 옮기기

그다음 튜토리얼에서 게임을 한 단계씩 만들어 봐요.

  1. Hello world: 메뉴, 텍스트, 사운드
  2. 움직이고 애니메이션하는 캐릭터
  3. 플랫폼 게임: 레벨, 충돌, 카메라
  4. 사운드와 음악
  5. 메뉴, 옵션, 일시정지, 언어
  6. 점수와 옵션 저장하기
  7. 온라인 멀티플레이어
  8. 게임 홈페이지와 게시

게임을 완성했다면 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 파일이에요.