PL

Twoja gra jako aplikacja na Maca, iPhone'a i iPada

JumPHP robi z twojej gry prawdziwe aplikacje Apple, bez przeglądarki: PHP 8.5, SDL, OpenGL i OpenAL działają w aplikacji, jak na komputerze i w natywnej aplikacji na Androida.

  • Mac: aplikacja na Maki Apple (M1 i nowsze) oraz Intel, macOS 11 lub nowszy, jako .dmg;
  • iPhone i iPad: aplikacja .ipa, iOS 14 lub nowszy, ze sterowaniem dotykowym rysowanym przez silnik i orientacją gry; oraz taka sama dla symulatora Xcode.

Zbudowanie aplikacji Apple wymaga Xcode, a więc Maca. Nie musisz go mieć: GitHub buduje ją na jednym ze swoich Maców (za darmo dla publicznego repozytorium), z dowolnego komputera. Potrzebny jest projekt JumPHP na twoim komputerze (na twoim komputerze) i repozytorium GitHub. Twój Claude może zrobić wszystko za ciebie: poproś go „zrób aplikacje na Maca i iPhone'a z mojej gry”.

Jedno polecenie

bin/jumphp apple mon-jeu      # Mac + iPhone / iPad
bin/jumphp macos mon-jeu      # tylko Mac
bin/jumphp ios mon-jeu        # tylko iPhone / iPad (i symulator)
  1. Za pierwszym razem pyta o identyfikator aplikacji (io.github.ty.mon-jeu: po publikacji w App Store już się nie zmienia).
  2. Zapisuje wersję w games/mon-jeu/apple/app.json, umieszcza workflow .github/workflows/apple.yml w twoim projekcie, robi commit i, po twoim „tak”, wysyła zmiany.
  3. GitHub buduje aplikacje na Macu (za pierwszym razem ~40 minut, potem ~10: PHP i biblioteki są w pamięci podręcznej), a potem je wypróbowuje: aplikacja na Maca uruchamia grę i zachowuje jej obraz, aplikacja na iPhone'a jest instalowana na symulowanym iPhonie, uruchamiana i fotografowana.
  4. Publikuje release twojego repozytorium z aplikacjami i dwoma zrzutami ekranu oraz pobiera je do games/mon-jeu/dist/apple/ (zrzuty w check/: obejrzyj je).

Kolejne wersje: bin/jumphp apple mon-jeu --version 1.1 (numer buildu rośnie za każdym razem o jeden). Na Macu z Xcode: --local buduje wszystko na miejscu.

Pliki poza git (dane oryginalnej gry, trzymane poza publicznym repozytorium, jak pliki prywatne playgroundu): polecenie je znajduje i, po twoim „tak”, umieszcza w roboczym release twojego repozytorium, który widzą tylko osoby z prawem zapisu; Mac GitHuba wkłada je z powrotem do gry przed jej zbudowaniem. Same aplikacje zawierają te pliki: ich release jest wtedy również roboczy, a o jego opublikowaniu decydujesz ty.

Bez konta deweloperskiego Apple (na początek)

Aplikacje są podpisane „ad hoc”, bez tożsamości:

  • Mac: za pierwszym razem prawy przycisk na aplikacji > Otwórz (macOS pyta raz). Idealne dla ciebie, twoich znajomych, testerów.
  • iPhone / iPad: iPhone instaluje tylko aplikację podpisaną dla niego. .ipa czeka na konto (niżej). W międzyczasie: aplikacja symulatora (na Macu z Xcode), a wersję webową można zainstalować z Safari (Udostępnij > Do ekranu początkowego).

Z kontem deweloperskim Apple (potem)

Każdy deweloper zakłada własne konto w Apple Developer Program (99 $ rocznie): aplikacje są publikowane pod jego nazwiskiem, z jego certyfikatami, przechowywanymi w sekretach jego repozytorium. Służy ono do:

  • otwierania aplikacji na Maca bez prawego przycisku: podpis Developer ID i notaryzacja przez Apple;
  • instalowania aplikacji na iPhonie, wysyłania jej do TestFlight, a potem do App Store.

To kolejny etap JumPHP. App Store przyjmuje grę w PHP: kod działa w aplikacji i jest z nią dostarczany, nic nie jest pobierane później (zasada 2.5.2).

Sterowanie dotykowe

Na iPhonie i iPadzie silnik rysuje sterowanie na ekranie jak w przeglądarce i na Androidzie: krzyżak (lub joystick), A, B i START. Ustawia się je w game.yaml:

game:
  touch: { pad: stick, a: Space, b: Escape, labels: { a: SAUT } }   # pad: stick = joystick, w przeciwnym razie krzyżak

Pad (Bluetooth, MFi) też działa. Na Macu: klawiatura, mysz, pad, jak na komputerze.

W aplikacji

  • PHP 8.5 skompilowane dla Maca (Apple i Intel) i dla iPhone'a z rozszerzeniami JumPHP (SDL i jego moduły obrazu, dźwięku i czcionek, OpenGL, OpenAL, gd, openssl, mbstring…), SDL2 i OpenAL Soft. Bez JIT: Apple zabrania go na iPhonie.
  • Twoja gra, taka jaka jest, w aplikacji. Zapisy i opcje trafiają do folderu aplikacji (Application Support) i zostają między aktualizacjami.
  • Nazwa, ikona (assets/icon.png, w przeciwnym razie inicjał tytułu) i orientacja (kształt gry) pochodzą z game.yaml.
  • Gry 3D (gl(), opengl()) działają: OpenGL ES na iPhonie, OpenGL na Macu (silnik sam dostosowuje shadery).
  • HTTPS działa ($engine->http(), gra online przez wss://).

Szczegóły techniczne: docs/apple.md w twoim projekcie.