Страна: -
Город: -
Был онлайн: -
О себе:
 
08-07-2016, 11:13

Игра World of Goo под управлением Android на платформе x86

Введение

World of Goo — это игра-головоломка, основанная на законах физики. Выпускает эту игру компания 2D Boy из Сан-Франциско. Ведущие разработчики — Рон Кармел и Кайл Гэблер, ранее работавшие разработчиками игр в EA. Игра World of Goo сочетает простоту с глубоким игровым процессом и захватывающей атмосферой. Помимо прочих наград и премий, игра World of Goo занесена в Книгу рекордов Гиннеса как игра с самым высоким рейтингом для iOS. 

Игра World of Goo была выпущена для Windows и WiiWare в октябре 2008 года, а вскоре после этого появились версии игры для OS X и Linux. Пользовательская база постоянно росла, но оставался еще обширнейший не охваченный рынок — мобильные устройства. В апреле 2011 года вышла версия этой игры для iOS, а в ноябре этого же года — для Android. Добавление поддержки устройств Intel® оказалось чрезвычайно простым и позволило разработчикам 2D Boy расширить аудиторию еще на несколько миллионов пользователей.

Прошлогодний мобильный мир

Игра компании 2D Boy получила распространение на всех домашних развлекательных платформах к 2010 году. Нужно было искать способы привлечения новых пользователей. В этом же году была сделана попытка перенести игру на платформу iOS. Из-за меньшей мощности этой платформы пришлось существенно переработать игру, чтобы сохранить ее работоспособность. Это было всего несколько лет назад, но с тех пор мобильные устройства значительно изменились. Устройства, для которых разработчики 2D Boy оптимизировали код в 2010 году, по производительности уступают современным устройствам с процессорами Intel более чем вдвое. Для такого изменения производительности потребовалось внедрить новые решения и принять во внимание различия, свойственные мобильным устройствам.

53f4b1192f56d0.30886507.jpg

Рисунок 1: Проблемы маячат над головой

Переработка текстур для iOS

При переносе для iOS выяснилось, что обработка текстур расходует слишком много ресурсов системы. Чтобы снизить ресурсоемкость отрисовки, было принято решение объединять полигоны в более крупные пакеты. За счет этого можно было сократить количество вызовов процедур отрисовки. Разработчики 2D Boy использовали динамические текстуры OpenGL, благодаря совместимости с множеством платформ их удалось использовать в разных версиях игры. Тем не менее потребовалось снизить объем текстур, поскольку чтение большого количества файлов из памяти достаточно ресурсоемкая операция. Кроме того, нужно было реализовать возможность перезагрузки текстур, поскольку они сбрасывались из памяти при возобновлении приложения из приостановленного состояния. При этом также возрастала нагрузка на ресурсы. Загрузку текстур удалось существенно ускорить за счет объединения текстур в так называемый «атлас» — крупную объединенную текстуру; внутри нее можно ссылаться на отдельные части, указывая их адреса. Такой подход стал стандартным для разработки мобильных приложений и игр.

Перенос World of Goo на iOS обеспечил разработчикам еще миллион загрузок игры. Но специалисты 2D Boy, не останавливаясь на достигнутом, решили охватить и другие мобильные платформы.

53f4b6a84b1737.82560524.jpg

Рисунок 2: Пользователи ждут!

На пути к Android

По сравнению со всесторонней оптимизацией, которая потребовалась для первоначального перехода на мобильные устройства (для платформы iOS), выпуск игры для устройств Android стал возможным при достаточно незначительной доработке кода. Понадобилось слегка настроить контекст OpenGL, чтобы такие элементы, как атлас текстур, не исчезали при возобновлении работы из памяти (множество статей, посвященных OpenGL на Android, см. на портале Intel Developer Zone).

После переноса игры на Android для компиляции для устройств с процессором Intel оказалось достаточно всего лишь добавить один флаг в сценарий компиляции. Благодаря высокой мощности мобильных устройств с процессорами Intel всех прежних мер по оптимизации игры оказалось более чем достаточно для высокой производительности игры, никаких прочих доработок не потребовалось. Действия по компиляции приложения для платформ с процессорами Intel:

  • 1. В папке <project root>/jni/ приложения для Android создайте или откройте файл Application.mk (это мейк-файл с параметрами для всего приложения)
  • 2. Если этот файл был создан автоматически, в нем будет переменная APP_ABI, определяющая платформы назначения для сборки. В большинстве случаев по умолчанию будет задана платформа назначения ARM v7 с помощью флага “APP_ABI := armeabi-v7a”
  • 3. Добавить поддержку платформы x86 можно двумя способами: либо создать универсальную сборку для всех платформ, либо выпустить специализированную сборку только для платформы x86:

1. Создание «толстого» двоичного файла, содержащего сборки для всех целевых платформ:

Замените ‘APP_ABI := armeabi-v7a’ на ‘APP_ABI := all’ OR
Замените ‘APP_ABI := armeabi-v7a’ на ‘APP_ABI := x86 armeabi-v7a’

53f4b56aa66585.45969164.jpg

2. Чтобы собрать код только для платформы x86, просто замените ‘APP_ABI := armeabi-v7a’ на ‘APP_ABI := x86’

Недостаток «толстого» двоичного файла состоит в том, что увеличивается размер файла; для крупных приложений это может оказаться серьезной проблемой. После того как пользователь загрузит программу, операционная система автоматически выбирает нужный сегмент двоичного файла. Если приложение уже приближается к ограничению в 50 мегабайт, следует создать отдельные двоичные файлы для каждой платформы и выложить их по отдельности в магазине приложений, чтобы портал магазина определял, какая версия файла требуется каждому конкретному пользователю.

В случае с игрой World of Goo оказалось возможно использовать универсальный «толстый» двоичный файл, поскольку объем всего пакета не превышал 50 МБ. 

Примечание. Если в вашей сборке используется нестандартная цепочка инструментов, для переноса приложения на платформу x86 следует выполнить стандартную последовательность сборки в папке x86 вместо папки ARM.

53f4b673dfa621.18884652.jpg

Рисунок 3: Восполнение пробела

Окупаемость мобильных приложений

За счет охвата мобильных сегментов и выпуска различных версий своей игры для всех основных рынков компания 2D Boy занимает первые (или близкие к таковым) места во всех рейтингах. Для переноса игры на мобильные платформы потребовались значительные усилия, но популярность World of Goo является превосходным примером того, как эти усилия в конечном итоге с лихвой окупились. Если игра уже хорошо подходит для сенсорного управления, требуется совсем немного действий, чтобы играть в нее можно было и на смартфонах. Если игровой движок не использует ресурсоемкую графику, мобильная версия игры не утратит внешней привлекательности и не будет слишком активно расходовать электроэнергию. Для этой задачи игра World of Goo оказалась идеальным кандидатом, о чем свидетельствует отличный рейтинг этой игры и множество полученных ей наград и премий.

Справочные материалы

Об авторе

Брэд Хилл (Brad Hill) — инженер по программному обеспечению в подразделении Developer Relations корпорации Intel. Брэд занимается изучением новых технологий на оборудовании Intel и обменивается лучшими методиками с разработчиками ПО на форумах Intel Developer Zone и на конференциях разработчиков. Кроме того, он исполняет обязанности технического директора на студенческих конкурсах разработчиков Hackathon, возглавляет инициативу Code for Good в высших учебных заведениях по всей стране.

 
intel
android
androidx86
0 0 0

Чтобы оставлять комментарии вам необходимо зарегистрироваться