UK

Ваша гра як нативний застосунок 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 = джойстик, інакше хрестовина

Кнопка «назад» в 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 у вашому проєкті.