SlideShare une entreprise Scribd logo
1  sur  38
Télécharger pour lire hors ligne
(Не) преждевременная
оптимизация проекта
на Unreal Engine 4
Владимир Алямкин
Pushkin Studio / MY.GAMES
ЧТО?
оптимизация == WTF
Что такое оптимизация проекта?
Кадров побольше да пожирнее!
А как же..
..улучшение качества опыта пользователя?
● Минимизация времени загрузки
● Минимизация нагрева устройства
● Минимизация размера билда и апдейтов
● Минимизация нагрузки на сеть
○ Объем траффика
○ Зависимость от пинга
Следующий уровень
● Системные требования пониже
● Запас на риск и эксперименты
● Любовь к искусству
А разработка?
● Время сборки проекта локально (цена итерации)
● Время сборки билда для тестирования
● Скорость запуска редактора и старта игры
● Время и сложность добавления новых сущностей и тестирование
механик
● Количество кадров в редакторе и их запас в Development сборке
ГДЕ?
удав слишком длинный
Кто будет жертвой
● CPU
● GPU
● RAM
● Диск
● Сеть
CPU
CPU - готовит данные для отрисовки
● Геймплей (обновление игрового мира)
● Интерфейс (предрасчет)
● Физика
● Сеть (внезапно)
● Анимации
● VFX
● Подготовка данных к рендерингу
○ Задания на отрисовку для GPU
○ Подготовка и отсечение необходимого
● Прочие вычисления
“Это ядро мы займем под ИИ”
Да, звук это тоже CPU.
Не заложенный бюджет на звук -
признак плохого техпрода.
Марк Церни, архитектор PS5
GPU
Рисует этот бренный мир
● Стильно-модно-молодежно: отсечения и
прочее оптимизационное
○ Пример: depth pass для HZB
● Классический draw call:
рисуем модельку (каждую)
● Рисуем UI
● Пост-процессы
● Различного рода дополнительные расчеты
RAM и VRAM
“Чем чотче бытие - тем жирнее текстура”
● Текстуры
● Модели
● Звук
● Буфера для промежуточных
данных и отрисовки
Диск и остальные
Размер билда и скорость загрузки данных
● Стриминг данных (и арт, и звук)
● Загрузка уровней
● Работа с сохранениями
● Модель мира
Помните Rage? Или загрузки в Morrowind?
А как же “редактор”?
Не рантайм, но влияет:
● Архитектура проекта и время его сборки при правках
○ Правильная структура кода может сокращать время сборки в разы
○ Да, это C++
● Связность классов проекта - сколько ассетов загружается на старте
движка
○ А также сколько классов и ассетов загружаются при запуске тестовой
игры в редакторе
● Можно ли тестировать проект без танцев с бубном (актуально для
сетевых проектов и комплексных ААА с пост-обработкой ассетов)
КОГДА?
* слышен свист на горе
Всегда
Всегда поздно.
Всегда рано.
Когда надо начинать оптимизацию?
● Сразу
● На этапе TDD
● В ДНК
● На альфе
● На бете
● На гамме
● На релизе
● После релиза
● Перед релизом
● Никогда
На самом деле
Оптимизация - это постоянный процесс.
Преждевременно:
● Выстраивать сверх-производительную cpu-cache-friendly архитектуру без
оценки потенциальных проблем и боттлнеков
● Делать “потенциально более быстродействующие” вещи, если их
реализация требует заметных усилий или времени
Не преждевременно:
● Провести тестирование as early as possible и следовать полученным
выводам и бюджетам
● Концетрироваться на боттлнеках, а не “спичках”
КАК?
где же ручки, ну где же
ваши ручки?
Ранний этап
● Выявление технических требований и ограничений
○ Бюджеты на игровую логику, звук
○ Бюджеты на отрисовку
● Синтетическое тестирование как метод оценки
Оценка скорости работы
8 мс - много или мало?
40% загрузки CPU - хорошо или нет?
180 шейдерных инструкций - как оценить?
Требования к полигонажу
От 10к до 500к - разброс на мобилках
От 500к до 10кк - на десктопе (допустим)
А сколько полигонов на персонаже?
Сколько полигонов на оружии?
Сколько полигонов на объекте Х?
Дроколлы
42.
Или 242.
На какой сцене считать нагрузку?
Дроколл дроколлу рознь!
Количество объектов != число дроколлов
Когда остановиться?
● В кадрах?
● В миллисекундах?
● В объеме памяти?
Определение четкого таргета -
залог психического здоровья
И как жить?
● Порядок требований может быть сформулирован только для конкретных
проектных (или игровых) условий
● Требуется проведение синтетических тестов, эмулирующих конечные
условия, для получения оценочных данных
● Что-то пойдет не так. Обязательно. Должен быть запас.
Продакшн
Два подхода:
1. Оптимизируем в конце
2. Следим за проблемами изначально
Ваша игра не будет греть телефон на релизе, если
она не греет на всех промежуточных мейлстоунах
НО! Цена - постоянный контроль
Контролируемый продакшн
● Автоматическое тестирование на соответствие ранее определенным
требованиям
● Профайлинг и традиционный индейский вопрос
● Итерирование на реальных ассетах и ситуациях
Идеальный случай
● Предпродакшн на высшем уровне - мы четко знаем что делать и как
● Dev билды не вылезают за границы поставленных условий
● Всех били по рукам вовремя
Предрелиз
● Рвем волосы на голове и осознаем всю глубину падения
● Ищем удава и отрезаем ему хвост (по самую морду)
● Не всегда возможно, либо:
○ Падает качество арта
○ Проект релизиться с тормозами и фризами
○ “Снова игра на анриле крашится и тормозит”
Но всегда есть PUBG.
ПРОФАЙЛИНГ
ctrl+alt+del
Уровни профайлинга
● Высокоуровневый профайлинг (“злые попугаи - там”):
○ “Треть проца отнял слейт”
○ “Частицы частично всё жрут”
○ “У нас есть звук”
● Низкоуровневый профайлинг
○ “Дьявол кроется в функции UWorld::Tick”
○ “Анимация жука на дальнем плане считается каждый кадр”
○ “Разрушаемые табуретки рисуются по 100 мс”
● Здравый смысл
○ А что мы ждем на данном железе?
Здравый смысл (существование попугая)
• Диспетчер задач (серьезно!)
• Симуляция различных ситуаций
• Зависимость от разрешения
• Меняем размеры текстур
• Отключаем пост-эффекты
• Псевдо-scalability
• SpaceSniffer на собранном билде
Ищем попугаев (безусловно высоких)
• Unreal Insights (ищет попугаев комплексно)
• CPU + Render
• Файловая система
• Сеть
• Stat GPU
https://docs.unrealengine.com/en-US/Engine/Performance/GPU/index.html
• Memory Dump
https://www.unrealengine.com/en-US/blog/debugging-and-optimizing-memory
Разбираем на кусочки
● MSVS C++ Profiler
● GPU
○ RenderDoc
○ Intel Graphics Frame Analyzer
○ NVIDIA Nsight
● Прочие индивидуальные инструменты
А ДАЛЬШЕ?
где анрил, чертяка?
Впихиваем невпихиваемое
● Много дроколлов? Объединяем чтобы было меньше (инстансинг, merge)
● Много полигонов? Отрезаем (culling, LOD)
● Много памяти и долгая загрузка? Ищем лишнее (async loading, soft object,
streaming)
● Всего много и всё надо? Приносим кровавую жертву богам Хаоса
Серебряной пули - нет. Но есть документация и “Engine Features”:
https://docs.unrealengine.com/en-US/Engine/index.html
СПАСИБО!
Владимир Алямкин
+7 916 99 228 65
v.alyamkin@corp.mail.ru
https://alyamkin.com

