Il tuo gioco come app Android nativa
JumPHP trasforma il tuo gioco in una vera app Android, senza browser: PHP 8.5, SDL, OpenGL ES e OpenAL girano nell'app, come su un computer. Funziona offline, su telefoni (ARM) e tablet, Android 8.0 o più recente.
Serve un progetto JumPHP sul tuo computer (sul tuo computer), Docker e, per il Play Store, un account sviluppatore Google Play (25 $ una tantum). Il tuo Claude può fare tutto al posto tuo: chiedigli «fai un'app Android nativa del mio gioco».
L'altro modo, la Trusted Web Activity, mette la pagina del gioco in Chrome: più leggera, ma serve la rete e il sito. Con lo stesso pacchetto e la stessa chiave, l'app nativa sostituisce la TWA sul Play Store, come una nuova versione.
Un solo comando
bin/jumphp android mon-jeu
- La prima volta, chiede il nome del pacchetto dell'app (
io.github.tu.mon_jeu: non cambia più una volta pubblicato) e costruisce la tua chiave di caricamento in~/.jumphp/android/keys/(quella della TWA se il gioco ne ha una). Salvala, non finisce mai in git. - Mette il workflow
.github/workflows/android.ymlnel tuo progetto e, dopo il tuo sì, invia la chiave nei secret del tuo repository GitHub (cifrati, letti solo dal workflow). - Annota la versione in
games/mon-jeu/android/app.json, fa il commit e, dopo il tuo sì, fa il push. - GitHub costruisce l'app (la prima volta ~25 minuti, poi ~8: PHP e le librerie sono tenuti
in cache) e pubblica una release del tuo repository con l'
.apk(per un telefono) e l'.aab(per Google Play), firmati con la tua chiave. Il comando li scarica ingames/mon-jeu/dist/android-native/.
Le versioni successive: bin/jumphp android mon-jeu --version-name 1.1 (il numero di versione sale di uno
ogni volta). Senza GitHub: --local costruisce l'app sul tuo computer, in Docker.
Per provarla sul tuo telefono: inviagli l'.apk e aprilo (autorizza «installa app
sconosciute»), oppure adb install mon-jeu-1.0.apk.
I comandi touch
Il motore disegna da sé i comandi sullo schermo, come nel browser: la croce direzionale (o un joystick), A,
B e START, nelle bande nere ai lati quando ce ne sono. Si regolano in game.yaml, come per
il browser:
game:
touch: { pad: stick, a: Space, b: Escape, labels: { a: SAUT } } # pad: stick = joystick, altrimenti la croce
Il pulsante indietro di Android equivale a Esc. Per vederli sul tuo computer:
JUMPHP_TOUCH_CONTROLS=1 bin/jumphp run mon-jeu (con il mouse).
Nell'app
- PHP 8.5 compilato per Android con le estensioni di JumPHP (SDL e i suoi moduli immagine, suono e font, OpenGL, OpenAL, gd, openssl, mbstring…), SDL2 e OpenAL Soft: ciò che fa girare il gioco su un computer.
- Il tuo gioco, estratto al primo avvio di ogni versione (uno o due secondi), nello storage privato dell'app. I salvataggi e le opzioni restano lì da un aggiornamento all'altro.
- Il nome, l'icona (quella della PWA:
assets/icon.png) e l'orientamento (quello della forma del gioco) vengono dagame.yaml.
Sul Play Store
Tutti i dettagli (chiavi, prove sul telefono, ogni dichiarazione della Play Console, revisione, versioni successive, trappole): Pubblicare sul Play Store, passo passo. In breve:
- Nella Play Console, crea l'app (nome, lingua, «Gioco», gratuita) e compila le dichiarazioni: informativa sulla privacy (una pagina che dice che il gioco non raccoglie nulla), classificazione dei contenuti, pubblico di destinazione, nessuna pubblicità.
- Firma dell'app da parte di Google Play: Google conserva la chiave che firma l'app per i telefoni; la tua dimostra solo che i caricamenti vengono da te (se la perdi, Google può sostituirla).
- Test interno: Test e release > Test interni > Crea release > carica l'
.aab> Salva > Rivedi > Distribuisci. Aggiungi i tuoi tester, che installano dal link di Google. - La scheda dello store: descrizioni, icona 512 × 512 (
bin/jumphp buildla crea:dist/web/icon-512.png), una immagine 1024 × 500, almeno 2 screenshot (bin/jumphp shot mon-jeu, oppure da un telefono). - Produzione: quando i test vanno bene, promuovi la versione. Google la rivede (da qualche ora a qualche giorno). Un nuovo account personale deve prima avere 12 tester per 14 giorni.
Da sapere
- HTTPS funziona (
$engine->http(), il gioco online inwss://): i certificati vengono con il gioco. - L'app pesa da 30 a 40 MB (PHP e le librerie per due processori).
I dettagli tecnici: docs/android-native.md nel tuo progetto.