RU

Ваша игра как приложение для 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 (и симулятор)
  1. При первом запуске она спросит идентификатор приложения (io.github.vous.mon-jeu: после публикации в App Store он не меняется).
  2. Она запишет версию в games/mon-jeu/apple/app.json, добавит в ваш проект workflow .github/workflows/apple.yml, закоммитит их и, после вашего согласия, отправит изменения.
  3. GitHub собирает приложения на Mac (первый раз ~40 минут, затем ~10: PHP и библиотеки кэшируются), а затем пробует их: приложение для Mac запускает игру и сохраняет снимок, приложение для iPhone устанавливается в симулируемый iPhone, запускается и фотографируется.
  4. Она публикует релиз вашего репозитория с приложениями и двумя снимками и скачивает их в 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 в вашем проекте.