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