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
standalonerepozytorium JumPHP), a polecenie je pobiera. - Tylko procesory x86_64 (jeszcze bez Maca i ARM).
Szczegóły techniczne: docs/standalone.md w twoim projekcie.