Contenu connexe

Tendances

AgileCamp'11 Новосибирск - Unit Tests
AgileCamp'11 Новосибирск - Unit TestsAgileCamp'11 Новосибирск - Unit Tests
AgileCamp'11 Новосибирск - Unit TestsAnton Katkov
 
Scala performance под капотом
Scala performance под капотомScala performance под капотом
Scala performance под капотомRoman Grebennikov
 
How to Calculate Test Automation ROI
How to Calculate Test Automation ROIHow to Calculate Test Automation ROI
How to Calculate Test Automation ROIÞorgeir Ingvarsson
 
Сергей Парамонов — Что наша жизнь — игра!
Сергей Парамонов — Что наша жизнь — игра!Сергей Парамонов — Что наша жизнь — игра!
Сергей Парамонов — Что наша жизнь — игра!Daria Oreshkina
 
Automated testing dojo - how to play game
Automated testing dojo - how to play gameAutomated testing dojo - how to play game
Automated testing dojo - how to play gameOleksandr Baglai
 
обзор средств для тестирования Java script
обзор средств для тестирования Java scriptобзор средств для тестирования Java script
обзор средств для тестирования Java scriptAlexey Chumagin
 
лосев презент
лосев презентлосев презент
лосев презентSlava Lo
 
CodeFest 2012. Аксёнов А. — Как мы разрабатываем Sphinx
CodeFest 2012. Аксёнов А. — Как мы разрабатываем SphinxCodeFest 2012. Аксёнов А. — Как мы разрабатываем Sphinx
CodeFest 2012. Аксёнов А. — Как мы разрабатываем SphinxCodeFest
 
Лев Казаркин, Удивительные приключения регистров SSE или в поисках одного бага
Лев Казаркин, Удивительные приключения регистров SSE или в поисках одного багаЛев Казаркин, Удивительные приключения регистров SSE или в поисках одного бага
Лев Казаркин, Удивительные приключения регистров SSE или в поисках одного багаSergey Platonov
 
Фреймворк для регрессионного тестирования на основе WebDriver
Фреймворк для регрессионного тестирования на основе WebDriverФреймворк для регрессионного тестирования на основе WebDriver
Фреймворк для регрессионного тестирования на основе WebDriverautomated-testing.info
 
50 оттенков кеширования: обзор актуальных батареек - Григорий Петров, VoxImplant
50 оттенков кеширования: обзор актуальных батареек - Григорий Петров, VoxImplant50 оттенков кеширования: обзор актуальных батареек - Григорий Петров, VoxImplant
50 оттенков кеширования: обзор актуальных батареек - Григорий Петров, VoxImplantit-people
 
Interactive Lab: Разработка Flash игр на Unity3D
Interactive Lab: Разработка Flash игр на Unity3DInteractive Lab: Разработка Flash игр на Unity3D
Interactive Lab: Разработка Flash игр на Unity3DDevGAMM Conference
 
Automated testing dojo @ Confet&qa
Automated testing dojo  @ Confet&qaAutomated testing dojo  @ Confet&qa
Automated testing dojo @ Confet&qaOleksandr Baglai
 
Как мы админа увольняли, или тонкости организации корпоративной безопасности ...
Как мы админа увольняли, или тонкости организации корпоративной безопасности ...Как мы админа увольняли, или тонкости организации корпоративной безопасности ...
Как мы админа увольняли, или тонкости организации корпоративной безопасности ...Ontico
 
Андрей Акиньшин и Михаил Филиппов «Rider: разговоры про внутренности и кроссп...
Андрей Акиньшин и Михаил Филиппов «Rider: разговоры про внутренности и кроссп...Андрей Акиньшин и Михаил Филиппов «Rider: разговоры про внутренности и кроссп...
Андрей Акиньшин и Михаил Филиппов «Rider: разговоры про внутренности и кроссп...SpbDotNet Community
 
Илья Евлампиев - Нагрузочное тестирование веб-приложений с помощью The Grinder
Илья Евлампиев - Нагрузочное тестирование веб-приложений с помощью The GrinderИлья Евлампиев - Нагрузочное тестирование веб-приложений с помощью The Grinder
Илья Евлампиев - Нагрузочное тестирование веб-приложений с помощью The GrinderSQALab
 
Pros and Cons of Being an Automation Specialist
Pros and Cons of Being an Automation SpecialistPros and Cons of Being an Automation Specialist
Pros and Cons of Being an Automation SpecialistÞorgeir Ingvarsson
 
Максим Вишнівецький “Scrum у державному секторі: щоденник тих, хто вижив”
Максим Вишнівецький “Scrum у державному секторі: щоденник тих, хто  вижив”Максим Вишнівецький “Scrum у державному секторі: щоденник тих, хто  вижив”
Максим Вишнівецький “Scrum у державному секторі: щоденник тих, хто вижив”Lviv Startup Club
 
