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)
- Za pierwszym razem pyta o identyfikator aplikacji (
io.github.ty.mon-jeu: po publikacji w App Store już się nie zmienia). - Zapisuje wersję w
games/mon-jeu/apple/app.json, umieszcza workflow.github/workflows/apple.ymlw twoim projekcie, robi commit i, po twoim „tak”, wysyła zmiany. - 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.
- Publikuje release twojego repozytorium z aplikacjami i dwoma zrzutami ekranu oraz pobiera je do
games/mon-jeu/dist/apple/(zrzuty wcheck/: 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.
.ipaczeka 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ą zgame.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 przezwss://).
Szczegóły techniczne: docs/apple.md w twoim projekcie.