Игра 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 более чем вдвое. Для такого изменения производительности потребовалось внедрить новые решения и принять во внимание различия, свойственные мобильным устройствам.

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

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

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

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

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

На пути к Android

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

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

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

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

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

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

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

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

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

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

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

Об авторе

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

NOTICES

INFORMATION IN THIS DOCUMENT IS PROVIDED IN CONNECTION WITH INTEL PRODUCTS. NO LICENSE, EXPRESS OR IMPLIED, BY ESTOPPEL OR OTHERWISE, TO ANY INTELLECTUAL PROPERTY RIGHTS IS GRANTED BY THIS DOCUMENT. EXCEPT AS PROVIDED IN INTEL'S TERMS AND CONDITIONS OF SALE FOR SUCH PRODUCTS, INTEL ASSUMES NO LIABILITY WHATSOEVER AND INTEL DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY, RELATING TO SALE AND/OR USE OF INTEL PRODUCTS INCLUDING LIABILITY OR WARRANTIES RELATING TO FITNESS FOR A PARTICULAR PURPOSE, MERCHANTABILITY, OR INFRINGEMENT OF ANY PATENT, COPYRIGHT OR OTHER INTELLECTUAL PROPERTY RIGHT.

UNLESS OTHERWISE AGREED IN WRITING BY INTEL, THE INTEL PRODUCTS ARE NOT DESIGNED NOR INTENDED FOR ANY APPLICATION IN WHICH THE FAILURE OF THE INTEL PRODUCT COULD CREATE A SITUATION WHERE PERSONAL INJURY OR DEATH MAY OCCUR.

Intel may make changes to specifications and product descriptions at any time, without notice. Designers must not rely on the absence or characteristics of any features or instructions marked "reserved" or "undefined." Intel reserves these for future definition and shall have no responsibility whatsoever for conflicts or incompatibilities arising from future changes to them. The information here is subject to change without notice. Do not finalize a design with this information.

The products described in this document may contain design defects or errors known as errata which may cause the product to deviate from published specifications. Current characterized errata are available on request.

Contact your local Intel sales office or your distributor to obtain the latest specifications and before placing your product order.

Copies of documents which have an order number and are referenced in this document, or other Intel literature, may be obtained by calling 1-800-548-4725, or go to: http://www.intel.com/design/literature.htm

Software and workloads used in performance tests may have been optimized for performance only on Intel microprocessors. Performance tests, such as SYSmark* and MobileMark*, are measured using specific computer systems, components, software, operations, and functions. Any change to any of those factors may cause the results to vary. You should consult other information and performance tests to assist you in fully evaluating your contemplated purchases, including the performance of that product when combined with other products.

Any software source code reprinted in this document is furnished under a software license and may only be used or copied in accordance with the terms of that license.

Intel and the Intel logo are trademarks of Intel Corporation in the U.S. and/or other countries.

Copyright © 2014 Intel Corporation. All rights reserved.

*Other names and brands may be claimed as the property of others.

Для получения подробной информации о возможностях оптимизации компилятора обратитесь к нашему Уведомлению об оптимизации.
Возможность комментирования русскоязычного контента была отключена. Узнать подробнее.