Sun Small Programmable Object Technology (Sun SPOT)
Sun Small Programmable Object Technology (Sun SPOT)Sun Small Programmable Object Technology (Sun SPOT)
Sun Small Programmable Object Technology (Sun SPOT)SSA KPI
 

Tendances (20)

AgileCamp'11 Новосибирск - Unit Tests
AgileCamp'11 Новосибирск - Unit TestsAgileCamp'11 Новосибирск - Unit Tests
AgileCamp'11 Новосибирск - Unit Tests
 
Scala performance под капотом
Scala performance под капотомScala performance под капотом
Scala performance под капотом
 
Joker2014
Joker2014Joker2014
Joker2014
 
How to Calculate Test Automation ROI
How to Calculate Test Automation ROIHow to Calculate Test Automation ROI
How to Calculate Test Automation ROI
 
Сергей Парамонов — Что наша жизнь — игра!
Сергей Парамонов — Что наша жизнь — игра!Сергей Парамонов — Что наша жизнь — игра!
Сергей Парамонов — Что наша жизнь — игра!
 
Automated testing dojo - how to play game
Automated testing dojo - how to play gameAutomated testing dojo - how to play game
Automated testing dojo - how to play game
 
обзор средств для тестирования Java script
обзор средств для тестирования Java scriptобзор средств для тестирования Java script
обзор средств для тестирования Java script
 
лосев презент
лосев презентлосев презент
лосев презент
 
CodeFest 2012. Аксёнов А. — Как мы разрабатываем Sphinx
CodeFest 2012. Аксёнов А. — Как мы разрабатываем SphinxCodeFest 2012. Аксёнов А. — Как мы разрабатываем Sphinx
CodeFest 2012. Аксёнов А. — Как мы разрабатываем Sphinx
 
Лев Казаркин, Удивительные приключения регистров SSE или в поисках одного бага
Лев Казаркин, Удивительные приключения регистров SSE или в поисках одного багаЛев Казаркин, Удивительные приключения регистров SSE или в поисках одного бага
Лев Казаркин, Удивительные приключения регистров SSE или в поисках одного бага
 
Фреймворк для регрессионного тестирования на основе WebDriver
Фреймворк для регрессионного тестирования на основе WebDriverФреймворк для регрессионного тестирования на основе WebDriver
Фреймворк для регрессионного тестирования на основе WebDriver
 
50 оттенков кеширования: обзор актуальных батареек - Григорий Петров, VoxImplant
50 оттенков кеширования: обзор актуальных батареек - Григорий Петров, VoxImplant50 оттенков кеширования: обзор актуальных батареек - Григорий Петров, VoxImplant
50 оттенков кеширования: обзор актуальных батареек - Григорий Петров, VoxImplant
 
Interactive Lab: Разработка Flash игр на Unity3D
Interactive Lab: Разработка Flash игр на Unity3DInteractive Lab: Разработка Flash игр на Unity3D
Interactive Lab: Разработка Flash игр на Unity3D
 
Automated testing dojo @ Confet&qa
Automated testing dojo  @ Confet&qaAutomated testing dojo  @ Confet&qa
Automated testing dojo @ Confet&qa
 
Как мы админа увольняли, или тонкости организации корпоративной безопасности ...
Как мы админа увольняли, или тонкости организации корпоративной безопасности ...Как мы админа увольняли, или тонкости организации корпоративной безопасности ...
Как мы админа увольняли, или тонкости организации корпоративной безопасности ...
 
Андрей Акиньшин и Михаил Филиппов «Rider: разговоры про внутренности и кроссп...
Андрей Акиньшин и Михаил Филиппов «Rider: разговоры про внутренности и кроссп...Андрей Акиньшин и Михаил Филиппов «Rider: разговоры про внутренности и кроссп...
Андрей Акиньшин и Михаил Филиппов «Rider: разговоры про внутренности и кроссп...
 
Илья Евлампиев - Нагрузочное тестирование веб-приложений с помощью The Grinder
Илья Евлампиев - Нагрузочное тестирование веб-приложений с помощью The GrinderИлья Евлампиев - Нагрузочное тестирование веб-приложений с помощью The Grinder
Илья Евлампиев - Нагрузочное тестирование веб-приложений с помощью The Grinder
 
Pros and Cons of Being an Automation Specialist
Pros and Cons of Being an Automation SpecialistPros and Cons of Being an Automation Specialist
Pros and Cons of Being an Automation Specialist
 
Максим Вишнівецький “Scrum у державному секторі: щоденник тих, хто вижив”
Максим Вишнівецький “Scrum у державному секторі: щоденник тих, хто  вижив”Максим Вишнівецький “Scrum у державному секторі: щоденник тих, хто  вижив”
Максим Вишнівецький “Scrum у державному секторі: щоденник тих, хто вижив”
 
Sun Small Programmable Object Technology (Sun SPOT)
Sun Small Programmable Object Technology (Sun SPOT)Sun Small Programmable Object Technology (Sun SPOT)
Sun Small Programmable Object Technology (Sun SPOT)
 

Similaire à (Не) преждевременная оптимизация проекта на Unreal Engine 4 / Владимир Алямкин (Pushkin Studio / MY.GAMES)

Я. Садовская "Управление конфигурациями и тестовой средой", DUMP-2014
Я. Садовская "Управление конфигурациями и тестовой средой", DUMP-2014Я. Садовская "Управление конфигурациями и тестовой средой", DUMP-2014
Я. Садовская "Управление конфигурациями и тестовой средой", DUMP-2014it-people
 
Porting existing games to Apple Metal API. Case study: Divinity Original Sin ...
Porting existing games to Apple Metal API. Case study: Divinity Original Sin ...Porting existing games to Apple Metal API. Case study: Divinity Original Sin ...
Porting existing games to Apple Metal API. Case study: Divinity Original Sin ...DevGAMM Conference
 
Indie Gamedev
Indie GamedevIndie Gamedev
Indie GamedevIT61
 
Стачка 2017: CinemaVR - история запуска
Стачка 2017: CinemaVR - история запускаСтачка 2017: CinemaVR - история запуска
Стачка 2017: CinemaVR - история запускаAndrey Tatarinov
 
