Глава 20 · Разработка игр с Pygame

Что реально возможно на Android, iOS и консолях

Android доступен только через экспериментальную интеграцию сообщества, не принятую в основной репозиторий python-for-android. iOS — через инструмент, который его собственный автор называет экспериментальным.

Раздел 20.13 уже дал ответ в общих чертах: Pygame не публикуется на мобильные платформы одной командой. Здесь — подробнее о том, как выглядят оба реальных пути на практике, а не только то, что они существуют.

Android — python-for-android, Buildozer и экспериментальные рецепты

python-for-android — это инфраструктура для упаковки Python-приложений под Android; поверх неё обычно используют Buildozer — более высокоуровневый инструмент, который берёт настройки из простого конфигурационного файла и запускает сборку .apk за вас, подключая нужные рецепты. На момент проверки в основном репозитории python-for-android нет принятого официального рецепта pygame-ce — есть только открытые community pull request'ы, добавляющие такой рецепт, и пользовательские рецепты, которые можно подключить вручную. Поэтому обычная установка Buildozer сама по себе не даёт готовой поддержки pygame-ce: собрать APK с pygame-ce можно, подключив один из этих рецептов вручную (например, через форк или локальный custom-рецепт), но это экспериментальная, а не стандартная или гарантированно поддерживаемая интеграция — совместимость стоит проверять заново на момент сборки и обязательно тестировать на реальном устройстве. Процесс в любом случае заметно длиннее, чем упаковка под десктоп (раздел 20.29): нужен набор инструментов Android (Android SDK/NDK), сборка занимает существенно больше времени, а итоговый размер файла заметно больше, чем сам код игры — внутрь APK упаковывается целая среда выполнения Python.

iOS — через pygame-ios, экспериментальный инструмент

pygame-ios — экспериментальный проект, не готовый к публикации
Для iOS есть инструмент сообщества pygame-ios — шаблон проекта, который встраивает Pygame-игру в стандартный проект Xcode. Его собственная документация прямо описывает его как недостаточно протестированный и не готовый к продакшн-использованию: автор инструмента сообщает, что сборка для реальной публикации в App Store им лично не проверялась. Это не "один из двух равноценных путей", а заметно менее зрелый инструмент, чем python-for-android — воспринимать его стоит как отправную точку для экспериментов, а не как готовый маршрут публикации.

Помимо статуса самого инструмента, публикация на iOS требует компьютера Mac (Xcode доступен только на macOS), сборки и подписи через сам Xcode и, как и любое iOS-приложение, платного аккаунта разработчика Apple. Инструмент поддерживает не каждую версию pygame-ce — конкретную совместимость стоит сверять с документацией инструмента на момент сборки, а не полагаться на память из прошлого проекта.

AndroidiOS
Инструментpython-for-android + Buildozer (сообщество)pygame-ios (сообщество, экспериментальный)
Официальная поддержка pygame-ceНет — рецепт не принят в основной репозиторийНет
Готовность к публикацииЭкспериментальная сборка через community pull request'ы или custom-рецепт; требует проверки актуального состояния рецепта и инструментовАвтор описывает как не готовый к продакшену
Нужная система для сборкиWindows, macOS или LinuxТолько macOS (нужен Xcode)
Итоговый формат.apk / .aabПроект Xcode → .ipa
ПубликацияGoogle PlayApp Store, нужен аккаунт разработчика Apple

Консоли

Для игровых консолей (раздел 20.9) заметной, поддерживаемой сообществом переходной цепочки вроде python-for-android не существует. Публикация на консоли остаётся отдельным, закрытым процессом через официальный SDK производителя — это не связано с выбором Pygame конкретно, так же устроена публикация игр, написанных на любом инструменте.

Планируйте мобильную сборку заранее, а не в конце
Оба мобильных пути добавляют реальную инженерную работу поверх готовой десктопной игры — это не финальный экспорт нажатием одной кнопки, а отдельный этап проекта со своими требованиями к окружению сборки, причём готовность этих путей заметно различается между Android и iOS. Решение выпустить игру и на телефоны стоит принимать в начале работы над игрой (учитывая ограничения раздела 20.13 — батарею, память, жизненный цикл, ввод), а не пытаться пристроить его после того, как весь код уже написан под десктопные предположения.