SlideShare a Scribd company logo
1 of 22
Умный учится на чужих ошибках
или несколько советов по оптимизации игр

Александр Дежурко
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
Слишком много вычислений
• Запекать как можно больше (lightmaps, light probes, etc.)
• Уменьшить количество пиксельных источников освещения
• Не использовать тени в реальном времени
• Ограничить использование specular map и bump map
• Использовать мобильные шейдеры

Перерисовка (Overdraw)
• Уменьшить количество
полупрозрачности
• Заменить полупрозрачность
геометрией
• Снизить количество частить
• Использовать мобильные шейдеры
Пропускная способность

• Использовать компрессию
• Использовать 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
• Используйте мобильные шейдеры
• Подходите к процессу оптимизации творчески
Спасибо за внимание

Александр Дежурко
CTO

fb.me/adezhurko

www.heyworks.com

More Related Content

Viewers also liked

Курс:Бизнес мобильных игр
Курс:Бизнес мобильных игрКурс:Бизнес мобильных игр
Курс:Бизнес мобильных игрIvano Digital
 
Иван Воронов - Пара вещей, которые упростили бы мою гейм-дизайнерскую жизнь, ...
Иван Воронов - Пара вещей, которые упростили бы мою гейм-дизайнерскую жизнь, ...Иван Воронов - Пара вещей, которые упростили бы мою гейм-дизайнерскую жизнь, ...
Иван Воронов - Пара вещей, которые упростили бы мою гейм-дизайнерскую жизнь, ...IT Share
 
2. Arello Mobile — разработка игр. процесс и особенности
2. Arello Mobile — разработка игр. процесс и особенности2. Arello Mobile — разработка игр. процесс и особенности
2. Arello Mobile — разработка игр. процесс и особенностиnayk-ru
 
Ressa Schwarzwald: Практическая магия. как геймдизайнеру заставить игру звучать
Ressa Schwarzwald: Практическая магия. как геймдизайнеру заставить игру звучатьRessa Schwarzwald: Практическая магия. как геймдизайнеру заставить игру звучать
Ressa Schwarzwald: Практическая магия. как геймдизайнеру заставить игру звучатьDevGAMM Conference
 
Разработчик компьютерных игр
Разработчик компьютерных игрРазработчик компьютерных игр
Разработчик компьютерных игрir_556
 
Классификация игр
Классификация игрКлассификация игр
Классификация игрViktoria Odnokoz
 
Локализация игр
Локализация игрЛокализация игр
Локализация игрViktoria Odnokoz
 
История игровой индустрии
История игровой индустрииИстория игровой индустрии
История игровой индустрииViktoria Odnokoz
 
Нарраторика: геймдизайн для сценаристов_Калинин
Нарраторика: геймдизайн для сценаристов_КалининНарраторика: геймдизайн для сценаристов_Калинин
Нарраторика: геймдизайн для сценаристов_КалининMasha Kochakova
 
How to make business using AI and Big Data?
How to make business using AI and Big Data?How to make business using AI and Big Data?
How to make business using AI and Big Data?Ivano Digital
 
Компьютерные игры: разработка и дистрибуция
Компьютерные игры: разработка и дистрибуцияКомпьютерные игры: разработка и дистрибуция
Компьютерные игры: разработка и дистрибуцияIngria. Technopark St. Petersburg
 

Viewers also liked (12)

Курс:Бизнес мобильных игр
Курс:Бизнес мобильных игрКурс:Бизнес мобильных игр
Курс:Бизнес мобильных игр
 
Иван Воронов - Пара вещей, которые упростили бы мою гейм-дизайнерскую жизнь, ...
Иван Воронов - Пара вещей, которые упростили бы мою гейм-дизайнерскую жизнь, ...Иван Воронов - Пара вещей, которые упростили бы мою гейм-дизайнерскую жизнь, ...
Иван Воронов - Пара вещей, которые упростили бы мою гейм-дизайнерскую жизнь, ...
 
2. Arello Mobile — разработка игр. процесс и особенности
2. Arello Mobile — разработка игр. процесс и особенности2. Arello Mobile — разработка игр. процесс и особенности
2. Arello Mobile — разработка игр. процесс и особенности
 