C++ в играх, больших и не очень
C++ в играх, больших и не оченьC++ в играх, больших и не очень
C++ в играх, больших и не оченьcorehard_by
 
Обработка спйсмоданных: возможности оптимизации ИТ-инфраструктуры
Обработка спйсмоданных: возможности оптимизации ИТ-инфраструктурыОбработка спйсмоданных: возможности оптимизации ИТ-инфраструктуры
Обработка спйсмоданных: возможности оптимизации ИТ-инфраструктурыVsevolod Shabad
 
История проекта, который никогда не падает / Андрей Шетухин
История проекта, который никогда не падает / Андрей ШетухинИстория проекта, который никогда не падает / Андрей Шетухин
История проекта, который никогда не падает / Андрей ШетухинOntico
 
Баба-Яга против! — Роман Дворнов, Ostrovok.ru
Баба-Яга против! — Роман Дворнов, Ostrovok.ruБаба-Яга против! — Роман Дворнов, Ostrovok.ru
Баба-Яга против! — Роман Дворнов, Ostrovok.ruYandex
 
Многопоточность в играх. Игорь Лобанчиков. CoreHard Spring 2019
Многопоточность в играх. Игорь Лобанчиков. CoreHard Spring 2019Многопоточность в играх. Игорь Лобанчиков. CoreHard Spring 2019
Многопоточность в играх. Игорь Лобанчиков. CoreHard Spring 2019corehard_by
 
Zero Downtime PHP Deployment with Envoyer And Forge
Zero Downtime PHP Deployment with Envoyer And ForgeZero Downtime PHP Deployment with Envoyer And Forge
Zero Downtime PHP Deployment with Envoyer And ForgeYehor Herasymchuk
 
как инженерные практики помогают экономить бизнесу
как инженерные практики помогают экономить бизнесукак инженерные практики помогают экономить бизнесу
как инженерные практики помогают экономить бизнесуAndrey Rebrov
 
Суперсилы Chrome DevTools — Роман Сальников, 2ГИС
Суперсилы Chrome DevTools — Роман Сальников, 2ГИССуперсилы Chrome DevTools — Роман Сальников, 2ГИС
Суперсилы Chrome DevTools — Роман Сальников, 2ГИСYandex
 
Приключения проекта от компьютера разработчика до серьезных нагрузок/ The pro...
Приключения проекта от компьютера разработчика до серьезных нагрузок/ The pro...Приключения проекта от компьютера разработчика до серьезных нагрузок/ The pro...
Приключения проекта от компьютера разработчика до серьезных нагрузок/ The pro...Mad Devs
 
Приключения проекта от компьютера разработчика до серьезных нагрузок / Андрей...
Приключения проекта от компьютера разработчика до серьезных нагрузок / Андрей...Приключения проекта от компьютера разработчика до серьезных нагрузок / Андрей...
Приключения проекта от компьютера разработчика до серьезных нагрузок / Андрей...Ontico
 
Построение мультисервисного стартапа в реалиях full-stack javascript
Построение мультисервисного стартапа в реалиях full-stack javascriptПостроение мультисервисного стартапа в реалиях full-stack javascript
Построение мультисервисного стартапа в реалиях full-stack javascriptFDConf
 
MagicPlot @ UXSPb @ IT Global Meetup #7
MagicPlot @ UXSPb @ IT Global Meetup #7MagicPlot @ UXSPb @ IT Global Meetup #7
MagicPlot @ UXSPb @ IT Global Meetup #7Alexander Levantovsky
 
SE2016 IoT Maksym Antipov "Hardware development as a hobby and a job"
SE2016 IoT Maksym Antipov "Hardware development as a hobby and a job"SE2016 IoT Maksym Antipov "Hardware development as a hobby and a job"
SE2016 IoT Maksym Antipov "Hardware development as a hobby and a job"Inhacking
 
специализированные http-демона (Сергей Боченков, Александр Панков)
специализированные http-демона (Сергей Боченков, Александр Панков)специализированные http-демона (Сергей Боченков, Александр Панков)
специализированные http-демона (Сергей Боченков, Александр Панков)Ontico
 
Мастер-класс про организацию службы эксплуатации
Мастер-класс про организацию службы эксплуатацииМастер-класс про организацию службы эксплуатации
Мастер-класс про организацию службы эксплуатацииNikolay Sivko
 

Similaire à (Не) преждевременная оптимизация проекта на Unreal Engine 4 / Владимир Алямкин (Pushkin Studio / MY.GAMES) (20)

Я. Садовская "Управление конфигурациями и тестовой средой", DUMP-2014
Я. Садовская "Управление конфигурациями и тестовой средой", DUMP-2014Я. Садовская "Управление конфигурациями и тестовой средой", DUMP-2014
Я. Садовская "Управление конфигурациями и тестовой средой", DUMP-2014
 
Porting existing games to Apple Metal API. Case study: Divinity Original Sin ...
Porting existing games to Apple Metal API. Case study: Divinity Original Sin ...Porting existing games to Apple Metal API. Case study: Divinity Original Sin ...
Porting existing games to Apple Metal API. Case study: Divinity Original Sin ...
 
Indie Gamedev
Indie GamedevIndie Gamedev
Indie Gamedev
 
Стачка 2017: CinemaVR - история запуска
Стачка 2017: CinemaVR - история запускаСтачка 2017: CinemaVR - история запуска
Стачка 2017: CinemaVR - история запуска
 
C++ в играх, больших и не очень
C++ в играх, больших и не оченьC++ в играх, больших и не очень
C++ в играх, больших и не очень
 
Обработка спйсмоданных: возможности оптимизации ИТ-инфраструктуры
Обработка спйсмоданных: возможности оптимизации ИТ-инфраструктурыОбработка спйсмоданных: возможности оптимизации ИТ-инфраструктуры
Обработка спйсмоданных: возможности оптимизации ИТ-инфраструктуры
 
История проекта, который никогда не падает / Андрей Шетухин
История проекта, который никогда не падает / Андрей ШетухинИстория проекта, который никогда не падает / Андрей Шетухин
История проекта, который никогда не падает / Андрей Шетухин
 
Баба-Яга против! — Роман Дворнов, Ostrovok.ru
Баба-Яга против! — Роман Дворнов, Ostrovok.ruБаба-Яга против! — Роман Дворнов, Ostrovok.ru
Баба-Яга против! — Роман Дворнов, Ostrovok.ru
 
