Je game als native Android-app
JumPHP maakt van je game een echte Android-app, zonder browser: PHP 8.5, SDL, OpenGL ES en OpenAL draaien in de app, zoals op een computer. Ze werkt offline, op telefoons (ARM) en tablets, Android 8.0 of nieuwer.
Je hebt nodig: een JumPHP-project op je computer (op je computer), Docker en, voor de Play Store, een Google Play-ontwikkelaarsaccount (eenmalig 25 $). Je Claude kan alles voor je doen: vraag hem “maak een native Android-app van mijn game”.
De andere manier, de Trusted Web Activity, zet de pagina van de game in Chrome: lichter, maar het netwerk en de site zijn nodig. Met hetzelfde pakket en dezelfde sleutel vervangt de native app de TWA in de Play Store, als een nieuwe versie.
Eén commando
bin/jumphp android mon-jeu
- De eerste keer vraagt het de pakketnaam van de app (
io.github.jij.mon_jeu: die verandert niet meer zodra hij gepubliceerd is) en maakt je uploadsleutel aan in~/.jumphp/android/keys/(die van de TWA als de game er een heeft). Maak er een back-up van, hij staat nooit in git. - Het zet de workflow
.github/workflows/android.ymlin je project en stuurt, na jouw ja, de sleutel naar de secrets van je GitHub-repository (versleuteld, alleen door de workflow te lezen). - Het noteert de versie in
games/mon-jeu/android/app.json, commit hem en pusht, na jouw ja. - GitHub bouwt de app (de eerste keer ~25 minuten, daarna ~8: PHP en de bibliotheken worden in de
cache bewaard) en publiceert een release van je repository met de
.apk(voor een telefoon) en de.aab(voor Google Play), ondertekend met je sleutel. Het commando downloadt ze naargames/mon-jeu/dist/android-native/.
De volgende versies: bin/jumphp android mon-jeu --version-name 1.1 (het versienummer gaat elke keer met één
omhoog). Zonder GitHub: --local bouwt de app op je computer, in Docker.
Om hem op je telefoon uit te proberen: stuur de .apk erheen en open hem (sta “installeren van onbekende apps”
toe), of adb install mon-jeu-1.0.apk.
De touchbesturing
De engine tekent zelf de besturing op het scherm, zoals in de browser: het kruis (of een joystick), A,
B en START, in de zwarte randen aan de zijkanten als die er zijn. Ze worden ingesteld in game.yaml, net als voor
de browser:
game:
touch: { pad: stick, a: Space, b: Escape, labels: { a: SAUT } } # pad: stick = joystick, anders het kruis
De terugknop van Android is gelijk aan Esc. Om ze op je computer te zien:
JUMPHP_TOUCH_CONTROLS=1 bin/jumphp run mon-jeu (met de muis).
In de app
- PHP 8.5 gecompileerd voor Android met de extensies van JumPHP (SDL en zijn beeld-, geluids- en lettertypemodules, OpenGL, OpenAL, gd, openssl, mbstring…), SDL2 en OpenAL Soft: wat de game op een computer laat draaien.
- Je game, uitgepakt bij de eerste start van elke versie (een of twee seconden), in de privéopslag van de app. Opgeslagen games en opties blijven van de ene update naar de andere bestaan.
- De naam, het pictogram (dat van de PWA:
assets/icon.png) en de oriëntatie (die van de vorm van de game) komen uitgame.yaml.
In de Play Store
Alle details (sleutels, testen op een telefoon, elke verklaring in de Play Console, beoordeling, volgende versies, valkuilen): Publiceren op de Play Store, stap voor stap. In het kort:
- Maak de app aan in de Play Console (naam, taal, “Game”, gratis) en vul de verklaringen in: privacybeleid (een pagina die zegt dat de game niets verzamelt), contentclassificatie, doelgroep, geen advertenties.
- App-ondertekening door Google Play: Google bewaart de sleutel die de app voor telefoons ondertekent; die van jou bewijst alleen dat de uploads van jou komen (als je hem kwijtraakt, kan Google hem vervangen).
- Interne test: Testen en publiceren > Interne tests > Release maken > upload de
.aab> Opslaan > Beoordelen > Uitrollen. Voeg je testers toe, zij installeren via de link van Google. - De vermelding: beschrijvingen, pictogram van 512 × 512 (
bin/jumphp buildmaakt het:dist/web/icon-512.png), een afbeelding van 1024 × 500, minstens 2 screenshots (bin/jumphp shot mon-jeu, of op een telefoon). - Productie: als de tests goed zijn, promoot je de versie. Google beoordeelt hem (enkele uren tot enkele dagen). Een nieuw persoonlijk account moet eerst 14 dagen lang 12 testers hebben.
Goed om te weten
- HTTPS werkt (
$engine->http(), de game online viawss://): de certificaten worden met de game meegeleverd. - De app weegt 30 tot 40 MB (PHP en de bibliotheken voor twee processorarchitecturen).
De technische details: docs/android-native.md in je project.