cоветs по оптимизации игр, Александр Дежурко
DESCRIPTION
особенностях процесса разработки, тестирования и оптимизации мобильных приложений в компании Heyworks. - Общие правила оптимизации - Особенности визуализации на мобильных устройствах - Узкие места и способы оптимизации - Pocket Troops: оптимизация на примерахTRANSCRIPT
Умный учится на чужих ошибках или несколько советов по оптимизации игр
Александр ДежуркоCTO
Разработка мобильных игр — процесс непростой…
• Ограниченность ресурсов• Зоопарк технологий• Сложность тестирования• Зоопарк целевых устройств• Интеграция со сторонними сервисами
План• Общие правила оптимизации• Особенности визуализации на
мобильных устройствах• Узкие места и способы оптимизации• Pocket Troops: оптимизация на
примерах
№ 1. Планируйте заранее
• Определить целевые устройства• Правило предпоследнего поколения• Определить бюджет• Делать прототипы
№ 2. Оптимизируйте вовремя
The First Rule of Program Optimization:
Don't do it The Second Rule of Program Optimization (for experts only!):
Don't do it yet*
*British computer scientist Michael A. Jackson
№ 3. Регулярно измеряйте
№ 4. Оптимизируйте вместе с художниками
Мобильные устройства отличаются
• Более слабые CPU и GPU• Небольшой объем оперативной памяти• Разделяемая память между CPU и GPU• Небольшая пропускная способность памяти• TBR
IMR vs TBDR
IMR (Immediate Mode Rendering)
TBDR (Tile Based Deferred Rendering)
Узкие места визуализации(rendering bottleneck)
• CPU• Vertex • Fragment• Bandwidth
CPUВстроенная оптимизация Unity3d:
• Static batching• Dynamic batching• Occlusion culling
Что можем сделать мы:• Уменьшить количество материалов• Собрать текстуры в атласы• Настроить Occlusion culling
Vertex• Удалить ненужную геометрию• Уменьшить количество Hard Edges и UV seams • Использовать LOD• Occlusion culling• Использовать специальные мобильные шейдеры
Fragment
Перерисовка (Overdraw)• Уменьшить количество полупрозрачности• Заменить полупрозрачность геометрией• Снизить количество частить• Использовать мобильные шейдеры
Слишком много вычислений• Запекать как можно больше (lightmaps, light probes, etc.) • Уменьшить количество пиксельных источников освещения • Не использовать тени в реальном времени• Ограничить использование specular map и bump map• Использовать мобильные шейдеры
Пропускная способность
• Использовать компрессию• Использовать Mipmaps • Использовать 16bits текстуры• Умеренно использовать трилинейную и анизотропическую фильтрацию
Pocket Troops: Lightmaps & Light probes
Pocket Troops: Fake Reflection
Pocket Troops: Atlasing & Gradient Mapping
Pocket Troops: Fake Glow & Shafts
Pocket Troops: Fake Shadows & Flashs
Выводы
• Определитесь с целевыми устройствами и регулярно измеряйте производительность в процессе разработки
• Как можно больше запекайте и как можно меньше рассчитывайте в реальном времени
• Держите в разумных пределах количество материалов, полигонаж, размер текстур
• Используйте сжатие текстур• Избегайте использования alpha cutout шейдеров• Уменьшайте количество прозрачной геометрии• Используйте LODs• Используйте мобильные шейдеры• Подходите к процессу оптимизации творчески
fb.me/adezhurko
Спасибо за внимание
www.heyworks.com
Александр ДежуркоCTO