JumPHP ile oyun yapın
JumPHP, PHP ile 2D retro oyunlar yazmak için bir framework'tür. Aynı kod masaüstünde (PHP + SDL2, gerçek bir pencerede) ve tarayıcıda (WebAssembly'ye derlenmiş PHP) çalışır: bu sitedeki tüm oyunlar bu sayede çalışıyor. Başlamanın en hızlısından en eksiksizine kadar birkaç yolu var.
| Yöntem | Hesap | Gerekenler | Kimin için |
|---|---|---|---|
| Kum havuzu | hayır | bir tarayıcı | 1 dakikada denemek için: bir hello world'ü değiştirip çalıştırın |
| Claude'unuzla | GitHub | Claude Code + Docker | oyununuzu anlatıp Claude'un yazmasını, test etmesini ve yayınlamasını sağlamak için |
| Çevrimiçi editör | GitHub | bir tarayıcı | yayınlanmış bir oyunu düzeltmek ya da başkasının oyununu fork'lamak için |
| Bilgisayarınızda | hayır (yayınlamak için GitHub) | Docker | profesyoneller gibi geliştirmek için: testler, ekran görüntüleri, tarayıcı derlemesi. Tek satırda: curl -fsSL https://jumphp.net/install.sh | sh |
| Depo içe aktar | GitHub | bir JumPHP deposu | zaten var olan bir oyunu burada yayınlamak için |
| Amstrad CPC remake'i | GitHub | oyunun .dsk disketi |
bir CPC oyununu özgün grafikleri ve müziğiyle yeniden yapmak için |
| Mevcut bir oyunu taşıma | GitHub | kaynak kodu | eski bir oyunu (C, Pascal, BASIC…) PHP'ye çevirmek için |
Ardından eğitimler adım adım bir oyun kurar:
- Hello world: bir menü, bir metin, bir ses
- Hareket eden ve canlanan bir karakter
- Bir platform oyunu: bölüm, çarpışmalar, kamera
- Ses ve müzik
- Menüler, ayarlar, duraklatma ve diller
- Skorları ve ayarları kaydetmek
- Çevrimiçi çok oyunculu
- Oyunun ana sayfası ve yayınlanması
Oyun bittiğinde: Google Play'e koymak (bin/jumphp twa ile yapılan bir Android uygulaması).
Dizini okumak isteyen programlar için de: herkese açık API.
Bir JumPHP oyunu nasıl çalışır
Bir oyun, bir JumPHP projesinin games/<id>/ klasörüdür:
games/mon-jeu/
config/game.yaml başlık, çözünürlük (320 × 180…), ilk sahne
config/input.yaml eylemler (zıplamak, ateş etmek…) ve tuşları, oyun kolu, dokunmatik ekran
src/Scene/*.php ekranlar: başlık, oyun, duraklatma…
src/Entity/*.php hareket eden şeyler: kahraman, düşmanlar…
assets/ görseller, sesler, müzik, bölümler (isteğe bağlı: her şey PHP ile çizilebilir)
site/ (isteğe bağlı) oyunun ana sayfası
Her karede (saniyede 60 kez) motor, görüntülenen sahnenin update($dt) metodunu (oyunun durumunu değiştiririz), ardından render($r) metodunu (çizeriz) çağırır. Koordinatlar “sanal” piksellerdir (oyunun çözünürlüğü): motor görüntüyü ekranın boyutuna büyütür.
Framework'ün eksiksiz sözleşmesi, insanlar için de yapay zekâlar için de, JumPHP deposundaki AGENTS.md dosyasıdır.