ea: optimization of mobile unity application

24
Minions Paradise™ Оптимизация мобильного Unity приложения Дмитрий Веденко, EA Saint Petersburg

Upload: devgamm-conference

Post on 22-Jul-2015

55 views

Category:

Presentations & Public Speaking


1 download

TRANSCRIPT

Page 1: EA: Optimization of mobile Unity application

Minions Paradise™

Оптимизация мобильного Unity приложения

Дмитрий Веденко, EA Saint Petersburg

Page 2: EA: Optimization of mobile Unity application

Minions Paradise™• Жанр: City-builder

• Много 3D анимаций

• Много статической

геометрии

• Unity 4.6

• Runtime DI

• Выпуск на iOS и Android

Page 3: EA: Optimization of mobile Unity application

Performance Issues• Регулярные подтормаживания на 100-150 миллисекунд

• Низкий FPS, например, 6-15 на Nexus 5

• Высокое потребление памяти

Page 4: EA: Optimization of mobile Unity application

Lags and Freezes

Page 5: EA: Optimization of mobile Unity application

Unity Profiler

GC занимает 101msКадр 170ms

GC вызывается каждые 30 кадров.

Page 6: EA: Optimization of mobile Unity application

Garbage, Garbage, Garbage

Каждый кадр – более чем 25 Кб выделенной памятиПри 30 кадрах в секунду - более чем 750 Кб/сек

«Плохой» случай:120 Кб/кадр

235ms!

Page 7: EA: Optimization of mobile Unity application

Garbage, Garbage, Garbage

Page 8: EA: Optimization of mobile Unity application

Implicit Allocations

• Runtime DI– Очень много объектов

– Очень много ссылок

– System.Reflection

• Неявное выделение памяти в Unity– Value type boxing

– Types marshalling

A nightmare for any GC!

Page 9: EA: Optimization of mobile Unity application

The Cure

• Тщательно профилируем performance critical код

– Используем value type где только возможно

– Избегаем boxing’а

– Избегаем reflection в динамике

– Переиспользуем коллекции и объекты

Результат: • Общее улучшение производительности• Анимации и движение камеры значительно плавнее

Page 10: EA: Optimization of mobile Unity application

Not Good Enough

• CPU или GPU?

• Unity не позволяет профилировать GPU на мобильных устройствах

Page 11: EA: Optimization of mobile Unity application

Android GPU Profilers

• Работает далеко не со всеми прошивками/устройствами

• Не самый популярный чип

• Широкий спектр возможностей• Не требует root

Page 12: EA: Optimization of mobile Unity application

Android GPU Profilers

• Все меньше и меньше новых Android устройств

• Разделено на два приложения

Нужен ROOT

Page 13: EA: Optimization of mobile Unity application

СPU or GPU?Итак, упираемся ли мы в GPU?

Не совсем

Page 14: EA: Optimization of mobile Unity application

The Cure

• Упрощение анимаций

• Упрощение геометрии

• Упрощение коллизий

• Во многом art driven, несмотря на «упор» в CPU

Результат: • Повышение производительности до приемлемых

значений• Ускорение загрузки• Снижение нагрузки на память

Page 15: EA: Optimization of mobile Unity application

Memory Footprint

Page 16: EA: Optimization of mobile Unity application

Memory Usage

+ Хорошая оценка используемой памяти+ Разделение управляемой и неупраляемой куч

- Смешаны RAM and VRAM- Не совсем корректно работает с texture quality- Результат не совсем отражает реальную ситуацию

452Mb

Page 17: EA: Optimization of mobile Unity application

Memory Usage

735Mb!

Page 18: EA: Optimization of mobile Unity application

• Основной потребитель - ассеты

• Очень большой managed heap: 110Mb68.2Mb – свободно

Memory Breakdown

Page 19: EA: Optimization of mobile Unity application

Texture Memory Usage

• Много неиспользуемых текстур• Дубликаты• Texture Quality не имеет эффекта

Page 20: EA: Optimization of mobile Unity application

Unity Sprite Packer

• Sprite Packer не дружит с Asset Bundles,

в бандл попадут и атлас, и спрайт

• Не работает со спрайтами в ресурсах

• Серьезно замедляет старт Unity Editor

• Не имеет представления о структуре спрайтов

Page 21: EA: Optimization of mobile Unity application

Texture Duplicates• «Нестандартное» использование Asset Bundles• Дубликаты возникают при перезагрузке Asset

Bundles• Загруженный Asset Bundle – оверхед на Android

Page 22: EA: Optimization of mobile Unity application

The Cure

• Раннее планирование структуры и иерархии ресурсов

Page 23: EA: Optimization of mobile Unity application

Sum Up

• Никогда не рано начинать оптимизацию

• Пользуйтесь профайлером в профилактических целях

• «Очевидное» решение не всегда верное

• Правильно подбирайте и используйте технологии

Page 24: EA: Optimization of mobile Unity application

Questions?

Contact me:

[email protected]