Создание игры с JumPHP
JumPHP — фреймворк для написания 2D-ретроигр на PHP. Один и тот же код работает на компьютере (PHP + SDL2, в настоящем окне) и в браузере (PHP, скомпилированный в WebAssembly): именно так работают все игры этого сайта. Начать можно по-разному, от самого быстрого способа до самого полного.
| Способ | Аккаунт | Что нужно | Для кого |
|---|---|---|---|
| Песочница | нет | браузер | попробовать за 1 минуту: изменить hello world и запустить его |
| С вашим Claude | GitHub | Claude Code + Docker | описать игру и поручить Claude написать, протестировать и опубликовать её |
| Онлайн-редактор | GitHub | браузер | доработать опубликованную игру или сделать форк чужой |
| На вашем компьютере | нет (GitHub — для публикации) | Docker | разрабатывать по-взрослому: тесты, скриншоты, браузерная сборка. Одной строкой: curl -fsSL https://jumphp.net/install.sh | sh |
| Импорт репозитория | GitHub | репозиторий JumPHP | опубликовать здесь уже существующую игру |
| Ремейк для Amstrad CPC | GitHub | дискета игры .dsk |
воссоздать игру для CPC с её оригинальной графикой и музыкой |
| Порт существующей игры | GitHub | её исходный код | перевести старую игру (C, Pascal, BASIC…) на PHP |
Затем уроки шаг за шагом строят игру:
- Hello world: меню, текст, звук
- Персонаж, который двигается и анимируется
- Платформер: уровень, столкновения, камера
- Звуки и музыка
- Меню, настройки, пауза и языки
- Сохранение рекордов и настроек
- Мультиплеер по сети
- Главная страница игры и её публикация
Когда игра готова: выложите её в Google Play (приложение для Android, собранное командой bin/jumphp twa).
А для программ, которые хотят читать каталог: публичный API.
Как устроена игра JumPHP
Игра — это папка games/<id>/ проекта JumPHP:
games/mon-jeu/
config/game.yaml название, разрешение (320 × 180…), первая сцена
config/input.yaml действия (прыжок, выстрел…) и их клавиши, геймпад, сенсорный экран
src/Scene/*.php экраны: заставка, игра, пауза…
src/Entity/*.php всё, что движется: герой, враги…
assets/ картинки, звуки, музыка, уровни (необязательно: всё можно нарисовать на PHP)
site/ (необязательно) главная страница игры
На каждом кадре (60 раз в секунду) движок вызывает update($dt) у отображаемой сцены (мы меняем состояние игры), затем render($r) (мы рисуем). Координаты — «виртуальные» пиксели (разрешение игры): движок сам увеличивает картинку до размера экрана.
Полный контракт фреймворка, для людей и для ИИ, — файл AGENTS.md в репозитории JumPHP.