Oyununuz Mac, iPhone ve iPad uygulaması olarak
JumPHP oyununuzu tarayıcısız, gerçek Apple uygulamalarına dönüştürür: PHP 8.5, SDL, OpenGL ve OpenAL, bir bilgisayardaki ve yerel Android uygulamasındaki gibi uygulamanın içinde çalışır.
- Mac: Apple'lı (M1 ve sonrası) ve Intel Mac'ler için bir uygulama, macOS 11 ya da daha yenisi,
.dmgolarak; - iPhone ve iPad: bir
.ipauygulaması, iOS 14 ya da daha yenisi, motorun çizdiği dokunmatik kontroller ve oyunun yönüyle; ayrıca Xcode simülatörü için aynısı.
Bir Apple uygulaması üretmek Xcode, yani bir Mac gerektirir. Sizin bir Mac'e sahip olmanız gerekmez: GitHub onu kendi Mac'lerinden birinde üretir (herkese açık bir depo için ücretsiz), herhangi bir bilgisayardan. Bilgisayarınızda bir JumPHP projesi (bilgisayarınızda) ve bir GitHub deposu gerekir. Claude'unuz her şeyi sizin yerinize yapabilir: ona “oyunumun Mac ve iPhone uygulamalarını yap” deyin.
Tek bir komut
bin/jumphp apple mon-jeu # Mac + iPhone / iPad
bin/jumphp macos mon-jeu # yalnızca Mac
bin/jumphp ios mon-jeu # yalnızca iPhone / iPad (ve simülatör)
- İlk seferde uygulamanın tanımlayıcısını sorar (
io.github.siz.mon-jeu: App Store'a girdikten sonra bir daha değişmez). - Sürümü
games/mon-jeu/apple/app.jsondosyasına yazar, projenize.github/workflows/apple.ymlworkflow'unu koyar, bunları commit'ler ve evet dedikten sonra push'lar. - GitHub uygulamaları bir Mac'te üretir (ilk seferde ~40 dakika, sonra ~10: PHP ve kütüphaneler önbellekte tutulur), ardından dener: Mac uygulaması oyunu çalıştırır ve bir görüntüsünü saklar, iPhone uygulaması simüle edilmiş bir iPhone'a kurulur, başlatılır ve fotoğrafı çekilir.
- Deponuzda uygulamaları ve iki ekran görüntüsünü içeren bir release yayınlar ve bunları
games/mon-jeu/dist/apple/içine indirir (ekran görüntülericheck/içinde: bakın).
Sonraki sürümler: bin/jumphp apple mon-jeu --version 1.1 (build numarası her seferinde bir artar). Xcode'lu bir Mac'te: --local her şeyi yerinde üretir.
git dışındaki dosyalar (herkese açık bir depoya konmayan, özgün bir oyunun verileri; playground'un özel dosyaları gibi): komut onları bulur ve evet dedikten sonra deponuzun bir taslak release'ine koyar; bunu yalnızca yazma yetkisi olanlar görür; GitHub'ın Mac'i, oyunu üretmeden önce onları oyuna geri koyar. Uygulamalar bu dosyaları içerir: bu yüzden onların release'i de bir taslaktır, yayınlayıp yayınlamamaya siz karar verirsiniz.
Apple geliştirici hesabı olmadan (başlamak için)
Uygulamalar kimliksiz, “ad hoc” imzalanır:
- Mac: ilk seferde uygulamaya sağ tık > Aç (macOS bir kez sorar). Sizin, arkadaşlarınızın, test kullanıcılarınızın için mükemmel.
- iPhone / iPad: bir iPhone yalnızca kendisi için imzalanmış bir uygulamayı kurar.
.ipahesabı bekler (aşağıda). Bu arada: simülatör uygulaması (Xcode'lu bir Mac'te) ve web sürümü Safari'den kurulur (Paylaş > Ana Ekrana Ekle).
Apple geliştirici hesabıyla (sonra)
Her geliştirici Apple Developer Program'ın kendi hesabını alır (yılda 99 $): uygulamalar kendi adıyla, deposunun secret'larında saklanan sertifikalarıyla yayınlanır. Şunlar için kullanılır:
- Mac uygulamasını sağ tık olmadan açmak: Developer ID imzası ve Apple'ın noter onayı (notarization);
- uygulamayı bir iPhone'a kurmak, TestFlight'a, ardından App Store'a göndermek.
Bu, JumPHP'nin bir sonraki adımıdır. App Store PHP ile yazılmış bir oyunu kabul eder: kod uygulamanın içinde çalışır ve onunla birlikte gelir, sonradan hiçbir şey indirilmez (kural 2.5.2).
Dokunmatik kontroller
iPhone ve iPad'de motor, tarayıcıdaki ve Android'deki gibi ekran kontrollerini çizer: yön tuşu (ya da bir joystick), A, B ve START. game.yaml içinde ayarlanırlar:
game:
touch: { pad: stick, a: Space, b: Escape, labels: { a: SAUT } } # pad: stick = joystick, yoksa yön tuşu
Bir oyun kolu (Bluetooth, MFi) de çalışır. Mac'te: bir bilgisayardaki gibi klavye, fare, oyun kolu.
Uygulamanın içinde
- JumPHP'nin eklentileriyle (SDL ve görüntü, ses ve font modülleri, OpenGL, OpenAL, gd, openssl, mbstring…) Mac (Apple ve Intel) ve iPhone için derlenmiş PHP 8.5, SDL2 ve OpenAL Soft. JIT yok: Apple iPhone'da yasaklıyor.
- Oyununuz uygulamanın içinde olduğu gibi durur. Kayıtlar ve ayarlar uygulamanın klasörüne (Application Support) gider ve bir güncellemeden diğerine kalır.
- Ad, simge (
assets/icon.png, yoksa başlığın baş harfi) ve yön (oyunun biçimi)game.yamldosyasından gelir. - 3D oyunlar (
gl(),opengl()) çalışır: iPhone'da OpenGL ES, Mac'te OpenGL (motor shader'ları kendisi uyarlar). - HTTPS çalışır (
$engine->http(), çevrimiçi oyunwss://ile).
Teknik ayrıntılar: projenizdeki docs/apple.md.