Многопоточность в играх. Игорь Лобанчиков. CoreHard Spring 2019
Многопоточность в играх. Игорь Лобанчиков. CoreHard Spring 2019Многопоточность в играх. Игорь Лобанчиков. CoreHard Spring 2019
Многопоточность в играх. Игорь Лобанчиков. CoreHard Spring 2019
 
Zero Downtime PHP Deployment with Envoyer And Forge
Zero Downtime PHP Deployment with Envoyer And ForgeZero Downtime PHP Deployment with Envoyer And Forge
Zero Downtime PHP Deployment with Envoyer And Forge
 
как инженерные практики помогают экономить бизнесу
как инженерные практики помогают экономить бизнесукак инженерные практики помогают экономить бизнесу
как инженерные практики помогают экономить бизнесу
 
Суперсилы Chrome DevTools — Роман Сальников, 2ГИС
Суперсилы Chrome DevTools — Роман Сальников, 2ГИССуперсилы Chrome DevTools — Роман Сальников, 2ГИС
Суперсилы Chrome DevTools — Роман Сальников, 2ГИС
 
Приключения проекта от компьютера разработчика до серьезных нагрузок/ The pro...
Приключения проекта от компьютера разработчика до серьезных нагрузок/ The pro...Приключения проекта от компьютера разработчика до серьезных нагрузок/ The pro...
Приключения проекта от компьютера разработчика до серьезных нагрузок/ The pro...
 
Приключения проекта от компьютера разработчика до серьезных нагрузок / Андрей...
Приключения проекта от компьютера разработчика до серьезных нагрузок / Андрей...Приключения проекта от компьютера разработчика до серьезных нагрузок / Андрей...
Приключения проекта от компьютера разработчика до серьезных нагрузок / Андрей...
 
Построение мультисервисного стартапа в реалиях full-stack javascript
Построение мультисервисного стартапа в реалиях full-stack javascriptПостроение мультисервисного стартапа в реалиях full-stack javascript
Построение мультисервисного стартапа в реалиях full-stack javascript
 
Build your own multistack JS startup
Build your own multistack JS startupBuild your own multistack JS startup
Build your own multistack JS startup
 
MagicPlot @ UXSPb @ IT Global Meetup #7
MagicPlot @ UXSPb @ IT Global Meetup #7MagicPlot @ UXSPb @ IT Global Meetup #7
MagicPlot @ UXSPb @ IT Global Meetup #7
 
SE2016 IoT Maksym Antipov "Hardware development as a hobby and a job"
SE2016 IoT Maksym Antipov "Hardware development as a hobby and a job"SE2016 IoT Maksym Antipov "Hardware development as a hobby and a job"
SE2016 IoT Maksym Antipov "Hardware development as a hobby and a job"
 
специализированные http-демона (Сергей Боченков, Александр Панков)
специализированные http-демона (Сергей Боченков, Александр Панков)специализированные http-демона (Сергей Боченков, Александр Панков)
специализированные http-демона (Сергей Боченков, Александр Панков)
 
Мастер-класс про организацию службы эксплуатации
Мастер-класс про организацию службы эксплуатацииМастер-класс про организацию службы эксплуатации
Мастер-класс про организацию службы эксплуатации
 

Plus de DevGAMM Conference

The art of small steps, or how to make sound for games in conditions of war /...
The art of small steps, or how to make sound for games in conditions of war /...The art of small steps, or how to make sound for games in conditions of war /...
The art of small steps, or how to make sound for games in conditions of war /...DevGAMM Conference
 
Breaking up with FMOD - Why we ended things and embraced Metasounds / Daniel ...
Breaking up with FMOD - Why we ended things and embraced Metasounds / Daniel ...Breaking up with FMOD - Why we ended things and embraced Metasounds / Daniel ...
Breaking up with FMOD - Why we ended things and embraced Metasounds / Daniel ...DevGAMM Conference
 
