O seu jogo como aplicativo para Mac, iPhone e iPad
O JumPHP transforma o seu jogo em verdadeiros aplicativos Apple, sem navegador: PHP 8.5, SDL, OpenGL e OpenAL rodam dentro do aplicativo, como em um computador e no aplicativo Android nativo.
- Mac: um aplicativo para os Macs Apple (M1 e posteriores) e Intel, macOS 11 ou mais recente, em
.dmg; - iPhone e iPad: um aplicativo
.ipa, iOS 14 ou mais recente, com os controles de toque desenhados pelo motor e a orientação do jogo; e o mesmo para o simulador do Xcode.
Gerar um aplicativo Apple exige o Xcode, portanto um Mac. Você não precisa ter um: o GitHub o gera em um dos Macs dele (grátis para um repositório público), a partir de qualquer computador. Você precisa de um projeto JumPHP no seu computador (no seu computador) e de um repositório GitHub. O seu Claude pode fazer tudo por você: peça a ele “faça os aplicativos de Mac e iPhone do meu jogo”.
Um comando
bin/jumphp apple meu-jogo # Mac + iPhone / iPad
bin/jumphp macos meu-jogo # apenas o Mac
bin/jumphp ios meu-jogo # apenas o iPhone / iPad (e o simulador)
- Na primeira vez, ele pergunta o identificador do aplicativo (
io.github.voce.meu-jogo: ele nunca mais muda depois de estar na App Store). - Ele anota a versão em
games/meu-jogo/apple/app.json, coloca o workflow.github/workflows/apple.ymlno seu projeto, faz o commit deles e, depois do seu sim, faz o push. - O GitHub gera os aplicativos em um Mac (na primeira vez ~40 minutos, depois ~10: o PHP e as bibliotecas ficam em cache) e depois os testa: o aplicativo de Mac executa o jogo e guarda uma imagem dele, o aplicativo de iPhone é instalado em um iPhone simulado, aberto e fotografado.
- Ele publica uma release do seu repositório com os aplicativos e as duas capturas, e os baixa para
games/meu-jogo/dist/apple/(as capturas emcheck/: dê uma olhada nelas).
As versões seguintes: bin/jumphp apple meu-jogo --version 1.1 (o número do build sobe um a cada
vez). Em um Mac com Xcode: --local gera tudo no próprio computador.
Arquivos fora do git (os dados de um jogo original, mantidos fora de um repositório público, como os arquivos privados do playground): o comando os encontra e, depois do seu sim, os coloca em uma release rascunho do seu repositório, que só quem tem permissão de escrita nele vê; o Mac do GitHub os devolve ao jogo antes de gerá-lo. Os aplicativos, por sua vez, contêm esses arquivos: a release deles então também é um rascunho, e é você quem decide publicá-la.
Sem conta de desenvolvedor Apple (para começar)
Os aplicativos são assinados “ad hoc”, sem identidade:
- Mac: na primeira vez, clique com o botão direito no aplicativo > Abrir (o macOS pergunta uma vez). Perfeito para você, seus amigos, seus testadores.
- iPhone / iPad: um iPhone só instala um aplicativo assinado para ele. O
.ipaespera a conta (abaixo). Enquanto isso: o aplicativo do simulador (em um Mac com Xcode), e a versão web se instala pelo Safari (Compartilhar > Adicionar à Tela de Início).
Com uma conta de desenvolvedor Apple (depois)
Cada desenvolvedor usa a sua própria conta do Apple Developer Program (US$ 99 por ano): os aplicativos são publicados em nome dele, com os certificados dele, guardados nos segredos do seu repositório. Ela serve para:
- abrir o aplicativo de Mac sem o clique com o botão direito: assinatura Developer ID e notarização pela Apple;
- instalar o aplicativo em um iPhone e enviá-lo ao TestFlight e depois à App Store.
É a próxima etapa do JumPHP. A App Store aceita um jogo em PHP: o código roda dentro do aplicativo e vem com ele, nada é baixado depois (regra 2.5.2).
Os controles de toque
No iPhone e no iPad, o motor desenha os controles na tela como no navegador e no Android: a
cruz (ou um joystick), A, B e START. Eles são ajustados no game.yaml:
game:
touch: { pad: stick, a: Space, b: Escape, labels: { a: PULAR } } # pad: stick = joystick, senão a cruz
Um gamepad (Bluetooth, MFi) também funciona. No Mac: teclado, mouse, gamepad, como em um computador.
Dentro do aplicativo
- PHP 8.5 compilado para Mac (Apple e Intel) e para iPhone 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. Sem JIT: a Apple o proíbe no iPhone.
- O seu jogo, do jeito que é, dentro do aplicativo. Os saves e as opções vão para a pasta do aplicativo (Application Support) e permanecem de uma atualização para outra.
- O nome, o ícone (
assets/icon.png, senão a inicial do título) e a orientação (o formato do jogo) vêm dogame.yaml. - Os jogos em 3D (
gl(),opengl()) funcionam: OpenGL ES no iPhone, OpenGL no Mac (o motor adapta os shaders sozinho). - O HTTPS funciona (
$engine->http(), o jogo online emwss://).
Os detalhes técnicos: docs/apple.md no seu projeto.