UK

Ваша гра у вигляді виконуваного файлу

Щоб віддати гру комусь, у кого нічого не встановлено (ні PHP, ні Docker): JumPHP робить із неї один файл, який завантажують і запускають, для Linux і для Windows. PHP, SDL, OpenGL та OpenAL уже всередині.

Потрібен проєкт JumPHP на вашому комп'ютері (на вашому комп'ютері) і Docker. Ваш Claude може зробити це замість вас: попросіть його «зроби виконуваний файл моєї гри».

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

Як це зроблено

  • PHP береться зі StaticPHP (micro): PHP 8.5 в одному виконуваному файлі з розширеннями JumPHP (SDL та його модулі зображень, звуку й шрифтів, OpenGL, OpenAL, gd, zip…), усі вони скомпільовані всередину.
  • Ваша гра (її код, зображення, звуки, рушій) додається в кінець у вигляді архіву PHAR.

Цей PHP однаковий для всіх ігор: його збирають один раз (~15 хвилин у Linux) або завантажують з опублікованих релізів JumPHP, а потім зберігають у ~/.jumphp/standalone. Після цього виконуваний файл створюється за кілька секунд.

У гравця

Під час першого запуску гра розпаковується в його кеш (одна секунда), наступні запускаються одразу. Збереження та налаштування потрапляють у його теку даних:

Linux Windows
гра ~/.cache/jumphp/ %LOCALAPPDATA%\JumPHP\
збереження ~/.local/share/<id гри>/ %APPDATA%\<id гри>\

У Linux гра працює в будь-якому дистрибутиві від 2013 року (glibc 2.17) і використовує дисплей (X11 або XWayland), OpenGL і звук (PulseAudio, PipeWire, ALSA) комп'ютера, як будь-яка гра для Linux. У Windows (10 або новіша) нічого встановлювати не потрібно.

Корисно знати

  • Файл не підписано: Windows показує «Windows захистила ваш ПК», потрібно натиснути Докладніше, а потім Все одно виконати. У Linux після завантаження: chmod +x mon-jeu-linux-x86_64.
  • PHP для Windows можна зібрати лише у Windows: його збирає GitHub (workflow standalone репозиторію JumPHP), а команда завантажує його.
  • Лише процесори x86_64 (поки що без Mac і ARM).

Технічні подробиці: docs/standalone.md у вашому проєкті.