PT

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)
  1. Na primeira vez, ele pergunta o identificador do aplicativo (io.github.voce.meu-jogo: ele nunca mais muda depois de estar na App Store).
  2. Ele anota a versão em games/meu-jogo/apple/app.json, coloca o workflow .github/workflows/apple.yml no seu projeto, faz o commit deles e, depois do seu sim, faz o push.
  3. 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.
  4. 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 em check/: 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 .ipa espera 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 do game.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 em wss://).

Os detalhes técnicos: docs/apple.md no seu projeto.