How Audio Objects Improve Spatial Accuracy / Mads Maretty Sønderup (Audiokine...
How Audio Objects Improve Spatial Accuracy / Mads Maretty Sønderup (Audiokine...How Audio Objects Improve Spatial Accuracy / Mads Maretty Sønderup (Audiokine...
How Audio Objects Improve Spatial Accuracy / Mads Maretty Sønderup (Audiokine...DevGAMM Conference
 
Why indie developers should consider hyper-casual right now / Igor Gurenyov (...
Why indie developers should consider hyper-casual right now / Igor Gurenyov (...Why indie developers should consider hyper-casual right now / Igor Gurenyov (...
Why indie developers should consider hyper-casual right now / Igor Gurenyov (...DevGAMM Conference
 
AI / ML for Indies / Tyler Coleman (Retora Games)
AI / ML for Indies / Tyler Coleman (Retora Games)AI / ML for Indies / Tyler Coleman (Retora Games)
AI / ML for Indies / Tyler Coleman (Retora Games)DevGAMM Conference
 
Agility is the Key: Power Up Your GameDev Project Management with Agile Pract...
Agility is the Key: Power Up Your GameDev Project Management with Agile Pract...Agility is the Key: Power Up Your GameDev Project Management with Agile Pract...
Agility is the Key: Power Up Your GameDev Project Management with Agile Pract...DevGAMM Conference
 
New PR Tech and AI Tools for 2023: A Game Changer for Outreach / Kirill Perev...
New PR Tech and AI Tools for 2023: A Game Changer for Outreach / Kirill Perev...New PR Tech and AI Tools for 2023: A Game Changer for Outreach / Kirill Perev...
New PR Tech and AI Tools for 2023: A Game Changer for Outreach / Kirill Perev...DevGAMM Conference
 
Playable Ads - Revolutionizing mobile games advertising / Jakub Kukuryk (Popc...
Playable Ads - Revolutionizing mobile games advertising / Jakub Kukuryk (Popc...Playable Ads - Revolutionizing mobile games advertising / Jakub Kukuryk (Popc...
Playable Ads - Revolutionizing mobile games advertising / Jakub Kukuryk (Popc...DevGAMM Conference
 
Creative Collaboration: Managing an Art Team / Nastassia Radzivonava (Glera G...
Creative Collaboration: Managing an Art Team / Nastassia Radzivonava (Glera G...Creative Collaboration: Managing an Art Team / Nastassia Radzivonava (Glera G...
Creative Collaboration: Managing an Art Team / Nastassia Radzivonava (Glera G...DevGAMM Conference
 
From Local to Global: Unleashing the Power of Payments / Jan Kuhlmannn (Xsolla)
From Local to Global: Unleashing the Power of Payments / Jan Kuhlmannn (Xsolla)From Local to Global: Unleashing the Power of Payments / Jan Kuhlmannn (Xsolla)
From Local to Global: Unleashing the Power of Payments / Jan Kuhlmannn (Xsolla)DevGAMM Conference
 
Strategies and case studies to grow LTV in 2023 / Julia Iljuk (Balancy)
Strategies and case studies to grow LTV in 2023 / Julia Iljuk (Balancy)Strategies and case studies to grow LTV in 2023 / Julia Iljuk (Balancy)
Strategies and case studies to grow LTV in 2023 / Julia Iljuk (Balancy)DevGAMM Conference
 
Why is ASO not working in 2023 and how to change it? / Olena Vedmedenko (Keya...
Why is ASO not working in 2023 and how to change it? / Olena Vedmedenko (Keya...Why is ASO not working in 2023 and how to change it? / Olena Vedmedenko (Keya...
Why is ASO not working in 2023 and how to change it? / Olena Vedmedenko (Keya...DevGAMM Conference
 
How to increase wishlists & game sales from China? Growth marketing tactics &...
How to increase wishlists & game sales from China? Growth marketing tactics &...How to increase wishlists & game sales from China? Growth marketing tactics &...
How to increase wishlists & game sales from China? Growth marketing tactics &...DevGAMM Conference
 
Turkish Gaming Industry and HR Insights / Mustafa Mert EFE (Zindhu)
Turkish Gaming Industry and HR Insights / Mustafa Mert EFE (Zindhu)Turkish Gaming Industry and HR Insights / Mustafa Mert EFE (Zindhu)
Turkish Gaming Industry and HR Insights / Mustafa Mert EFE (Zindhu)DevGAMM Conference
 
Building an Awesome Creative Team from Scratch, Capable of Scaling Up / Sasha...
Building an Awesome Creative Team from Scratch, Capable of Scaling Up / Sasha...Building an Awesome Creative Team from Scratch, Capable of Scaling Up / Sasha...
Building an Awesome Creative Team from Scratch, Capable of Scaling Up / Sasha...DevGAMM Conference
 
Seven Reasons Why Your LiveOps Is Not Performing / Alexander Devyaterikov (Be...
Seven Reasons Why Your LiveOps Is Not Performing / Alexander Devyaterikov (Be...Seven Reasons Why Your LiveOps Is Not Performing / Alexander Devyaterikov (Be...
Seven Reasons Why Your LiveOps Is Not Performing / Alexander Devyaterikov (Be...DevGAMM Conference
 
The Power of Game and Music Collaborations: Reaching and Engaging the Masses ...
The Power of Game and Music Collaborations: Reaching and Engaging the Masses ...The Power of Game and Music Collaborations: Reaching and Engaging the Masses ...
The Power of Game and Music Collaborations: Reaching and Engaging the Masses ...DevGAMM Conference
 
Branded Content: How to overcome players' immunity to advertising / Alex Brod...
Branded Content: How to overcome players' immunity to advertising / Alex Brod...Branded Content: How to overcome players' immunity to advertising / Alex Brod...
Branded Content: How to overcome players' immunity to advertising / Alex Brod...DevGAMM Conference
 
Resurrecting Chasm: The Rift - A Source-less Remastering Journey / Gennadii P...
Resurrecting Chasm: The Rift - A Source-less Remastering Journey / Gennadii P...Resurrecting Chasm: The Rift - A Source-less Remastering Journey / Gennadii P...
Resurrecting Chasm: The Rift - A Source-less Remastering Journey / Gennadii P...DevGAMM Conference
 
How NOT to do showcase events: Behind the scenes of Midnight Show / Andrew Ko...
How NOT to do showcase events: Behind the scenes of Midnight Show / Andrew Ko...How NOT to do showcase events: Behind the scenes of Midnight Show / Andrew Ko...
How NOT to do showcase events: Behind the scenes of Midnight Show / Andrew Ko...DevGAMM Conference
 

Plus de DevGAMM Conference (20)

The art of small steps, or how to make sound for games in conditions of war /...
The art of small steps, or how to make sound for games in conditions of war /...The art of small steps, or how to make sound for games in conditions of war /...
The art of small steps, or how to make sound for games in conditions of war /...
 
Breaking up with FMOD - Why we ended things and embraced Metasounds / Daniel ...
Breaking up with FMOD - Why we ended things and embraced Metasounds / Daniel ...Breaking up with FMOD - Why we ended things and embraced Metasounds / Daniel ...
Breaking up with FMOD - Why we ended things and embraced Metasounds / Daniel ...
 
How Audio Objects Improve Spatial Accuracy / Mads Maretty Sønderup (Audiokine...
How Audio Objects Improve Spatial Accuracy / Mads Maretty Sønderup (Audiokine...How Audio Objects Improve Spatial Accuracy / Mads Maretty Sønderup (Audiokine...
How Audio Objects Improve Spatial Accuracy / Mads Maretty Sønderup (Audiokine...
 
Why indie developers should consider hyper-casual right now / Igor Gurenyov (...
Why indie developers should consider hyper-casual right now / Igor Gurenyov (...Why indie developers should consider hyper-casual right now / Igor Gurenyov (...
Why indie developers should consider hyper-casual right now / Igor Gurenyov (...
 
AI / ML for Indies / Tyler Coleman (Retora Games)
AI / ML for Indies / Tyler Coleman (Retora Games)AI / ML for Indies / Tyler Coleman (Retora Games)
AI / ML for Indies / Tyler Coleman (Retora Games)
 
Agility is the Key: Power Up Your GameDev Project Management with Agile Pract...
Agility is the Key: Power Up Your GameDev Project Management with Agile Pract...Agility is the Key: Power Up Your GameDev Project Management with Agile Pract...
Agility is the Key: Power Up Your GameDev Project Management with Agile Pract...
 
New PR Tech and AI Tools for 2023: A Game Changer for Outreach / Kirill Perev...
New PR Tech and AI Tools for 2023: A Game Changer for Outreach / Kirill Perev...New PR Tech and AI Tools for 2023: A Game Changer for Outreach / Kirill Perev...
New PR Tech and AI Tools for 2023: A Game Changer for Outreach / Kirill Perev...
 
Playable Ads - Revolutionizing mobile games advertising / Jakub Kukuryk (Popc...
Playable Ads - Revolutionizing mobile games advertising / Jakub Kukuryk (Popc...Playable Ads - Revolutionizing mobile games advertising / Jakub Kukuryk (Popc...
Playable Ads - Revolutionizing mobile games advertising / Jakub Kukuryk (Popc...
 
Creative Collaboration: Managing an Art Team / Nastassia Radzivonava (Glera G...
Creative Collaboration: Managing an Art Team / Nastassia Radzivonava (Glera G...Creative Collaboration: Managing an Art Team / Nastassia Radzivonava (Glera G...
Creative Collaboration: Managing an Art Team / Nastassia Radzivonava (Glera G...
 
From Local to Global: Unleashing the Power of Payments / Jan Kuhlmannn (Xsolla)
From Local to Global: Unleashing the Power of Payments / Jan Kuhlmannn (Xsolla)From Local to Global: Unleashing the Power of Payments / Jan Kuhlmannn (Xsolla)
From Local to Global: Unleashing the Power of Payments / Jan Kuhlmannn (Xsolla)
 
Strategies and case studies to grow LTV in 2023 / Julia Iljuk (Balancy)
Strategies and case studies to grow LTV in 2023 / Julia Iljuk (Balancy)Strategies and case studies to grow LTV in 2023 / Julia Iljuk (Balancy)
Strategies and case studies to grow LTV in 2023 / Julia Iljuk (Balancy)
 
Why is ASO not working in 2023 and how to change it? / Olena Vedmedenko (Keya...
Why is ASO not working in 2023 and how to change it? / Olena Vedmedenko (Keya...Why is ASO not working in 2023 and how to change it? / Olena Vedmedenko (Keya...
Why is ASO not working in 2023 and how to change it? / Olena Vedmedenko (Keya...
 
How to increase wishlists & game sales from China? Growth marketing tactics &...
How to increase wishlists & game sales from China? Growth marketing tactics &...How to increase wishlists & game sales from China? Growth marketing tactics &...
How to increase wishlists & game sales from China? Growth marketing tactics &...
 
Turkish Gaming Industry and HR Insights / Mustafa Mert EFE (Zindhu)
Turkish Gaming Industry and HR Insights / Mustafa Mert EFE (Zindhu)Turkish Gaming Industry and HR Insights / Mustafa Mert EFE (Zindhu)
Turkish Gaming Industry and HR Insights / Mustafa Mert EFE (Zindhu)
 
Building an Awesome Creative Team from Scratch, Capable of Scaling Up / Sasha...
Building an Awesome Creative Team from Scratch, Capable of Scaling Up / Sasha...Building an Awesome Creative Team from Scratch, Capable of Scaling Up / Sasha...
Building an Awesome Creative Team from Scratch, Capable of Scaling Up / Sasha...
 
Seven Reasons Why Your LiveOps Is Not Performing / Alexander Devyaterikov (Be...
Seven Reasons Why Your LiveOps Is Not Performing / Alexander Devyaterikov (Be...Seven Reasons Why Your LiveOps Is Not Performing / Alexander Devyaterikov (Be...
Seven Reasons Why Your LiveOps Is Not Performing / Alexander Devyaterikov (Be...
 
The Power of Game and Music Collaborations: Reaching and Engaging the Masses ...
The Power of Game and Music Collaborations: Reaching and Engaging the Masses ...The Power of Game and Music Collaborations: Reaching and Engaging the Masses ...
The Power of Game and Music Collaborations: Reaching and Engaging the Masses ...
 
Branded Content: How to overcome players' immunity to advertising / Alex Brod...
Branded Content: How to overcome players' immunity to advertising / Alex Brod...Branded Content: How to overcome players' immunity to advertising / Alex Brod...
Branded Content: How to overcome players' immunity to advertising / Alex Brod...
 
Resurrecting Chasm: The Rift - A Source-less Remastering Journey / Gennadii P...
Resurrecting Chasm: The Rift - A Source-less Remastering Journey / Gennadii P...Resurrecting Chasm: The Rift - A Source-less Remastering Journey / Gennadii P...
Resurrecting Chasm: The Rift - A Source-less Remastering Journey / Gennadii P...
 
How NOT to do showcase events: Behind the scenes of Midnight Show / Andrew Ko...
How NOT to do showcase events: Behind the scenes of Midnight Show / Andrew Ko...How NOT to do showcase events: Behind the scenes of Midnight Show / Andrew Ko...
How NOT to do showcase events: Behind the scenes of Midnight Show / Andrew Ko...
 

(Не) преждевременная оптимизация проекта на Unreal Engine 4 / Владимир Алямкин (Pushkin Studio / MY.GAMES)

  • 1. (Не) преждевременная оптимизация проекта на Unreal Engine 4 Владимир Алямкин Pushkin Studio / MY.GAMES
  • 3. Что такое оптимизация проекта? Кадров побольше да пожирнее!
  • 4. А как же.. ..улучшение качества опыта пользователя? ● Минимизация времени загрузки ● Минимизация нагрева устройства ● Минимизация размера билда и апдейтов ● Минимизация нагрузки на сеть ○ Объем траффика ○ Зависимость от пинга
  • 5. Следующий уровень ● Системные требования пониже ● Запас на риск и эксперименты ● Любовь к искусству
  • 6. А разработка? ● Время сборки проекта локально (цена итерации) ● Время сборки билда для тестирования ● Скорость запуска редактора и старта игры ● Время и сложность добавления новых сущностей и тестирование механик ● Количество кадров в редакторе и их запас в Development сборке
  • 8. Кто будет жертвой ● CPU ● GPU ● RAM ● Диск ● Сеть
  • 9. CPU CPU - готовит данные для отрисовки ● Геймплей (обновление игрового мира) ● Интерфейс (предрасчет) ● Физика ● Сеть (внезапно) ● Анимации ● VFX ● Подготовка данных к рендерингу ○ Задания на отрисовку для GPU ○ Подготовка и отсечение необходимого ● Прочие вычисления
  • 10. “Это ядро мы займем под ИИ” Да, звук это тоже CPU. Не заложенный бюджет на звук - признак плохого техпрода. Марк Церни, архитектор PS5
  • 11. GPU Рисует этот бренный мир ● Стильно-модно-молодежно: отсечения и прочее оптимизационное ○ Пример: depth pass для HZB ● Классический draw call: рисуем модельку (каждую) ● Рисуем UI ● Пост-процессы ● Различного рода дополнительные расчеты
  • 12. RAM и VRAM “Чем чотче бытие - тем жирнее текстура” ● Текстуры ● Модели ● Звук ● Буфера для промежуточных данных и отрисовки
  • 13. Диск и остальные Размер билда и скорость загрузки данных ● Стриминг данных (и арт, и звук) ● Загрузка уровней ● Работа с сохранениями ● Модель мира Помните Rage? Или загрузки в Morrowind?
  • 14. А как же “редактор”? Не рантайм, но влияет: ● Архитектура проекта и время его сборки при правках ○ Правильная структура кода может сокращать время сборки в разы ○ Да, это C++ ● Связность классов проекта - сколько ассетов загружается на старте движка ○ А также сколько классов и ассетов загружаются при запуске тестовой игры в редакторе ● Можно ли тестировать проект без танцев с бубном (актуально для сетевых проектов и комплексных ААА с пост-обработкой ассетов)
  • 17. Когда надо начинать оптимизацию? ● Сразу ● На этапе TDD ● В ДНК ● На альфе ● На бете ● На гамме ● На релизе ● После релиза ● Перед релизом ● Никогда
  • 18. На самом деле Оптимизация - это постоянный процесс. Преждевременно: ● Выстраивать сверх-производительную cpu-cache-friendly архитектуру без оценки потенциальных проблем и боттлнеков ● Делать “потенциально более быстродействующие” вещи, если их реализация требует заметных усилий или времени Не преждевременно: ● Провести тестирование as early as possible и следовать полученным выводам и бюджетам ● Концетрироваться на боттлнеках, а не “спичках”
  • 19. КАК? где же ручки, ну где же ваши ручки?
  • 20. Ранний этап ● Выявление технических требований и ограничений ○ Бюджеты на игровую логику, звук ○ Бюджеты на отрисовку ● Синтетическое тестирование как метод оценки
  • 21. Оценка скорости работы 8 мс - много или мало? 40% загрузки CPU - хорошо или нет? 180 шейдерных инструкций - как оценить?
  • 22. Требования к полигонажу От 10к до 500к - разброс на мобилках От 500к до 10кк - на десктопе (допустим) А сколько полигонов на персонаже? Сколько полигонов на оружии? Сколько полигонов на объекте Х?
  • 23. Дроколлы 42. Или 242. На какой сцене считать нагрузку? Дроколл дроколлу рознь! Количество объектов != число дроколлов
  • 24. Когда остановиться? ● В кадрах? ● В миллисекундах? ● В объеме памяти? Определение четкого таргета - залог психического здоровья
  • 25. И как жить? ● Порядок требований может быть сформулирован только для конкретных проектных (или игровых) условий ● Требуется проведение синтетических тестов, эмулирующих конечные условия, для получения оценочных данных ● Что-то пойдет не так. Обязательно. Должен быть запас.
  • 26. Продакшн Два подхода: 1. Оптимизируем в конце 2. Следим за проблемами изначально Ваша игра не будет греть телефон на релизе, если она не греет на всех промежуточных мейлстоунах НО! Цена - постоянный контроль
  • 27. Контролируемый продакшн ● Автоматическое тестирование на соответствие ранее определенным требованиям ● Профайлинг и традиционный индейский вопрос ● Итерирование на реальных ассетах и ситуациях
  • 28. Идеальный случай ● Предпродакшн на высшем уровне - мы четко знаем что делать и как ● Dev билды не вылезают за границы поставленных условий ● Всех били по рукам вовремя
  • 29. Предрелиз ● Рвем волосы на голове и осознаем всю глубину падения ● Ищем удава и отрезаем ему хвост (по самую морду) ● Не всегда возможно, либо: ○ Падает качество арта ○ Проект релизиться с тормозами и фризами ○ “Снова игра на анриле крашится и тормозит” Но всегда есть PUBG.
  • 31. Уровни профайлинга ● Высокоуровневый профайлинг (“злые попугаи - там”): ○ “Треть проца отнял слейт” ○ “Частицы частично всё жрут” ○ “У нас есть звук” ● Низкоуровневый профайлинг ○ “Дьявол кроется в функции UWorld::Tick” ○ “Анимация жука на дальнем плане считается каждый кадр” ○ “Разрушаемые табуретки рисуются по 100 мс” ● Здравый смысл ○ А что мы ждем на данном железе?
  • 32. Здравый смысл (существование попугая) • Диспетчер задач (серьезно!) • Симуляция различных ситуаций • Зависимость от разрешения • Меняем размеры текстур • Отключаем пост-эффекты • Псевдо-scalability • SpaceSniffer на собранном билде
  • 33. Ищем попугаев (безусловно высоких) • Unreal Insights (ищет попугаев комплексно) • CPU + Render • Файловая система • Сеть • Stat GPU https://docs.unrealengine.com/en-US/Engine/Performance/GPU/index.html • Memory Dump https://www.unrealengine.com/en-US/blog/debugging-and-optimizing-memory
  • 34. Разбираем на кусочки ● MSVS C++ Profiler ● GPU ○ RenderDoc ○ Intel Graphics Frame Analyzer ○ NVIDIA Nsight ● Прочие индивидуальные инструменты
  • 36. Впихиваем невпихиваемое ● Много дроколлов? Объединяем чтобы было меньше (инстансинг, merge) ● Много полигонов? Отрезаем (culling, LOD) ● Много памяти и долгая загрузка? Ищем лишнее (async loading, soft object, streaming) ● Всего много и всё надо? Приносим кровавую жертву богам Хаоса Серебряной пули - нет. Но есть документация и “Engine Features”: https://docs.unrealengine.com/en-US/Engine/index.html
  • 38. Владимир Алямкин +7 916 99 228 65 v.alyamkin@corp.mail.ru https://alyamkin.com