Dmitry Gladilin, Art Director, Game Insight
In that session we’re going to cover the whole process of 3D content development, including production, optimization and performance quality assurance. Dmitry would share experience and tips&tricks that team learned in process of developing mobile FPS Guns of Boom, using Unity3D engine. #MadeWithUnity
2. ПРО ЧТО НАША ИГРА?
ПРОСТОЕ
УПРАВЛЕНИЕ
Освоить игру за пару
минут смогут как
ветераны, так и новички:
опыт в жанре FPS не
имеет значения.
ЯРКАЯ
ГРАФИКА
Стильный и дерзкий
дизайн игры никого не
оставит равнодушным.
ДИНАМИЧНЫЕ
СРАЖЕНИЯ
Играйте в команде и
разорвите противников на
куски!
УБОЙНЫЕ
СТВОЛЫ
48 пушек на любой вкус:
автоматы, дробовики,
пулеметы
и винтовки.
3. Скрин из движка
30FPS
Даже на слабых
устройствах
50х50м
Размер карт
<8
Игроков в PVP бою
ДВИЖОК
ЧТО ПОД КАПОТОМ?
240Mb
RAM
>250k
Vertex Count
>80
DrawCalls
4. Сколько полигонов на
сцене?
Сколько drawcals
максимум?
Какие оптимизации
использовать?Сколько объектов можно
использовать на сцене?
Как спланировать
кастомизацию персонажей? Какого разрешения должны
быть текстуры?
МУКИ ВЫБОРА
5. КАК ОПРЕДЕЛИТЬ ТЕХНИЧЕСКИЕ
ТРЕБОВАНИЯ К ГРАФИКЕ НОВОГО
ПРОЕКТА?
Дизайн -
документ
Разбор
сторонних
проектов
Синтетические
тесты
Технический
демо-проект
6. • Сколько и какого контента
предполагается?
• Сколько динамических объектов
будет одновременно на экране?
• Нужен ли кастомайз?
• Сколько и каких карт нужно?
• Какого размера нужны карты?
• Какие игровые режимы?
• Какие нужны анимации?
• Какие потребуются эффекты?
СФОРМУЛИРУЙТЕ ВСЕ, ЧТО
ХОТИТЕ РЕАЛИЗОВАТЬ И
ПРОВЕРЬТЕ КАК ЭТО
РАБОТАЕТ
Гейм дизайн — фундамент
для формирования
требований к графике
ДИЗАЙН — ДОКУМЕНТ
7. • Провести стресс-тесты таргет-
девайса.
• Определить его возможности:
- DrawCalls;
- VertexCount;
- RAM.
ЭКСПЕРИМЕНТИРУЙТЕ С
РАЗНЫМИ КОМБИНАЦИЯМИ
ПАРАМЕТРОВ
Минимальный девайс –
самый важный выбор!
СИНТЕТИЧЕСКИЕ ТЕСТЫ
8. • Соберите сцену, в которой будут
присутствовать все визуальные
элементы будущей игры.
• Не обязательно собирать сцену их
финального контента.
• Ищите узкие места.
• Ссылки на статьи в конце доклада.
ВСЕГДА ЗАМЕРЯЙТЕ
САМЫЙ ТЯЖЕЛЫЙ КАДР
Использовать
прототипы как
фундамент для проекта
— плохая идея!
ТЕХНИЧЕСКИЕ ДЕМО
9. • Работают ли похожие проекты на
выбранном минимальном девайсе?
• Сколько полигонов в кадре у
похожих проектов?
• Сколько drawcalls?
• Сколько памяти занимает
запущенное приложение?
• Сколько весит клиент?
• Какие используются шейдера?
• Каково распределение: окружение /
персонажи / эффекты
ОТВЕЧАЙТЕ НА ВОПРОС:
«ПОЧЕМУ ОНИ ПРИНЯЛИ
ТАКИЕ РЕШЕНИЯ?»
Захват GPU и
дальнейший анализ
экономит ваше время и
деньги
РАЗБОР СТОРОННИХ ПРОЕКТОВ
10. Client
15.0 ms
50%
Environment
5.0 ms
17%
Characters
5.0 ms
17%
GUI
2.5 ms
8%
FX
2.5 ms
8%
Client
12.0 ms
40%
Environment
5.0 ms
17%
Characters
5.0 ms
17%
GUI
3.5 ms
11%
FX
1.5 ms
5%
Запас
3.0 ms
10%
ПЛАНИРУЕМОЕ РАСПРЕДЕЛЕНИЕ
CPU
ПЛАНИРОВАНИЕ CPU
ФАКТИЧЕСКОЕ РАСПРЕДЕЛЕНИЕ
CPU
13. «ПОТОМ ОПТИМИЗИРУЕМ»
— НЕ РАБОТАЕТ
Новый билд
Оптимизация
Профайлинг
target device
Выявление причин
падения произ-ти
Ожидание
Реальность
14. • Максимум оптимизации
«На берегу».
• «Красивые решения» из
AssetStore могут стать
миной замедленного
действия. Используйте их
для прототипирования.
• Если оптимизация сделана
хорошо, Metal и подобные
не дадут прироста. Это -
хороший результат.
ТОЛЬКО ХАРДКОР!
15. METAL НЕ ДАЕТ ПРИРОСТА?!
Оптимизируйте так, чтобы использовать Metal и подобные
технологии только для улучшения картинки
17. ОПТИМИЗАЦИЯ СЦЕНЫ: ВЕРТЕКСЫ
Вся геометрия карты
объединена в
минимальное количество
больших кусков, общий
размер которых
составляет не более
200k полигонов.
18. ОПТИМИЗАЦИЯ СЦЕНЫ: ТЕКСТУРЫ
Объём используемых
текстур и атласов
карты не превышает 16
Мб
На Android используются сжатые текстуры
ETC1. Для alpha каналов сгенерированы
отдельные текстуры, также сжатые в ETC1
2х LightMap Atlas
2048x2048 (2.7 Mb)
2х Texture Atlas
2048x2048 (2.7 Mb)
12х Small Textures
128-1024 (~5 Mb)
19. МИНИМУМ ШЕЙДЕРОВ:
ЧЕМ ПРОЩЕ, ТЕМ
ЛУЧШЕ
• Unlit
• CubmapReflection
• Emissive
• Unlit (no fog for skybox)
• Decal
Сцены уровней используют 2-5 простых шейдера, занимающих
заметное место по производительности:
ОПТИМИЗАЦИЯ СЦЕНЫ: ШЕЙДЕРА
20. • Планируйте производительность и
контент до начала работ
• Определите минимальный таргет-
девайс
• Оптимизируйте сразу
• Следите за производительностью
каждый день
• Осторожно используйте готовые
ассеты и надстройки
• Учитесь на чужом опыте
• Чем серьезнее проект, тем выше
необходимость в программисте
графики
ЗАКЛЮЧЕНИЕ
21. Learn how to optimize your Unity project
habrador.com/tutorials/unity-optimization
Boosting Unity performance on mobile devices
spikything.com/blog/index.php/2015/10/14/boosting-unity-performance-on-mobile-devices
4 Ways To Increase Performance of your Unity Game
paladinstudios.com/2012/07/30/4-ways-to-increase-performance-of-your-unity-game
How Cheat Unity Tricks Development
amazon.com/How-Cheat-Unity-Tricks-Development/dp/1138802948
ССЫЛКИ
По любым вопросам:
gladilin@game-insight.com
Editor's Notes
Привет. Меня зовут Гладилин Дмитрий
И я работаю в Game-Insight
Сегодня я хочу рассказать о нашем опыте, который мы получили в процессе разработки арта для проекта GunsOfBoom
Не смогу достаточно раскрыть технические детали тех или иных решений
Кто играл в Guns Of Boom?
О игре
Перед тема как идти дальше пару вопросов:
Поднимите руку кто знает что такое дроуколл?
А кто знает отличие между полигоном и вертексом?
А кто хочет узнать?
Что скрывается за красивым описанием и скринами в сторах?
Немного технических деталей о проекте. Для затравки…
….
В самом начале разработки подобного проекта появляется множество вполне конкретных вопросов….
Перечислить вопросы
Да и просто: «Сколько пушек в игре мы можем себе позволить»
Если задаться целью перечислить все нюансы, которые нужно учитывать, чтобы получился отличный проект времени доклада не хватит
Все эти вопросы можно объединить в одно понятие: «Технические требования к графике проекта»
Перед командой стояли точно такие же вопросы. Шутеры не делали. Опыт PC разработки никак не помог
Формулировка тех требований сводится к циклу мероприятий
По этому кругу придется пройти не один раз
Рассмотрим каждый этап детальнее
Дизайн-документ фундамент всей разработки.
Детализируйте пока не получите количественное представление
Не достаточно написать: У нас будет кастомайз…
В наешем случае вопрос: «А сколько будет всего» запустил
Прогнозируйте на будущее, не выстрелите себе в ногу
Первормит, контент не добавить, крашится
Сформулируйте все что хотите и проверьте как это работает.
Важнейший шаг – минимальный девайс. Модель смартфона.
Решение базируется на статистике и опыте прошлых проектов
Поменять решение, слон не пролезает, даже после фитнеса
Проведите разносторонние нагрузочные тесты. Узнайте пределы
Экспериментируйте с комбинациями параметров
В нашем случае SGS3
Технические демо–проекты следующий шаг
Получите сцену со всеми ассетами
Продакшн арт- не обязательно
Проект про роботов, ассеты демо из Diablo
Профайлинг! Ищите узкие места. Пример.
Про профайлинг много в инете. Ссылки в конце доклада.
Проблемы найдены, много объектов, ничего не помогает.
Когда идеи заканчиваются их нужно откуда-то брать
Разбор сторонних– отличное решение. Своими именами
Какие из похожих и успешных запускаются на таргет
Не останавливайтесь: захват GPU, анализ ресурсов
Со слайда
Почему разработчики приняли именно такие решения?
Учитесь на чужом опыте, ничего плохого, чужая собственность
Много информации: результаты синтетических тестов …
Пару идей о том как запихнуть слона в бутылку…
Уделите время планированию нагрузки
Для SGS3. 30 FPS = 30ms процессорного времени
Шли от обратного клиент займет половину всего времени
Как впихнуть весь рендер в 15ms
Если планирование было больше похоже на торги
С памятью казалось картина намного более понятная
Например не сложно посчитать текстуры для 8 персонажей
По факту так только казалось. Таблица показывает
Немного промазали
Чтобы посчитать пришлось осмыслять весь контент
С планом жить легче чем без него
В процессе прогнозирования потребовалось много дополнительных экспериментов
Вскрылись подводные камни и неожиданные моменты
Здорово, что все это всплыло на ранних этапах
Сэкономило время и нервы
Чем лучше команда тем точнее прогнозы и меньше риск
Знакома ситуация: просел FPS, проект тормозит
Сейчас девайс помощнее, потом оптимизируем
Не поддавайтесь соблазну! Делайте остановку!
Если все тестируют iphone7, а таргет
Получиться как на скринах
мы нашли для себя небольшой лайвхак
Собирать отдельное приложение
Оптимизируйте все что можно руками, не рантайм.
Хардкорная – ручная работа. В движках много автоматических механизмов.
Кто пользуется плагинами из Asset Store? Для прототипов.
Хорошая оптимизация – metal не даст профита.
Стоп! Я сказал что-то странное, да?
Давайте разберемся…
Metal – это отличная технология, снижает наложенный платеж
Ориентируясь на Metal etc изначально, сказочный результат
Но Metal, Vulkan не на всех устройствах
Разрабатывая кросс-платформу, metal улучшает картинку
Если не поддерживает, комфортная производительность
На скринах результат
Геометрия объеденена в минимальное кол кусов
Использовали чуть допиленный плагин Mesh Baker
Для повышения качества лайтмап ручной 2UV
Эффективность использования текстурной памяти
Все возможные текстуры собраны в атласы.
Суммарно текстуры занимают около 16 метров.
Этот шаг потребовал времени и ресурсов и времени
Но существенно сократил затраты на отрисовку сцены
Всего шейдеров чуть больше чем 5
Остальные значимого вклада в производительнсоть не вносят
На определенном этапе в проекте не осталось шейдеров, которые не были бы переписаны или оптимизированы
Это довольно важный факт
Любой команде необходим программист графики
Придется прилично поколдовать с шейдерами.