Ressa Schwarzwald: Практическая магия. как геймдизайнеру заставить игру звучать
Ressa Schwarzwald: Практическая магия. как геймдизайнеру заставить игру звучатьRessa Schwarzwald: Практическая магия. как геймдизайнеру заставить игру звучать
Ressa Schwarzwald: Практическая магия. как геймдизайнеру заставить игру звучать
 
Разработка игр в небольшой компании
Разработка игр в небольшой компании Разработка игр в небольшой компании
Разработка игр в небольшой компании
 
Разработчик компьютерных игр
Разработчик компьютерных игрРазработчик компьютерных игр
Разработчик компьютерных игр
 
Классификация игр
Классификация игрКлассификация игр
Классификация игр
 
Локализация игр
Локализация игрЛокализация игр
Локализация игр
 
История игровой индустрии
История игровой индустрииИстория игровой индустрии
История игровой индустрии
 
Нарраторика: геймдизайн для сценаристов_Калинин
Нарраторика: геймдизайн для сценаристов_КалининНарраторика: геймдизайн для сценаристов_Калинин
Нарраторика: геймдизайн для сценаристов_Калинин
 
How to make business using AI and Big Data?
How to make business using AI and Big Data?How to make business using AI and Big Data?
How to make business using AI and Big Data?
 
Компьютерные игры: разработка и дистрибуция
Компьютерные игры: разработка и дистрибуцияКомпьютерные игры: разработка и дистрибуция
Компьютерные игры: разработка и дистрибуция
 

More from IT Share

Citrus Game Engine, Юрий Шумовский
Citrus Game Engine, Юрий ШумовскийCitrus Game Engine, Юрий Шумовский
Citrus Game Engine, Юрий ШумовскийIT Share
 
Pooling is magic, Максим Клыга
Pooling is magic, Максим КлыгаPooling is magic, Максим Клыга
Pooling is magic, Максим КлыгаIT Share
 
Святослав Панкратов - Оптимизация арта для браузерных проектов на юнити
Святослав Панкратов - Оптимизация арта для браузерных проектов на юнитиСвятослав Панкратов - Оптимизация арта для браузерных проектов на юнити
Святослав Панкратов - Оптимизация арта для браузерных проектов на юнитиIT Share
 
Александр Яцукевич - Визуальные эффекты в гейм-дизайне
Александр Яцукевич - Визуальные эффекты в гейм-дизайнеАлександр Яцукевич - Визуальные эффекты в гейм-дизайне
Александр Яцукевич - Визуальные эффекты в гейм-дизайнеIT Share
 
Клевакичев и Кравченко - Игровой баланс, методы его поиска и последующее тира...
Клевакичев и Кравченко - Игровой баланс, методы его поиска и последующее тира...Клевакичев и Кравченко - Игровой баланс, методы его поиска и последующее тира...
Клевакичев и Кравченко - Игровой баланс, методы его поиска и последующее тира...IT Share
 
Сергей Сверчков - Оцениваем решения NoSQL: какая база данных подходит для ваш...
Сергей Сверчков - Оцениваем решения NoSQL: какая база данных подходит для ваш...Сергей Сверчков - Оцениваем решения NoSQL: какая база данных подходит для ваш...
Сергей Сверчков - Оцениваем решения NoSQL: какая база данных подходит для ваш...IT Share
 
Роман Белешев - Online backup: технологии хранения больших объемов данных
Роман Белешев - Online backup: технологии хранения больших объемов данных Роман Белешев - Online backup: технологии хранения больших объемов данных
Роман Белешев - Online backup: технологии хранения больших объемов данных IT Share
 
Кирилл Алешин - Big Data и Lambda архитектура на практике
Кирилл Алешин - Big Data и Lambda архитектура на практикеКирилл Алешин - Big Data и Lambda архитектура на практике
Кирилл Алешин - Big Data и Lambda архитектура на практикеIT Share
 
Максим Мельников - Wargaming Web
Максим Мельников - Wargaming WebМаксим Мельников - Wargaming Web
Максим Мельников - Wargaming WebIT Share
 
