Ваша игра как нативное приложение для Android
JumPHP превращает вашу игру в настоящее приложение для Android без браузера: PHP 8.5, SDL, OpenGL ES и OpenAL работают прямо в приложении, как на компьютере. Оно работает офлайн, на телефонах (ARM) и планшетах, Android 8.0 или новее.
Вам понадобятся проект JumPHP на вашем компьютере (на вашем компьютере), Docker и, для Play Store, аккаунт разработчика Google Play (25 $ один раз). Ваш Claude может сделать всё за вас: попросите его «сделай нативное приложение для Android из моей игры».
Другой способ, Trusted Web Activity, помещает страницу игры в Chrome: он легче, но требует сети и сайта. С тем же пакетом и тем же ключом нативное приложение заменяет TWA в Play Store, как новая версия.
Одна команда
bin/jumphp android mon-jeu
- При первом запуске она спросит имя пакета приложения (
io.github.vous.mon_jeu: после публикации оно не меняется) и создаст ваш ключ загрузки в~/.jumphp/android/keys/(тот же, что у TWA, если он у игры есть). Сделайте его резервную копию: в git он не попадает никогда. - Она добавит в ваш проект workflow
.github/workflows/android.ymlи, после вашего согласия, отправит ключ в секреты вашего репозитория GitHub (они зашифрованы, их читает только workflow). - Она запишет версию в
games/mon-jeu/android/app.json, закоммитит её и, после вашего согласия, отправит изменения. - GitHub собирает приложение (первый раз ~25 минут, затем ~8: PHP и библиотеки кэшируются) и публикует релиз вашего репозитория с
.apk(для телефона) и.aab(для Google Play), подписанными вашим ключом. Команда скачивает их вgames/mon-jeu/dist/android-native/.
Следующие версии: bin/jumphp android mon-jeu --version-name 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 = joystick, sinon la croix
Кнопка «назад» в Android равна Esc. Чтобы увидеть управление на компьютере: JUMPHP_TOUCH_CONTROLS=1 bin/jumphp run mon-jeu (мышью).
Внутри приложения
- PHP 8.5, скомпилированный для Android с расширениями JumPHP (SDL и его модули для изображений, звука и шрифтов, OpenGL, OpenAL, gd, openssl, mbstring…), SDL2 и OpenAL Soft: всё, что запускает игру на компьютере.
- Ваша игра, распаковываемая при первом запуске каждой версии (одна-две секунды) в приватное хранилище приложения. Сохранения и настройки остаются там от обновления к обновлению.
- Название, иконка (как у 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 МБ (PHP и библиотеки для двух процессоров).
Технические подробности: docs/android-native.md в вашем проекте.