IT

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
  1. 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.
  2. Mette il workflow .github/workflows/android.yml nel tuo progetto e, dopo il tuo sì, invia la chiave nei secret del tuo repository GitHub (cifrati, letti solo dal workflow).
  3. Annota la versione in games/mon-jeu/android/app.json, fa il commit e, dopo il tuo sì, fa il push.
  4. 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 in games/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 da game.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:

  1. 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à.
  2. 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).
  3. 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.
  4. La scheda dello store: descrizioni, icona 512 × 512 (bin/jumphp build la crea: dist/web/icon-512.png), una immagine 1024 × 500, almeno 2 screenshot (bin/jumphp shot mon-jeu, oppure da un telefono).
  5. 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 in wss://): 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.