JA

JumPHPでゲームを作ろう

JumPHPは、PHPで2Dレトロゲームを書くためのフレームワークです。同じコードが、デスクトップ(PHP + SDL2、本物のウィンドウ)でも、ブラウザ(WebAssemblyにコンパイルしたPHP)でも動きます。このサイトのゲームは、すべてこの仕組みで動いています。始め方はいくつかあり、手軽なものから本格的なものまで揃っています。

方法 アカウント 必要なもの こんな方に
サンドボックス 不要 ブラウザ 1分で試す:Hello worldを書き換えて実行する
あなたのClaudeと GitHub Claude Code + Docker ゲームの内容を伝えて、執筆・テスト・公開まで任せる
オンラインエディタ GitHub ブラウザ 公開済みのゲームを手直しする、または他の人のゲームをフォークする
お使いのコンピューターで 不要(公開にはGitHub) Docker プロのように開発する:テスト、スクリーンショット、ブラウザ向けビルド。1行で: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/                 (省略可)ゲームのトップページ

毎フレーム(1秒に60回)、エンジンは表示中のシーンのupdate($dt)(ゲームの状態を更新)、続いてrender($r)(描画)を呼び出します。座標は「仮想」ピクセル(ゲームの解像度)で、エンジンが画面のサイズに合わせて拡大します。

フレームワークの完全な仕様は、人間にもAIにも向けたJumPHPリポジトリのAGENTS.mdにあります。