Юрий Жлоба - Опыт использования Erlang в разработке многопользовательской игры.
Юрий Жлоба -  Опыт использования Erlang в разработке многопользовательской игры.Юрий Жлоба -  Опыт использования Erlang в разработке многопользовательской игры.
Юрий Жлоба - Опыт использования Erlang в разработке многопользовательской игры.IT Share
 
Никита Вельмаскин - Интерпретатор или думаем над скриптовым движком для Ваше...
Никита Вельмаскин -  Интерпретатор или думаем над скриптовым движком для Ваше...Никита Вельмаскин -  Интерпретатор или думаем над скриптовым движком для Ваше...
Никита Вельмаскин - Интерпретатор или думаем над скриптовым движком для Ваше...IT Share
 
«​Масштабируемый DevOps​» Александр Колесень
«​Масштабируемый DevOps​» Александр Колесень«​Масштабируемый DevOps​» Александр Колесень
«​Масштабируемый DevOps​» Александр КолесеньIT Share
 
«От CMS к Highload: работа с backend» Алексей Сазанов, Александр Каскевич
«От CMS к Highload: работа с backend» Алексей Сазанов, Александр Каскевич«От CMS к Highload: работа с backend» Алексей Сазанов, Александр Каскевич
«От CMS к Highload: работа с backend» Алексей Сазанов, Александр КаскевичIT Share
 

More from IT Share (13)

Citrus Game Engine, Юрий Шумовский
Citrus Game Engine, Юрий ШумовскийCitrus Game Engine, Юрий Шумовский
Citrus Game Engine, Юрий Шумовский
 
Pooling is magic, Максим Клыга
Pooling is magic, Максим КлыгаPooling is magic, Максим Клыга
Pooling is magic, Максим Клыга
 
Святослав Панкратов - Оптимизация арта для браузерных проектов на юнити
Святослав Панкратов - Оптимизация арта для браузерных проектов на юнитиСвятослав Панкратов - Оптимизация арта для браузерных проектов на юнити
Святослав Панкратов - Оптимизация арта для браузерных проектов на юнити
 
Александр Яцукевич - Визуальные эффекты в гейм-дизайне
Александр Яцукевич - Визуальные эффекты в гейм-дизайнеАлександр Яцукевич - Визуальные эффекты в гейм-дизайне
Александр Яцукевич - Визуальные эффекты в гейм-дизайне
 
Клевакичев и Кравченко - Игровой баланс, методы его поиска и последующее тира...
Клевакичев и Кравченко - Игровой баланс, методы его поиска и последующее тира...Клевакичев и Кравченко - Игровой баланс, методы его поиска и последующее тира...
Клевакичев и Кравченко - Игровой баланс, методы его поиска и последующее тира...
 
Сергей Сверчков - Оцениваем решения NoSQL: какая база данных подходит для ваш...
Сергей Сверчков - Оцениваем решения NoSQL: какая база данных подходит для ваш...Сергей Сверчков - Оцениваем решения NoSQL: какая база данных подходит для ваш...
Сергей Сверчков - Оцениваем решения NoSQL: какая база данных подходит для ваш...
 
Роман Белешев - Online backup: технологии хранения больших объемов данных
Роман Белешев - Online backup: технологии хранения больших объемов данных Роман Белешев - Online backup: технологии хранения больших объемов данных
Роман Белешев - Online backup: технологии хранения больших объемов данных
 
Кирилл Алешин - Big Data и Lambda архитектура на практике
Кирилл Алешин - Big Data и Lambda архитектура на практикеКирилл Алешин - Big Data и Lambda архитектура на практике
Кирилл Алешин - Big Data и Lambda архитектура на практике
 
Максим Мельников - Wargaming Web
Максим Мельников - Wargaming WebМаксим Мельников - Wargaming Web
Максим Мельников - Wargaming Web
 
