Здравия желаю.
Хочу поделиться результатами своего знакомства с Python (которое началось не так давно), а в частности с портом на платформу Android довольно известной медиа-библиотеки Pygame (которая, в свою очередь, является оберткой для не менее известной SDL). Поскольку поиск на хабре по теме поста не дал результатов, рискну предположить что тема ранее не поднималась, но в тоже время будет интересна людям, заинтересованным в применении Python для разработки приложений, использующих медиаконтент, в том числе для Android.
Итак, Pygame Subset for Android (PS4A).
The Pygame Subset for Android is a port of a subset of Pygame functionality to the Android platform. The goal of the project is to allow the creation of Android-specific games, and to ease the porting of games from PC-like platforms to Android.
Именно таким текстом встречает посетителя главная страница сайта PS4A. Там же можно без труда обнаружить ссылки для скачивания .apk и установки из Android Market, а также оглавление имеющейся документации. Собственно в документации можно отыскать список модулей, которые портированы (разделены на группы таким образом: android, android_mixer, pygame и Python) а также руководства для выполнения конктетных действий. Если честно, объем документации не впечатляет, но для начала вполне достаточно. Там же, на сайте, есть и шаблон приложения (с обнадеживающим названием «Writing a game», но очень упрощенный – готовое приложение можно скачать по ссылке внизу), и ссылки на родительские технологии/библиотеки (Pygame, SDL, Python, Jtar).
Впервые скриптинг под Android я попробовал благодаря Scripting Layer for Android и был заинтригован расширением возможностей в направлении графики. Так мне и попался PS4A. Сразу было принято решение написать демку, которая проверяла бы следующий функционал:
Вот что получилось:
В верхнем левом углу выводятся: FPS, последний обработанный event, данные прочитанные с акселерометра и общее количество выводимых примитивов (линий и точек). Замечено стремительное падение FPS после отрисовки 100+ примитивов. В нижнем левом углу – toogle-button для включения/выключения задержки на 50 миллисекунд каждого кадра, а в правом нижнем углу – кнопка очистки экрана от результатов творческого процесса. Робот (зеленый персонаж в белом квадрате, на скриншоте он находится в правом нижнем углу скрывая за широкой спиной половину кнопки очистки экрана) перемещается по экрану в зависимости от данных прочитанных с акселерометра. На устройстве приложение работает корректно, но FPS скромно держится в районе 20-25.
В качестве вывода можно сказать что вряд ли PS4A можно использовать для разработки каких-либо серьезных игр или медиаприложений (быстродействие оставляет желать лучшего, и поддержки OpenGL, насколько я понимаю, нет даже в планах), но для небольших спрайтовых демок – вполне.
(Для установки на устройство приложение достаточно распаковать из архива и залить в /sdcard/pygame/<отдельная_папка>, после чего его можно будет обнаружить в главном меню PS4A).
Хочу поделиться результатами своего знакомства с Python (которое началось не так давно), а в частности с портом на платформу Android довольно известной медиа-библиотеки Pygame (которая, в свою очередь, является оберткой для не менее известной SDL). Поскольку поиск на хабре по теме поста не дал результатов, рискну предположить что тема ранее не поднималась, но в тоже время будет интересна людям, заинтересованным в применении Python для разработки приложений, использующих медиаконтент, в том числе для Android.
Итак, Pygame Subset for Android (PS4A).
The Pygame Subset for Android is a port of a subset of Pygame functionality to the Android platform. The goal of the project is to allow the creation of Android-specific games, and to ease the porting of games from PC-like platforms to Android.
Именно таким текстом встречает посетителя главная страница сайта PS4A. Там же можно без труда обнаружить ссылки для скачивания .apk и установки из Android Market, а также оглавление имеющейся документации. Собственно в документации можно отыскать список модулей, которые портированы (разделены на группы таким образом: android, android_mixer, pygame и Python) а также руководства для выполнения конктетных действий. Если честно, объем документации не впечатляет, но для начала вполне достаточно. Там же, на сайте, есть и шаблон приложения (с обнадеживающим названием «Writing a game», но очень упрощенный – готовое приложение можно скачать по ссылке внизу), и ссылки на родительские технологии/библиотеки (Pygame, SDL, Python, Jtar).
Впервые скриптинг под Android я попробовал благодаря Scripting Layer for Android и был заинтригован расширением возможностей в направлении графики. Так мне и попался PS4A. Сразу было принято решение написать демку, которая проверяла бы следующий функционал:
- Чтение данных акселерометра
- Вывод графических примитивов, спрайтов
- Вывод текста
- Проверка производительности (проще говоря – вывод FPS)
- Ввод с помощью сенсорного экрана
Вот что получилось:
В верхнем левом углу выводятся: FPS, последний обработанный event, данные прочитанные с акселерометра и общее количество выводимых примитивов (линий и точек). Замечено стремительное падение FPS после отрисовки 100+ примитивов. В нижнем левом углу – toogle-button для включения/выключения задержки на 50 миллисекунд каждого кадра, а в правом нижнем углу – кнопка очистки экрана от результатов творческого процесса. Робот (зеленый персонаж в белом квадрате, на скриншоте он находится в правом нижнем углу скрывая за широкой спиной половину кнопки очистки экрана) перемещается по экрану в зависимости от данных прочитанных с акселерометра. На устройстве приложение работает корректно, но FPS скромно держится в районе 20-25.
В качестве вывода можно сказать что вряд ли PS4A можно использовать для разработки каких-либо серьезных игр или медиаприложений (быстродействие оставляет желать лучшего, и поддержки OpenGL, насколько я понимаю, нет даже в планах), но для небольших спрайтовых демок – вполне.
Приложения:
- Демка из “Writing a game” (меняет цвет экрана при нажатии)
- Моя демка (предупреждение для эстетов и гуру — код довольно громоздкий и не претендует на изящное решение задачи)
(Для установки на устройство приложение достаточно распаковать из архива и залить в /sdcard/pygame/<отдельная_папка>, после чего его можно будет обнаружить в главном меню PS4A).
Ссылки:
- Pygame Subset for Android — pygame.renpy.org
- Pygame — pygame.org/news.html
- Блог по книге “Invent Your Own Computer Games with Python”, там же ссылка на бесплатный eBook — inventwithpython.com/blog/category/code-comments