Ваша игра как приложение для Mac, iPhone и iPad
JumPHP превращает вашу игру в настоящие приложения Apple без браузера: PHP 8.5, SDL, OpenGL и OpenAL работают прямо в приложении, как на компьютере и в нативном приложении для Android.
- Mac: приложение для Mac на чипах Apple (M1 и новее) и на Intel, macOS 11 или новее, в виде
.dmg; - iPhone и iPad: приложение
.ipa, iOS 14 или новее, с сенсорным управлением, которое рисует движок, и с ориентацией игры; и такое же для симулятора Xcode.
Для сборки приложения Apple нужен Xcode, а значит, Mac. Но иметь его не обязательно: GitHub собирает приложение на одном из своих Mac (бесплатно для публичного репозитория), с любого компьютера. Вам понадобятся проект JumPHP на вашем компьютере (на вашем компьютере) и репозиторий GitHub. Ваш Claude может сделать всё за вас: попросите его «сделай приложения для Mac и iPhone из моей игры».
Одна команда
bin/jumphp apple mon-jeu # Mac + iPhone / iPad
bin/jumphp macos mon-jeu # только Mac
bin/jumphp ios mon-jeu # только iPhone / iPad (и симулятор)
- При первом запуске она спросит идентификатор приложения (
io.github.vous.mon-jeu: после публикации в App Store он не меняется). - Она запишет версию в
games/mon-jeu/apple/app.json, добавит в ваш проект workflow.github/workflows/apple.yml, закоммитит их и, после вашего согласия, отправит изменения. - GitHub собирает приложения на Mac (первый раз ~40 минут, затем ~10: PHP и библиотеки кэшируются), а затем пробует их: приложение для Mac запускает игру и сохраняет снимок, приложение для iPhone устанавливается в симулируемый iPhone, запускается и фотографируется.
- Она публикует релиз вашего репозитория с приложениями и двумя снимками и скачивает их в
games/mon-jeu/dist/apple/(снимки лежат вcheck/: посмотрите их).
Следующие версии: bin/jumphp apple mon-jeu --version 1.1 (номер сборки каждый раз растёт на единицу). На Mac с Xcode: --local собирает всё на месте.
Файлы вне git (данные оригинальной игры, хранимые вне публичного репозитория, как приватные файлы playground): команда находит их и, после вашего согласия, кладёт в черновой релиз вашего репозитория, который видят только те, у кого есть право записи; Mac на GitHub возвращает их в игру перед сборкой. Сами приложения содержат эти файлы: их релиз тоже будет черновиком, и решать, публиковать ли его, вам.
Без аккаунта разработчика Apple (для начала)
Приложения подписываются «ad hoc», без личности:
- Mac: в первый раз щёлкните по приложению правой кнопкой > Открыть (macOS спросит один раз). Отлично подходит для вас, ваших друзей и тестировщиков.
- iPhone / iPad: iPhone устанавливает только приложение, подписанное для него.
.ipaждёт аккаунт (см. ниже). А пока: приложение для симулятора (на Mac с Xcode) и веб-версия, которая устанавливается из Safari (Поделиться > На экран «Домой»).
С аккаунтом разработчика Apple (потом)
Каждый разработчик берёт собственный аккаунт Apple Developer Program (99 $ в год): приложения публикуются от его имени, с его сертификатами, хранимыми в секретах его репозитория. Он нужен, чтобы:
- открывать приложение для Mac без правого щелчка: подпись Developer ID и нотаризация Apple;
- устанавливать приложение на iPhone, отправлять его в TestFlight, а затем в App Store.
Это следующий этап JumPHP. App Store принимает игру на PHP: код работает внутри приложения и поставляется вместе с ним, ничего не скачивается потом (правило 2.5.2).
Сенсорное управление
На iPhone и iPad движок рисует экранное управление, как в браузере и на Android: крестовину (или джойстик), A, B и START. Настраивается оно в game.yaml:
game:
touch: { pad: stick, a: Space, b: Escape, labels: { a: SAUT } } # pad: stick = joystick, sinon la croix
Геймпад (Bluetooth, MFi) тоже работает. На Mac: клавиатура, мышь, геймпад, как на компьютере.
Внутри приложения
- PHP 8.5, скомпилированный для Mac (Apple и Intel) и для iPhone с расширениями JumPHP (SDL и его модули для изображений, звука и шрифтов, OpenGL, OpenAL, gd, openssl, mbstring…), SDL2 и OpenAL Soft. Без JIT: Apple запрещает его на iPhone.
- Ваша игра как есть, внутри приложения. Сохранения и настройки лежат в папке приложения (Application Support) и остаются от обновления к обновлению.
- Название, иконка (
assets/icon.png, иначе первая буква названия) и ориентация (по форме игры) берутся изgame.yaml. - 3D-игры (
gl(),opengl()) работают: OpenGL ES на iPhone, OpenGL на Mac (движок сам адаптирует шейдеры). - HTTPS работает (
$engine->http(), онлайн-игра черезwss://).
Технические подробности: docs/apple.md в вашем проекте.