PT

O seu jogo como aplicativo Android nativo

O JumPHP transforma o seu jogo em um verdadeiro aplicativo Android, sem navegador: PHP 8.5, SDL, OpenGL ES e OpenAL rodam dentro do aplicativo, como em um computador. Ele funciona offline, em celulares (ARM) e tablets, Android 8.0 ou mais recente.

Você precisa de um projeto JumPHP no seu computador (no seu computador), Docker e, para a Play Store, uma conta de desenvolvedor do Google Play (US$ 25, uma única vez). O seu Claude pode fazer tudo por você: peça a ele “faça um aplicativo Android nativo do meu jogo”.

A outra forma, a Trusted Web Activity, coloca a página do jogo no Chrome: é mais leve, mas exige rede e o site. Com o mesmo pacote e a mesma chave, o aplicativo nativo substitui a TWA na Play Store, como uma nova versão.

Um comando

bin/jumphp android meu-jogo
  1. Na primeira vez, ele pergunta o nome do pacote do aplicativo (io.github.voce.meu_jogo: ele nunca mais muda depois de publicado) e fabrica a sua chave de envio em ~/.jumphp/android/keys/ (a da TWA, se o jogo tiver uma). Faça backup dela, ela nunca vai para o git.
  2. Ele coloca o workflow .github/workflows/android.yml no seu projeto e, depois do seu sim, envia a chave para os segredos do seu repositório GitHub (criptografados, lidos apenas pelo workflow).
  3. Ele anota a versão em games/meu-jogo/android/app.json, faz o commit e, depois do seu sim, faz o push.
  4. O GitHub gera o aplicativo (na primeira vez ~25 minutos, depois ~8: o PHP e as bibliotecas ficam em cache) e publica uma release do seu repositório com o .apk (para um celular) e o .aab (para o Google Play), assinados com a sua chave. O comando os baixa para games/meu-jogo/dist/android-native/.

As versões seguintes: bin/jumphp android meu-jogo --version-name 1.1 (o número da versão sobe um a cada vez). Sem GitHub: --local gera o aplicativo no seu computador, dentro do Docker.

Para testá-lo no seu celular: envie o .apk para ele e abra-o (autorize “instalar apps desconhecidos”) ou use adb install meu-jogo-1.0.apk.

Os controles de toque

O próprio motor desenha os controles na tela, como no navegador: a cruz (ou um joystick), A, B e START, nas faixas pretas laterais quando existem. Eles são ajustados no game.yaml, como para o navegador:

game:
  touch: { pad: stick, a: Space, b: Escape, labels: { a: PULAR } }   # pad: stick = joystick, senão a cruz

O botão voltar do Android equivale a Esc. Para vê-los no seu computador: JUMPHP_TOUCH_CONTROLS=1 bin/jumphp run meu-jogo (com o mouse).

Dentro do aplicativo

  • PHP 8.5 compilado para Android com as extensões do JumPHP (SDL e seus módulos de imagem, som e fonte, OpenGL, OpenAL, gd, openssl, mbstring…), SDL2 e OpenAL Soft: o que faz o jogo rodar em um computador.
  • O seu jogo, desempacotado na primeira execução de cada versão (um ou dois segundos), no armazenamento privado do aplicativo. Os saves e as opções permanecem ali de uma atualização para outra.
  • O nome, o ícone (o da PWA: assets/icon.png) e a orientação (a do formato do jogo) vêm do game.yaml.

Na Play Store

Todos os detalhes (chaves, testes no celular, cada declaração do Play Console, análise, versões seguintes, armadilhas): Publicando na Play Store, passo a passo. Em resumo:

  1. No Play Console, crie o app (nome, idioma, “Jogo”, gratuito) e preencha as declarações: política de privacidade (uma página que diz que o jogo não coleta nada), classificação do conteúdo, público-alvo, sem anúncios.
  2. Assinatura de apps pelo Google Play: o Google guarda a chave que assina o aplicativo para os celulares; a sua apenas prova que os envios vêm de você (se for perdida, o Google pode substituí-la).
  3. Teste interno: Testar e lançar > Testes internos > Criar nova versão > envie o .aab > Salvar > Revisar > Lançar. Adicione os seus testadores, eles instalam pelo link do Google.
  4. A ficha: descrições, ícone de 512 × 512 (bin/jumphp build o gera: dist/web/icon-512.png), uma imagem de 1024 × 500, pelo menos 2 capturas de tela (bin/jumphp shot meu-jogo, ou em um celular).
  5. Produção: quando os testes estiverem bons, promova a versão. O Google a analisa (de algumas horas a alguns dias). Uma conta pessoal nova precisa antes ter 12 testadores por 14 dias.

Bom saber

  • O HTTPS funciona ($engine->http(), o jogo online em wss://): os certificados vêm com o jogo.
  • O aplicativo pesa de 30 a 40 MB (PHP e as bibliotecas para dois processadores).

Os detalhes técnicos: docs/android-native.md no seu projeto.