PL

Twoja gra jako plik wykonywalny

Aby dać grę komuś, kto nie ma nic zainstalowanego (ani PHP, ani Dockera): JumPHP robi z niej jeden plik, który się pobiera i uruchamia, na Linuksa i Windowsa. PHP, SDL, OpenGL i OpenAL są w środku.

Potrzebny jest projekt JumPHP na twoim komputerze (na twoim komputerze) i Docker. Twój Claude może to zrobić za ciebie: poproś go „zrób plik wykonywalny mojej gry”.

bin/jumphp export:standalone mon-jeu              # Linux: games/mon-jeu/dist/standalone/mon-jeu-linux-x86_64
bin/jumphp export:standalone mon-jeu --windows    # Windows: mon-jeu-windows-x86_64.exe
bin/jumphp export:standalone mon-jeu --linux --windows

Jak to jest zrobione

  • PHP pochodzi ze StaticPHP (micro): PHP 8.5 w jednym pliku wykonywalnym, z rozszerzeniami JumPHP (SDL i jego moduły obrazu, dźwięku i czcionek, OpenGL, OpenAL, gd, zip…), wszystkie skompilowane w środku.
  • Twoja gra (jej kod, obrazy, dźwięki, silnik) jest dołączana na końcu w postaci archiwum PHAR.

To PHP jest takie samo dla wszystkich gier: powstaje raz (~15 minut w Linuksie) albo jest pobierane z opublikowanych wersji JumPHP, a potem przechowywane w ~/.jumphp/standalone. Później plik wykonywalny powstaje w kilka sekund.

U gracza

Pierwsze uruchomienie rozpakowuje grę do jego pamięci podręcznej (sekunda), kolejne startują od razu. Zapisy i opcje trafiają do jego folderu danych:

Linux Windows
gra ~/.cache/jumphp/ %LOCALAPPDATA%\JumPHP\
zapisy ~/.local/share/<id gry>/ %APPDATA%\<id gry>\

W Linuksie działa na każdej dystrybucji od 2013 roku (glibc 2.17) i korzysta z wyświetlania (X11 lub XWayland), OpenGL i dźwięku (PulseAudio, PipeWire, ALSA) komputera, jak każda gra na Linuksa. W Windowsie (10 lub nowszym) nie trzeba nic instalować.

Warto wiedzieć

  • Plik nie jest podpisany: Windows wyświetla „System Windows ochronił ten komputer”, trzeba kliknąć Więcej informacji, a potem Uruchom mimo to. W Linuksie, po pobraniu: chmod +x mon-jeu-linux-x86_64.
  • PHP dla Windowsa można zbudować tylko w Windowsie: buduje je GitHub (workflow standalone repozytorium JumPHP), a polecenie je pobiera.
  • Tylko procesory x86_64 (jeszcze bez Maca i ARM).

Szczegóły techniczne: docs/standalone.md w twoim projekcie.