Юрий Жлоба - Опыт использования Erlang в разработке многопользовательской игры.
Юрий Жлоба -  Опыт использования Erlang в разработке многопользовательской игры.Юрий Жлоба -  Опыт использования Erlang в разработке многопользовательской игры.
Юрий Жлоба - Опыт использования Erlang в разработке многопользовательской игры.
 
Никита Вельмаскин - Интерпретатор или думаем над скриптовым движком для Ваше...
Никита Вельмаскин -  Интерпретатор или думаем над скриптовым движком для Ваше...Никита Вельмаскин -  Интерпретатор или думаем над скриптовым движком для Ваше...
Никита Вельмаскин - Интерпретатор или думаем над скриптовым движком для Ваше...
 
«​Масштабируемый DevOps​» Александр Колесень
«​Масштабируемый DevOps​» Александр Колесень«​Масштабируемый DevOps​» Александр Колесень
«​Масштабируемый DevOps​» Александр Колесень
 
«От CMS к Highload: работа с backend» Алексей Сазанов, Александр Каскевич
«От CMS к Highload: работа с backend» Алексей Сазанов, Александр Каскевич«От CMS к Highload: работа с backend» Алексей Сазанов, Александр Каскевич
«От CMS к Highload: работа с backend» Алексей Сазанов, Александр Каскевич
 

Cоветs по оптимизации игр, Александр Дежурко

  • 1. Умный учится на чужих ошибках или несколько советов по оптимизации игр Александр Дежурко CTO
  • 2. Разработка мобильных игр — процесс непростой… • Ограниченность ресурсов • Зоопарк технологий • Сложность тестирования • Зоопарк целевых устройств • Интеграция со сторонними сервисами
  • 3. План • Общие правила оптимизации • Особенности визуализации на мобильных устройствах • Узкие места и способы оптимизации • Pocket Troops: оптимизация на примерах
  • 4.
  • 5. № 1. Планируйте заранее • Определить целевые устройства • Правило предпоследнего поколения • Определить бюджет • Делать прототипы
  • 6. № 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
  • 7. № 3. Регулярно измеряйте
  • 9. Мобильные устройства отличаются • Более слабые CPU и GPU • Небольшой объем оперативной памяти • Разделяемая память между CPU и GPU • Небольшая пропускная способность памяти • TBR
  • 10. IMR vs TBDR IMR (Immediate Mode Rendering) TBDR (Tile Based Deferred Rendering)
  • 11. Узкие места визуализации (rendering bottleneck) • CPU • Vertex • Fragment • Bandwidth
  • 12. CPU Встроенная оптимизация Unity3d: • Static batching • Dynamic batching • Occlusion culling Что можем сделать мы: • Уменьшить количество материалов • Собрать текстуры в атласы • Настроить Occlusion culling
  • 13. Vertex • Удалить ненужную геометрию • Уменьшить количество Hard Edges и UV seams • Использовать LOD • Occlusion culling • Использовать специальные мобильные шейдеры
  • 14. Fragment Слишком много вычислений • Запекать как можно больше (lightmaps, light probes, etc.) • Уменьшить количество пиксельных источников освещения • Не использовать тени в реальном времени • Ограничить использование specular map и bump map • Использовать мобильные шейдеры Перерисовка (Overdraw) • Уменьшить количество полупрозрачности • Заменить полупрозрачность геометрией • Снизить количество частить • Использовать мобильные шейдеры
  • 15. Пропускная способность • Использовать компрессию • Использовать Mipmaps • Использовать 16bits текстуры • Умеренно использовать трилинейную и анизотропическую фильтрацию
  • 18. Pocket Troops: Atlasing & Gradient Mapping
  • 21. Выводы • Определитесь с целевыми устройствами и регулярно измеряйте производительность в процессе разработки • Как можно больше запекайте и как можно меньше рассчитывайте в реальном времени • Держите в разумных пределах количество материалов, полигонаж, размер текстур • Используйте сжатие текстур • Избегайте использования alpha cutout шейдеров • Уменьшайте количество прозрачной геометрии • Используйте LODs • Используйте мобильные шейдеры • Подходите к процессу оптимизации творчески
  • 22. Спасибо за внимание Александр Дежурко CTO fb.me/adezhurko www.heyworks.com