Вы когда-нибудь думали о переносе своей игры для iOS на планшет BlackBerry PlayBook? Портировав свою игру Pop Corny, я хочу поделиться с вами некоторыми подробностями данного процесса.
Основы
Возможно вы, как и я ранее, считаете, что PlayBook имеет определённое отношение к технологиям, заложенным в телефоны BlackBerry. Аналогичным образом думал и я, посему длительное время не рассматривал данный планшет при переносе своих игр. На самом деле PlayBook базируется на новой платформе, которую RIM создала на основе операционной системы QNX. Она же будет использована в новых смартфонах на ОС BlackBerry 10. Несмотря на опасение, что RIM, как и Google, вынуждает разработчиков использовать Java, а поддержку нативных средств разработки добавила гораздо позже, реальность оказалась куда лучше. Канадская компания предлагает среду нативной разработки (NDK — Native Development Kit), являющуюся комплексным решением для создания ПО для своего планшета. В отличие от Android, для которого NDK представляет собой расширение для основной среды разработки, поддерживает минимальную функциональность и требует обращения к Java в большинстве случаев, для PlayBok вы можете писать «родные» приложения без оглядки на Java. NDK обеспечивает полноценный API для всего, что вам потребуется: от работы с экраном и средствами ввода до внутриигровых покупок.
Среда разработки, предоставляемая RIM, называется QNX Momentics и базируется на Eclipse, однако вы, при желании, можете делать всё при помощи утилит командной строки. Я выбрал Momentics даже не смотря на то, что считаю Eclipse медленной и неповоротливой, поскольку в ней удобно разрабатывать на C/C++ (присутствуют отладчик, профайлер и т.д.). К тому же я хотел посмотреть, насколько меня хватит до момента, когда я начну скучать по командной строке. На удивление, впервые за всё время моего знакомства с Eclipse, я не пожалел о выбранном пути.
А сейчас мы рассмотрим основные аспекты переноса игрового приложения с iOS на PlayBook.
Ввод данных
Обработка ввода данных в PlayBook OS очень проста и, в соответствии с тем, как это делает iOS, у вас не должно возникнуть особых проблем. Как и любое другое событие в системе, события прикосновения к экрану представлены в виде структуры bps_event_t, которую вы получаете при помощи bps_get_event(). Данное событие принадлежит к «области экрана» и вы запрашиваете его данные, используя набор функций screen_get_event_property*().
int touch_state;
int id;
int position[2];
screen_get_event_property_iv(screen_event, SCREEN_PROPERTY_TYPE, &touch_state);
screen_get_event_property_iv(screen_event, SCREEN_PROPERTY_TOUCH_ID, &id);
screen_get_event_property_iv(screen_event, SCREEN_PROPERTY_SOURCE_POSITION, position);
Вышеприведенный пример кода — всё, что вам необходимо для получения базовой информации о прикосновении к экрану. touch_state может быть нескольких типов: SCREEN_EVENT_MTOUCH_TOUCH, SCREEN_EVENT_MTOUCH_MOVE и SCREEN_EVENT_MTOUCH_RELEASE. Их можно сопоставить событиям «начало прикосновения/изменение положения/окончание прикосновения» в iOS, правда, стоит отметить отсутствие события «отмена».
Кроме того, поскольку вы опрашиваете событие, вы получаете его в том потоке, который вам необходим и у вас не возникнет проблем, которые были лично у меня при портировании игры с iOS на Android.
Так как у PlayBook отсутствуют базовые аппаратные клавиши, обрабатывать их нет нужды.
Звук
Как и в iOS, PlayBook OS поддерживает OpenAL. Если для работы со звуком у вас используется данная открытая библиотека, вам ничего не придётся изменять в процессе переноса своей программы. ОС планшета также поддерживает набор утилит ALUT (OpenAL Utility Kit) в случае, если он вам понадобится.
Графика
Как и следует ожидать, PlayBook поддерживает OpenGL ES (версий 1.1 и 2.0) без каких-либо проблем. В комплекте с NDK поставляется пример простого приложения, использующего OpenGL, который обрабатывает все нюансы относительно настройки экрана. Благодаря простому, но вместе с тем эффективному дизайну API, данный пример является самодостаточным и не требует более детального рассмотрения.
Планшет обладает экраном с разрешением 1024х600 пикселей и соотношением сторон почти 16:9, вследствие чего он более узкий, нежели экран в текущих iPhone и, конечно же, iPad. В зависимости от вашей игры, вам понадобится либо переделать пользовательский интерфейс под данное разрешение, либо добавить чёрные полосы по краям. В случае с Pop Corny она поддерживает соотношение сторон от 1,33 до 1,50 с интерфейсом, автоматически подстраивающимся под него. Поэтому для версии игры под PlayBook я добавил чёрные полосы, тем самым уменьшив соотношение сторон с 1,7 до 1,50.
Количество пикселей на экране примерно сопоставимо с таковым у iPhone 4 и iPad 2, поэтому если у вас есть графические материалы для данных устройств, их можно будет использовать для PlayBook без особых проблем. Если же ваша игра оптимизирована под разрешение экрана iPad 3, вам, скорее всего, придётся уменьшить размеры графических элементов, дабы не забивать ценную память планшета пользователя впустую.
Контент
Загрузка контента — проще не бывает: никакого тыканья в Zip-файлы, отключения компресcии, специфических расширений или менеджеров по управлению ассетами (привет, Android!). Приложения распространяются в виде .bar-файлов, которые в сущности представляют собой zip-архивы. Во время установки содержимое .bar-файла распаковывается и приложение может получить доступ к файловой системе любым POSIX-совместимым способом, который вам нравится.
Если вы хотите загрузить файлы, которые поставлялись в .bar-файле (текстуры, звуки и т.д.), вы найдёте их по следующему пути:
./app/native/
Если вы хотите создать файлы и сохранить данные вашего приложения, помещайте их в:
./data/
Проще не бывает.
Таблицы рекордов и достижения
OpenFeint (рыне именуемый Gee) недоступен для PlayBook, то же самое, естественно, касается и Game Center, принадлежащего Apple. RIM предлагает собственное решение под названием Scoreloop, которое поддерживает профили игроков, таблицы рекордов, достижения и поединки.
В завершение
Для меня PlayBook стал наиболее простой платформой, на которую я когда-либо портировал свои разработки. Снимаю шляпу перед инженерами RIM, которые вывели в свет совместимую с POSIX платформу, поддерживающую все открытые фреймворки, так любимые разработчиками. Для большинства иных платформ вы должны добавить в свой проект все библиотеки, которые нужны вашему исполняемому файлу. На PlayBook libpng, libjpeg, freetype и другие уже включены в систему и готовы к использованию. Нет проблем с компиляцией, увеличением размера вашего исполняемого файла из-за статической линковки с библиотеками, которые уже присутствуют в системе.
Впрочем, поддержка PlayBook сторонними компаниями не столь хороша, как для других платформ. К примеру для сбора статистики в iOS я использую отличный сервис flurry.com, который, однако, не «дружит» с планшетом RIM. Данный сервис обеспечивает поддержку BlackBerry посредством Java, однако я совсем не хочу иметь дела с этим языком.
С вас не взимается плата за публикацию приложений в AppWorld в отличие от магазинов iOS и Android. По окончании портирования вы регистрируетесь, получаете ключи для цифровой подписи и публикуете свою разработку. Впрочем, в AppWorld применяется сертификация программ на манер Apple Store.
В завершение я хочу отметить, что результат стоил потраченных усилий. Процесс портирования занял у меня 2-3 дня. Я советую всем независимым разработчикам обратить внимание на эту платформу. Также стоит учесть, что магазины для iOS и Android переполнены приложениями, так что PlayBook может быть хорошей возможностью, дабы вашу игру заметили. С момента публикации до написания данной статьи Pop Corny на протяжении 4 дней находился в списке раздела «Новинки». Если вы — независимый разработчик, вы хорошо знаете, насколько важно, чтобы ваш продукт был виден покупателю как можно дольше.
P.S. Удивлён PlayBook OS
Я не могу передать, насколько я впечатлён планшетом RIM. Я считаю, что платформа, позволяющая разработчику, никогда прежде не имевшему с ней дела, портировать собственную игру за 2-3 дня, сделана замечательно. Однако что удивило меня ещё больше, так это скорость работы Pop Corny на PlayBook, заметно выше, нежели на iPad 2.
Для подтверждения моих слов я записал видео с запуском игры параллельно на двух планшетах. Поскольку обе версии Pop Corny выдают 60 кадров в секунду, сложно заметить различия в процессе игры. Стоит учесть, что планшеты имеют приблизительно равные аппаратные возможности (двухъядерный процессор Cortex-A9, работающий на частоте 1 ГГц) и игра была сперва выпущена на iOS, а уже затем портирована на PlayBook. Но при этом устройство RIM умудряется запускать игру (загрузить текстуры, распаковать их и передать GPU, загрузить звуки и т.д.) на 30% быстрее! Я считаю это невероятным достижением.
Оригинал текста: kalogirou.net/2012/08/31/porting-your-ios-game-to-blackberry-playbook-and-future-bb10-phones/,
kalogirou.net/2012/08/25/impressed-by-the-new-blackberry-os-or-how-ios-ate-dust/
Автор: Akuji_bwn