TR

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, .dmg olarak;
  • iPhone ve iPad: bir .ipa uygulaması, 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)
  1. İ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).
  2. Sürümü games/mon-jeu/apple/app.json dosyasına yazar, projenize .github/workflows/apple.yml workflow'unu koyar, bunları commit'ler ve evet dedikten sonra push'lar.
  3. 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.
  4. 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üleri check/ 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. .ipa hesabı 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.yaml dosyası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 oyun wss:// ile).

Teknik ayrıntılar: projenizdeki docs/apple.md.