DE

Dein Spiel als native Android-App

JumPHP macht aus deinem Spiel eine echte Android-App, ganz ohne Browser: PHP 8.5, SDL, OpenGL ES und OpenAL laufen in der App, wie auf einem Computer. Sie funktioniert offline, auf Smartphones (ARM) und Tablets, ab Android 8.0.

Du brauchst ein JumPHP-Projekt auf deinem Computer (auf deinem Computer), Docker und für den Play Store ein Google-Play-Entwicklerkonto (einmalig 25 $). Dein Claude kann alles für dich erledigen: Sag ihm einfach „mach eine native Android-App aus meinem Spiel“.

Der andere Weg, die Trusted Web Activity, packt die Spielseite in Chrome: leichter, aber sie braucht das Netz und die Website. Mit demselben Paket und demselben Schlüssel ersetzt die native App die TWA im Play Store, wie eine neue Version.

Ein Befehl

bin/jumphp android mon-jeu
  1. Beim ersten Mal fragt er nach dem Paketnamen der App (io.github.du.mon_jeu: Er ändert sich nicht mehr, sobald die App veröffentlicht ist) und erstellt deinen Upload-Schlüssel in ~/.jumphp/android/keys/ (den der TWA, falls das Spiel eine hat). Sichere ihn, er liegt nie in Git.
  2. Er legt den Workflow .github/workflows/android.yml in deinem Projekt ab und schickt nach deinem Ja den Schlüssel in die Secrets deines GitHub-Repositorys (verschlüsselt, nur vom Workflow lesbar).
  3. Er trägt die Version in games/mon-jeu/android/app.json ein, committet sie und pusht nach deinem Ja.
  4. GitHub baut die App (beim ersten Mal ~25 Minuten, danach ~8: PHP und die Bibliotheken werden zwischengespeichert) und veröffentlicht ein Release deines Repositorys mit der .apk (für ein Smartphone) und der .aab (für Google Play), signiert mit deinem Schlüssel. Der Befehl lädt sie nach games/mon-jeu/dist/android-native/ herunter.

Die Folgeversionen: bin/jumphp android mon-jeu --version-name 1.1 (die Versionsnummer steigt jedes Mal um eins). Ohne GitHub: --local baut die App auf deinem Computer, in Docker.

Zum Ausprobieren auf deinem Smartphone: Schick ihm die .apk und öffne sie (erlaube „Installation unbekannter Apps“), oder nutze adb install mon-jeu-1.0.apk.

Die Touch-Steuerung

Die Engine zeichnet die Bildschirmsteuerung selbst, wie im Browser: das Steuerkreuz (oder einen Joystick), A, B und START, in den schwarzen Streifen an den Seiten, wenn es welche gibt. Sie wird in game.yaml eingestellt, wie für den Browser:

game:
  touch: { pad: stick, a: Space, b: Escape, labels: { a: SAUT } }   # pad: stick = Joystick, sonst das Steuerkreuz

Die Zurück-Taste von Android entspricht Esc. Um sie auf deinem Computer zu sehen: JUMPHP_TOUCH_CONTROLS=1 bin/jumphp run mon-jeu (mit der Maus).

In der App

  • PHP 8.5, für Android kompiliert mit den Erweiterungen von JumPHP (SDL und seine Module für Bild, Sound und Schrift, OpenGL, OpenAL, gd, openssl, mbstring …), SDL2 und OpenAL Soft: alles, was das Spiel auf einem Computer zum Laufen bringt.
  • Dein Spiel, beim ersten Start jeder Version entpackt (ein bis zwei Sekunden), im privaten Speicher der App. Spielstände und Optionen bleiben dort von einem Update zum nächsten erhalten.
  • Der Name, das Symbol (das der PWA: assets/icon.png) und die Ausrichtung (die des Spielformats) stammen aus game.yaml.

Im Play Store

Alle Details (Schlüssel, Tests auf dem Smartphone, jede Erklärung der Play Console, Prüfung, Folgeversionen, Stolperfallen): Im Play Store veröffentlichen, Schritt für Schritt. Kurz gefasst:

  1. Erstelle die App in der Play Console (Name, Sprache, „Spiel“, kostenlos) und fülle die Erklärungen aus: Datenschutzerklärung (eine Seite, die sagt, dass das Spiel nichts erfasst), Inhaltseinstufung, Zielgruppe, keine Werbung.
  2. Play App-Signatur durch Google: Google behält den Schlüssel, der die App für die Smartphones signiert; deiner belegt nur, dass die Uploads von dir stammen (geht er verloren, kann Google ihn ersetzen).
  3. Interner Test: Testen und veröffentlichen > Interne Tests > Release erstellen > lade die .aab hoch > Speichern > Prüfen > Einführen. Füge deine Tester hinzu, sie installieren über den Link von Google.
  4. Der Store-Eintrag: Beschreibungen, Symbol 512 × 512 (bin/jumphp build erzeugt es: dist/web/icon-512.png), ein Bild 1024 × 500, mindestens 2 Screenshots (bin/jumphp shot mon-jeu, oder auf einem Smartphone).
  5. Produktion: Wenn die Tests gut sind, befördere die Version. Google prüft sie (einige Stunden bis einige Tage). Ein neues privates Konto muss zuerst 14 Tage lang 12 Tester haben.

Gut zu wissen

  • HTTPS funktioniert ($engine->http(), das Online-Spiel über wss://): Die Zertifikate werden mit dem Spiel ausgeliefert.
  • Die App wiegt 30 bis 40 MB (PHP und die Bibliotheken für zwei Prozessorarchitekturen).

Die technischen Details: docs/android-native.md in deinem Projekt.