Главная » Программирование игр под Android » ОПТИМИЗИРОВАТЬ ИЛИ НЕ ОПТИМИЗИРОВАТЬ? – РАЗРАБОТКА ИГР ДЛЯ ОС ANDROID

0

Пришло время протестировать нашу новую игру. Единственное место в ней, где необходима высокая скорость, – это игровой экран. Я просто поместил экземпляр класса FPSCounter в класс GameScreen и вызывал метод FPSCounter.logFrame в конце работы метода GameScreen. render. Вот результаты для устройств Него, Droid и Nexus One:

60 кадров в секунду – это очень хороший результат. Него несколько отстает, но только лишь из-за того, что его процессор немного слабее. Мы могли бы использовать класс SpatialHashGrid для того, чтобы немного ускорить эмуляцию игрового мира, но это упражнение я оставлю вам, дорогой читатель. Нет серьезной необходимости это делать, поскольку Него всегда будет сталкиваться с проблемами (как и любое устройство с ОС Android 1.5). Гораздо больше неприятностей на этом устройстве доставляет сборка мусора. Мы знаем причину (ошибка в прямых ByteBuffer), но ничего не можем с ней поделать. Давайте надеяться, что Android 1.5 довольно скоро канет в Лету.

Предыдущие измерения я выполнял при отключенном в главном меню звуке. Проведем их снова при включенном звуке:

Ох. У Него при включенной фоновой музыке значительно падает производительность. Воспроизведение аудио также оказывает влияние и на Droid. А вот Nexus One не заметил разницы. Что мы можем с этим поделать? Вообще-то ничего. Основная проблема появляется не из-за звуков, а из-за фоновой музыки. Разбиение на потоки и декодирование МРЗ- или OGG-файла затрачивает циклы процессора; так работает наш мир. Просто учитывайте этот фактор при проведении измерений производительности.

Подводя итог

Мы создали вторую игру используя мощь OpenGL ES. Благодаря хорошему фреймворку реализовать ее было довольно просто. Использование атласа текстур и класса SpriteBatcher дало хорошие результаты при тесте производительности. Мы также обсудили, как отрисовать моноширинный растровый ASCII-шрифт. Хороший исходный дизайн наших игровых механик, а также прозрачное определение соотношения между единицами измерения игрового мира и пикселами значительно упростили создание игры. Представьте, как ужасно было бы проводить все расчеты в пикселах. Все вычисления были бы переполнены операциями деления – операциями, которые совсем не любят маломощные процессоры некоторых Android-устройств. Мы также проделали серьезную работу по разделению логики игры от ее внешнего вида. В итоге я бы назвал игру Большой прыгун успешной.

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

По теме:

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