RU

Ваша игра как нативное приложение для 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
  1. При первом запуске она спросит имя пакета приложения (io.github.vous.mon_jeu: после публикации оно не меняется) и создаст ваш ключ загрузки в ~/.jumphp/android/keys/ (тот же, что у TWA, если он у игры есть). Сделайте его резервную копию: в git он не попадает никогда.
  2. Она добавит в ваш проект workflow .github/workflows/android.yml и, после вашего согласия, отправит ключ в секреты вашего репозитория GitHub (они зашифрованы, их читает только workflow).
  3. Она запишет версию в games/mon-jeu/android/app.json, закоммитит её и, после вашего согласия, отправит изменения.
  4. 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 шаг за шагом. Вкратце:

  1. В Play Console создайте приложение (название, язык, «Игра», бесплатное) и заполните декларации: политику конфиденциальности (страница, где сказано, что игра ничего не собирает), классификацию контента, целевую аудиторию, отсутствие рекламы.
  2. Подпись приложения Google Play: Google хранит ключ, которым подписывается приложение для телефонов; ваш ключ лишь подтверждает, что загрузки идут от вас (если вы его потеряете, Google может его заменить).
  3. Внутреннее тестирование: Тестирование и публикация > Внутреннее тестирование > Создать релиз > загрузите .aab > Сохранить > Проверить > Развернуть. Добавьте тестировщиков, они устанавливают приложение по ссылке Google.
  4. Карточка приложения: описания, иконка 512 × 512 (её делает bin/jumphp build: dist/web/icon-512.png), изображение 1024 × 500, не менее 2 скриншотов (bin/jumphp shot mon-jeu или с телефона).
  5. Публикация в рабочей версии: когда тесты пройдены, продвиньте релиз. Google проверяет его (от нескольких часов до нескольких дней). Новому личному аккаунту сначала нужно набрать 12 тестировщиков на 14 дней.

Полезно знать

  • HTTPS работает ($engine->http(), онлайн-игра через wss://): сертификаты поставляются вместе с игрой.
  • Приложение весит 30–40 МБ (PHP и библиотеки для двух процессоров).

Технические подробности: docs/android-native.md в вашем проекте.