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
- 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. - Ele coloca o workflow
.github/workflows/android.ymlno seu projeto e, depois do seu sim, envia a chave para os segredos do seu repositório GitHub (criptografados, lidos apenas pelo workflow). - Ele anota a versão em
games/meu-jogo/android/app.json, faz o commit e, depois do seu sim, faz o push. - 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 paragames/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 dogame.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:
- 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.
- 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).
- 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. - A ficha: descrições, ícone de 512 × 512 (
bin/jumphp buildo 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). - 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 emwss://): 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.