Oyununuz yerel bir Android uygulaması olarak
JumPHP oyununuzu tarayıcısız, gerçek bir Android uygulamasına dönüştürür: PHP 8.5, SDL, OpenGL ES ve OpenAL, bir bilgisayardaki gibi uygulamanın içinde çalışır. Çevrimdışı çalışır; telefonlarda (ARM) ve tabletlerde, Android 8.0 ya da daha yenisinde.
Bilgisayarınızda bir JumPHP projesi (bilgisayarınızda), Docker ve Play Store için bir Google Play geliştirici hesabı (bir kez 25 $) gerekir. Claude'unuz her şeyi sizin yerinize yapabilir: ona “oyunumun yerel bir Android uygulamasını yap” deyin.
Diğer yöntem, Trusted Web Activity, oyunun sayfasını Chrome'a koyar: daha hafiftir ama ağ ve site gerekir. Aynı paket ve aynı anahtarla yerel uygulama, Play Store'da TWA'nın yerini yeni bir sürüm gibi alır.
Tek bir komut
bin/jumphp android mon-jeu
- İlk seferde uygulamanın paket adını sorar (
io.github.siz.mon_jeu: yayınlandıktan sonra bir daha değişmez) ve~/.jumphp/android/keys/içinde yükleme anahtarınızı üretir (oyunun TWA'sı varsa onunkini kullanır). Yedekleyin, asla git'te değildir. - Projenize
.github/workflows/android.ymlworkflow'unu koyar ve evet dedikten sonra anahtarı GitHub deponuzun secret'larına gönderir (şifreli, yalnızca workflow okur). - Sürümü
games/mon-jeu/android/app.jsondosyasına yazar, commit'ler ve evet dedikten sonra push'lar. - GitHub uygulamayı üretir (ilk seferde ~25 dakika, sonra ~8: PHP ve kütüphaneler önbellekte tutulur) ve deponuzda, anahtarınızla imzalanmış
.apk(telefon için) ve.aab(Google Play için) dosyalarını içeren bir release yayınlar. Komut bunlarıgames/mon-jeu/dist/android-native/içine indirir.
Sonraki sürümler: bin/jumphp android mon-jeu --version-name 1.1 (sürüm numarası her seferinde bir artar). GitHub olmadan: --local uygulamayı bilgisayarınızda, Docker içinde üretir.
Telefonunuzda denemek için: .apk dosyasını telefona gönderip açın (“bilinmeyen uygulamaları yüklemeye” izin verin) ya da adb install mon-jeu-1.0.apk.
Dokunmatik kontroller
Motor, tarayıcıdaki gibi ekran kontrollerini kendisi çizer: yön tuşu (ya da bir joystick), A, B ve START; varsa yanlardaki siyah bantlara. Tarayıcıdaki gibi 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
Android'in geri düğmesi Esc'e karşılık gelir. Bilgisayarınızda görmek için: JUMPHP_TOUCH_CONTROLS=1 bin/jumphp run mon-jeu (fareyle).
Uygulamanın içinde
- JumPHP'nin eklentileriyle (SDL ve görüntü, ses ve font modülleri, OpenGL, OpenAL, gd, openssl, mbstring…) Android için derlenmiş PHP 8.5, SDL2 ve OpenAL Soft: oyunu bir bilgisayarda çalıştıran şeyler.
- Oyununuz, her sürümün ilk açılışında (bir iki saniye) uygulamanın özel depolama alanına açılır. Kayıtlar ve ayarlar bir güncellemeden diğerine orada kalır.
- Ad, simge (PWA'nınki:
assets/icon.png) ve yön (oyunun biçiminin yönü)game.yamldosyasından gelir.
Play Store'da
Tüm ayrıntılar (anahtarlar, telefonda denemeler, Play Console'daki her beyan, inceleme, sonraki sürümler, tuzaklar): Play Store'da yayınlama, adım adım. Kısaca:
- Play Console'da uygulamayı oluşturun (ad, dil, “Oyun”, ücretsiz) ve beyanları doldurun: gizlilik politikası (oyunun hiçbir şey toplamadığını söyleyen bir sayfa), içerik derecelendirmesi, hedef kitle, reklam yok.
- Google Play uygulama imzalama: Google, uygulamayı telefonlar için imzalayan anahtarı saklar; sizinki yalnızca gönderimlerin sizden geldiğini kanıtlar (kaybolursa Google onu değiştirebilir).
- Dahili test: Test et ve yayınla > Dahili testler > Sürüm oluştur >
.aabdosyasını gönderin > Kaydet > İncele > Kullanıma sun. Test kullanıcılarınızı ekleyin, Google'ın bağlantısından kurarlar. - Mağaza sayfası: açıklamalar, 512 × 512 simge (
bin/jumphp buildüretir:dist/web/icon-512.png), bir 1024 × 500 görsel, en az 2 ekran görüntüsü (bin/jumphp shot mon-jeu, ya da telefonda). - Üretim: testler iyi gittiğinde sürümü yükseltin. Google inceler (birkaç saatten birkaç güne). Yeni bir kişisel hesabın önce 14 gün boyunca 12 test kullanıcısı olmalıdır.
Bilmekte fayda var
- HTTPS çalışır (
$engine->http(), çevrimiçi oyunwss://ile): sertifikalar oyunla birlikte gelir. - Uygulama 30 ila 40 MB tutar (iki işlemci için PHP ve kütüphaneler).
Teknik ayrıntılar: projenizdeki docs/android-native.md.