ゲームをネイティブAndroidアプリにする
JumPHPは、ゲームを、ブラウザを使わない本物のAndroidアプリにします:PHP 8.5、SDL、OpenGL ES、OpenALが、パソコンと同じようにアプリの中で動きます。オフラインで動作し、スマートフォン(ARM)とタブレットに対応しています。Android 8.0以降が対象です。
お使いのコンピューター上のJumPHPプロジェクト(お使いのコンピューターで)、Docker、Play Storeに出す場合はGoogle Play デベロッパーアカウント(一度だけ25ドル)が必要です。Claudeにすべて任せることもできます:「ゲームのネイティブAndroidアプリを作って」と頼んでください。
もう1つの方法であるTrusted Web Activityは、ゲームのページをChromeに表示します。より軽量ですが、ネットワークとサイトが必要です。同じパッケージ名と同じキーを使えば、ネイティブアプリは、新しいバージョンとして、Play Store上のTWAを置き換えます。
コマンド1つで
bin/jumphp android mon-jeu
- 初回は、アプリのパッケージ名(
io.github.vous.mon_jeu:公開後は変えられません)を尋ね、~/.jumphp/android/keys/にアップロード用のキーを作ります(ゲームにTWAがあれば、そのキーを使います)。バックアップを取ってください。gitには入りません。 - プロジェクトに
.github/workflows/android.ymlワークフローを置き、あなたの同意を得たうえで、GitHubリポジトリのシークレットにキーを送ります(暗号化され、ワークフローだけが読めます)。 - バージョンを
games/mon-jeu/android/app.jsonに書き込み、コミットして、あなたの同意を得たうえでpushします。 - GitHubがアプリをビルドします(初回は約25分、2回目以降は約8分:PHPとライブラリがキャッシュされます)。そして、あなたのキーで署名された、
.apk(スマートフォン用)と**.aab**(Google Play用)を含む、リポジトリのリリースを公開します。コマンドは、それらをgames/mon-jeu/dist/android-native/にダウンロードします。
次のバージョンは:bin/jumphp android mon-jeu --version-name 1.1(バージョン番号は毎回1つ上がります)。GitHubを使わない場合:--localで、お使いのコンピューター上のDockerでアプリをビルドします。
スマートフォンで試すには:.apkを送って開く(「提供元不明のアプリのインストール」を許可)か、adb install mon-jeu-1.0.apkを実行します。
タッチ操作
エンジンは、ブラウザと同じように、画面上の操作ボタンを自分で描画します:十字キー(またはジョイスティック)、A、B、START。左右に黒い帯がある場合は、その中に表示されます。設定は、ブラウザ向けと同じくgame.yamlで行います。
game:
touch: { pad: stick, a: Space, b: Escape, labels: { a: SAUT } } # pad: stick = ジョイスティック、指定しなければ十字キー
Androidの戻るボタンは、Escと同じ扱いです。パソコンで確認するには:
JUMPHP_TOUCH_CONTROLS=1 bin/jumphp run mon-jeu(マウスで操作します)。
アプリの中身
- JumPHPの拡張機能(SDLと、その画像・サウンド・フォントのモジュール、OpenGL、OpenAL、gd、openssl、mbstringなど)つきでAndroid向けにコンパイルされたPHP 8.5、SDL2、OpenAL Soft:パソコンでゲームを動かしているものと同じです。
- ゲームは、バージョンごとの初回起動時に展開されます(1〜2秒)。展開先は、アプリの非公開ストレージです。セーブデータとオプションは、更新をまたいで残ります。
- 名前、アイコン(PWAのもの:
assets/icon.png)、向き(ゲームの画面の形に合わせたもの)は、game.yamlから取られます。
Play Storeで
詳細(キー、スマートフォンでの動作確認、Play Consoleの各種申告、審査、次のバージョン、落とし穴):Play Storeに公開する:ステップバイステップ。要点は次のとおりです。
- Play Consoleで、アプリを作成(名前、言語、「ゲーム」、無料)し、各種の申告を済ませます:プライバシーポリシー(ゲームが何も収集しないことを書いたページ)、コンテンツのレーティング、ターゲット ユーザー、広告なし。
- Google Playによるアプリの署名:Googleは、スマートフォン向けにアプリへ署名するキーを保管します。あなたのキーは、アップロードがあなたからのものであることを証明するだけです(紛失した場合は、Googleが置き換えられます)。
- 内部テスト:テストとリリース > 内部テスト > 新しいリリースを作成 >
.aabをアップロード > 保存 > 確認 > ロールアウト。テスターを追加すると、Googleのリンクからインストールできます。 - ストアの掲載情報:説明、512 × 512のアイコン(
bin/jumphp buildが作ります:dist/web/icon-512.png)、1024 × 500の画像、2枚以上のスクリーンショット(bin/jumphp shot mon-jeu、またはスマートフォンで)。 - 本番公開:テストで問題がなければ、バージョンを昇格させます。Googleが審査します(数時間から数日)。新しい個人アカウントは、まず12人のテスターで14日間のテストを行う必要があります。
知っておきたいこと
- HTTPSが使えます(
$engine->http()、wss://によるオンラインプレイ):証明書はゲームに同梱されています。 - アプリのサイズは30〜40 MBです(2種類のプロセッサ向けのPHPとライブラリ)。
技術的な詳細:お使いのプロジェクトのdocs/android-native.md。