Главная » Программирование игр под Android » ОПТИМИЗАЦИЯ DROID INVADERS

0

 

Перед тем как подумаем об оптимизации нашей игры, улучшим ее производительность.

Поместим экземпляр класса FPSCounter в класс GameScreen и посмотрим на его выводимые сообщения на устройствах Hero, Droid и Nexus One.

Него немного не справляется, но при 25 кадрах в секунду по-прежнему можно насладиться игрой. Устройство Nexus One выдает 47 кадров в секунду, Droid от него не отстает, что положительно сказывается на игре. Что мы можем улучшить?

Если рассматривать производительность с точки зрения изменения состояний, то все не настолько плохо. Мы можем уменьшить количество избыточных изменений, например вызовы методов glEnableO/glDisableO. Но по опыту предыдущих оптимизаций мы уже знаем, что это не даст нам особых преимуществ.

Чтобы улучшить производительность на Него, есть только один способ – отключить освещение. Как только мы удаляем вызовы соответствующих методов glEnable /glDi sable , находящихся в WorldRenderer. render , WorldRenderer. renderShi p и Worl dRenderer. renderlnvaders , Него начинает показывать следующие результаты: довольно неплохое улучшение, особенно учитывая то, что мы всего лишь отключили освещение.

Возможно создание специального кода, отрисовывающего объекты на различных устройствах, но мы постараемся этого избежать. Есть ли еще что-нибудь, что мы можем сделать?

Способ, которым мы отрисовываем взрывы, несколько не оптимален в том случае, если взрывается захватчик. Мы меняем модель и привязки текстур в середине цикла отрисовки захватчиков, это не обрадует графический конвейер. Однако взрывы происходят не так часто и не занимают много времени (1,6 секунды). Измерения проводились в ситуациях, когда на экране не было взрывов, поэтому они неидеальны.

Правда заключается в том, что мы пытаемся отрисовать слишком много объектов за один кадр, что вызывает задержку работы графического конвейера. С нашими текущими знаниями OpenGL ES мы ничего не сможем с этим поделать. Однако основываясь на том, что игра работает довольно хорошо на всех устройствах, мы не обязаны добиваться производительности 60 кадров в секунду. Устройства Droid и Nexus One известны своимфиксированным временем отрисовки даже не очень сложных 3D-сцен при 60 кадрах в секунду. Поэтому последний урок, который мы извлечем из этого: не сходите с ума, если ваша игра не выдает 60 кадров в секунду. Если она неплохо смотрится и играбельна, то вы можете смириться и с 30 кадрами в секунду.

ПРИМЕЧАНИЕ

Типичные стратегии оптимизации включают использование отсечения, объектов-буферов вершин и прочих продвинутых приемов, которые мы не рассматривали. Я попробовал добавить их в игру Droid Invaders. Результат нулевой. Ни на одном из устройств не повысилась производительность. Это не означает, что эти приемы бесполезны. Это зависит от множества факторов, и сложно предугадать, как поведет себя та или иная конфигурация. Если вы заинтересовались, просто прочитайте об этих приемах в Интернете самостоятельно.

Подводя итог

Мы использовали небольшие приемы и техники, изученные на протяжении всей и, и финальный результат был довольно удовлетворительным. Конечно, эта игра не самого высшего сорта. Фактически ни одна из наших игр не затягивает надолго. Здесь в действие вступаете вы. Будьте креативным, расширьте эти игры и сделайте их интересными. У вас под рукой множество инструментов.

ПУБЛИКУЕМ ВАШУ ИГРУ

Последним шагом в становлении разработчиком игр под Android является передача вашей игры другим людям. Есть два возможных варианта: взять АРК-файл из каталога вашего проекта, поместить его в Интернет и рассказать об этом друзьям, чтобы они скачали его и установили на своих устройствах; опубликовать приложение на Android Market, как поступают настоящие профессионалы.

Первый вариант – это отличный способ протестировать игру перед выходом на рынок. Все, что вам нужно, – чтобы другие люди получили АРК-файл и установили его на своих устройствах. Настоящее веселье начинается тогда, когда ваша игра готова выйти на рынок.

Источник: Mario Zechner / Марио Цехнер, «Программирование игр под Android», пер. Егор Сидорович, Евгений Зазноба, Издательство «Питер»

По теме:

  • Комментарии