ES

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
  1. 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.
  2. Pone el workflow .github/workflows/android.yml en tu proyecto y, tras tu sí, envía la clave a los secretos de tu repositorio de GitHub (cifrados, solo los lee el workflow).
  3. Anota la versión en games/mon-jeu/android/app.json, hace el commit y, tras tu sí, hace push.
  4. 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 en games/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 de game.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:

  1. 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.
  2. 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).
  3. 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.
  4. La ficha: descripciones, icono de 512 × 512 (bin/jumphp build lo 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).
  5. 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 en wss://): 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.