Tu juego como app de Android nativa
JumPHP convierte tu juego en una verdadera app de Android, sin navegador: PHP 8.5, SDL, OpenGL ES y OpenAL funcionan dentro de la app, como en un ordenador. Funciona sin conexión, en móviles (ARM) y tabletas, con Android 8.0 o posterior.
Necesitas un proyecto JumPHP en tu ordenador (en tu ordenador), Docker y, para Play Store, una cuenta de desarrollador de Google Play (25 $ una sola vez). Tu Claude puede hacerlo todo por ti: pídele «haz una app de Android nativa de mi juego».
La otra forma, la Trusted Web Activity, pone la página del juego en Chrome: es más ligera, pero necesita red y el sitio. Con el mismo paquete y la misma clave, la app nativa sustituye a la TWA en Play Store, como una versión nueva.
Un comando
bin/jumphp android mon-jeu
- La primera vez, pregunta el nombre del paquete de la app (
io.github.tu.mi_juego: no cambia una vez publicado) y fabrica tu clave de subida en~/.jumphp/android/keys/(la de la TWA si el juego tiene una). Haz una copia de seguridad, nunca está en git. - Pone el workflow
.github/workflows/android.ymlen tu proyecto y, tras tu sí, envía la clave a los secretos de tu repositorio de GitHub (cifrados, solo los lee el workflow). - Anota la versión en
games/mon-jeu/android/app.json, hace el commit y, tras tu sí, hace push. - GitHub fabrica la app (la primera vez ~25 minutos, después ~8: PHP y las bibliotecas se guardan
en caché) y publica una release de tu repositorio con el
.apk(para un móvil) y el.aab(para Google Play), firmados con tu clave. El comando los descarga engames/mon-jeu/dist/android-native/.
Las versiones siguientes: bin/jumphp android mon-jeu --version-name 1.1 (el número de versión sube uno
cada vez). Sin GitHub: --local fabrica la app en tu ordenador, dentro de Docker.
Para probarla en tu móvil: envíale el .apk y ábrelo (permite «instalar aplicaciones
desconocidas»), o adb install mon-jeu-1.0.apk.
Los controles táctiles
El propio motor dibuja los controles en pantalla, como en el navegador: la cruceta (o un joystick), A,
B y START, en las bandas negras laterales cuando las hay. Se configuran en game.yaml, como para
el navegador:
game:
touch: { pad: stick, a: Space, b: Escape, labels: { a: SAUT } } # pad: stick = joystick, si no la cruceta
El botón atrás de Android equivale a Esc. Para verlos en tu ordenador:
JUMPHP_TOUCH_CONTROLS=1 bin/jumphp run mon-jeu (con el ratón).
Dentro de la app
- PHP 8.5 compilado para Android con las extensiones de JumPHP (SDL y sus módulos de imagen, sonido y fuentes, OpenGL, OpenAL, gd, openssl, mbstring…), SDL2 y OpenAL Soft: lo que hace funcionar el juego en un ordenador.
- Tu juego, desempaquetado en el primer arranque de cada versión (uno o dos segundos), en el almacenamiento privado de la app. Las partidas guardadas y las opciones se conservan de una actualización a otra.
- El nombre, el icono (el de la PWA:
assets/icon.png) y la orientación (la de la forma del juego) vienen degame.yaml.
En Play Store
Todo el detalle (claves, pruebas en el móvil, cada declaración de Play Console, revisión, versiones siguientes, trampas): Publicar en Play Store, paso a paso. En resumen:
- En Play Console, crea la app (nombre, idioma, «Juego», gratis) y rellena las declaraciones: política de privacidad (una página que diga que el juego no recopila nada), clasificación del contenido, público objetivo, sin publicidad.
- Firma de aplicaciones de Google Play: Google guarda la clave que firma la app para los móviles; la tuya solo demuestra que los envíos vienen de ti (si la pierdes, Google puede sustituirla).
- Prueba interna: Probar y publicar > Pruebas internas > Crear versión > sube el
.aab> Guardar > Revisar > Implementar. Añade a tus testers, que instalan desde el enlace de Google. - La ficha: descripciones, icono de 512 × 512 (
bin/jumphp buildlo crea:dist/web/icon-512.png), una imagen de 1024 × 500, al menos 2 capturas (bin/jumphp shot mon-jeu, o desde un móvil). - Producción: cuando las pruebas van bien, promueve la versión. Google la revisa (de unas horas a unos días). Una cuenta personal nueva debe tener antes 12 testers durante 14 días.
Conviene saber
- HTTPS funciona (
$engine->http(), el juego online enwss://): los certificados vienen con el juego. - La app pesa de 30 a 40 MB (PHP y las bibliotecas para dos procesadores).
Los detalles técnicos: docs/android-native.md en tu proyecto.