Поделиться

Оптимизация игр в Unity 5

Практическое руководство методов повышения производительности Unity Engine.

Дикинсон К. «Оптимизация игр в Unity 5» DMK-Press, 2017 год, 306 стр., ISBN 978-5-97060-432-8; (5,02 мб. pdf + 5,61 мб. djvu + 7,25 code )

О книге.
Эта книга предназначена для практикующих и продвинутых разработчиков Unity, которые имеют опыт работы с большинством функциональных наборов Unity, и которые хотят максимизировать производительность своей игры. Показаны примеры оптимизация циклов ЦП, использования памяти и пропускной способности GPU для любого приложения Unity3D. Приводится описание методов оптимизации для всех функций Unity Engine, включая сценарии, управление активами, физики, графических функций и шейдеров. Требуется знания языка C#.

Что Вы Узнаете.
Как использовать Unity Profiler, для поиска «узких» мест вашего приложения, и их устранения. Избежать распространенных ошибок в сценариях C#. Максимизировать производительность за счет уменьшения числа вызовов draw. Максимально использовать физический движок для увеличения производительности. А также познакомьтесь с лучшими практиками организации проекта, чтобы сэкономить время благодаря оптимальному рабочему процессу.

Оглавление книги

Содержание

Глава 1. Выявление проблем с производительностью 19
Профилировщик Unity Profiler 20
Запуск профилировщика 21
Окно профилировщика 25
Методы анализа производительности 32
Проверка присутствия сценария 33
Проверка количества сценариев 34
Сведение к минимуму изменений в текущем коде 35
Сведение к минимуму внутренних помех 35
Сведение к минимуму внешних помех 37
Выборочное профилирование сегментов кода 37
Управление профилировщиком из сценариев 38
Нестандартное профилирование использования центрального процессора 40
Сохранение и загрузка данных профилировщика 44
Сохранение данных профилировщика 45
Загрузка данных профилировщика 48
Заключительные соображения о профилировании и анализе 52
Освоение профилировщика 52
Уменьшение шума 53
Сосредоточение внимания на проблеме 54
Итоги 54

Глава 2. Приемы разработки сценариев 56
Кэширование ссылок на компоненты 56
Самый быстрый метод получения ссылок на компоненты 58
Удаление пустых объявлений обратных вызовов 61
Не используйте методов Find() и SendMessage() 63
Статические классы 65
Компоненты-одиночки 67
Сохранение ссылок на существующие объекты 71
Глобальная система обмена сообщениями 74
Отключение неиспользуемых сценариев и объектов 85
Отключение невидимых объектов 85
Отключение отдаленных объектов 86
Замена расстояния квадратом расстояния 87
Избегайте извлечения строковых свойств объектов игры 89
Метод Update, сопрограммы и метод InvokeRepeating 91
Кэширование изменений компонента Transform 97
Ускорение проверки отсутствия ссылки на игровой объект 98
Итоги 99

Глава 3. Преимущества пакетной обработки 100
Вызовы системы визуализации 101
Материалы и шейдеры 103
Динамическая пакетная обработка 107
Атрибуты вершин 108
Однородное масштабирование 109
Краткие выводы о динамической пакетной обработке 110
Статическая пакетная обработка 111
Флаг Static 111
Требования к памяти 112
Ссылки на материалы 113
Особенности использования статической пакетной обработки 113
Краткие выводы о статической пакетной обработке 115
Итоги 116
without advertising
Глава 4. Привнесение искусства 117
Аудио 118
Загрузка аудиофайлов 118
Форматы кодирования и уровни качества 121
Улучшение производительности аудио 123
Файлы текстур 128
Форматы сжатия 129
Улучшение производительности обработки текстур 131
Файлы мешей и анимаций 141
Уменьшение количества полигонов 141
Импорт/расчет только необходимого 143
Встраиваемые анимации 143
Оптимизация мешей движком Unity 144
Объединение мешей 145
Итоги 145

Глава 5. Разгон физического движка 147
Внутреннее устройство физического движка 148
Физические движки и время 148
Статические и динамические коллайдеры 152
Обнаружение столкновений 153
Виды коллайдеров 154
Матрица столкновений 155
Активное и неактивное состояния компонента Rigidbody 156
Отбрасывание лучей и объектов 157
Оптимизация производительности физической системы 157
Настройка сцены 157
Правильное использование статических коллайдеров 160
Оптимизация матрицы столкновений 161
Предпочтение дискретного обнаружения столкновений 162
Изменение частоты фиксированных обновлений 163
Настройка максимально допустимой длительности 165
Уменьшение отбрасывания лучей и ограничение проверяемого объема 165
Избегайте сложных меш-коллайдеров 167
Избегайте сложных физических компонентов 170
Пусть физические объекты поспят 170
Изменение количества итераций 172
Оптимизация тряпичных кукол 173
Когда следует использовать физическую систему 175
О возможности перехода на Unity 5 176
Итоги 177

Глава 6. Динамическая графика 178
Профилирование проблем отображения 179
Профилирование графического процессора 181
Отладка кадров 184
Поиск методом перебора 185
Основная нагрузка приходится на центральный процессор 185
Узкие места на этапе предварительной обработки 189
Уровень детализации 189
Отключение скининга графическим процессором 191
Уменьшение тесселяции 192
Узкие места на этапе окончательной обработки 192
Скорость заполнения 192
Пропускная способность памяти 206
Ограничения видеопамяти 210
Освещение и затенение 212
Непосредственное отображение 213
Отложенное затенение 214
Обработка освещения в вершинном шейдере (устаревший способ) 214
Обработка теней в реальном времени 215
Оптимизация освещения 215
Оптимизация графики для мобильных устройств 217
Минимизация обращений к системе визуализации 218
Минимизация количества материалов 218
Уменьшение размеров текстур и количества материалов 218
Квадратные текстуры с размером стороны, кратной степени числа 2 219
Использование в шейдерах форматов с минимально допустимой точностью 219
Избегайте альфа-тестирования 219
Итоги 219

Глава 7. Мастерство управления памятью 221
Платформа Mono 222
Процесс компиляции 224
Оптимизация использования памяти 226
Области памяти Unity 227
Значения и ссылки 236
Важность порядка размещения данных 249
Прикладной программный интерфейс Unity 250
Циклы foreach 251
Сопрограммы 252
Замыкания 252
Функции в библиотеке .NET 253
Временные рабочие буферы 254
Пулы объектов 254
Пулы шаблонных объектов 257
Компоненты пула 260
Система пулов шаблонных объектов 263
Пулы шаблонных объектов 267
Активация объектов 268
Предварительное создание экземпляров 269
Деактивация объектов 270
Тестирование пула шаблонных объектов 271
Организация пулов шаблонных объектов и загрузка сцены 272
Итоговые замечания об организации пулов шаблонных объектов 273
Дальнейшее развитие Mono и Unity 274
Итоги 276

Глава 8. Тактические советы и подсказки 278
Подсказки по клавишам быстрого доступа в редакторе 279
Игровые объекты 279
Представление сцены 279
Массивы 280
Интерфейс 280
Прочее 281
Советы, касающиеся интерфейса редактора 281
Общие 281
Представление инспектора 284
Представление проекта 286
Представление иерархии 287
Представления сцены и игры 288
Режим воспроизведения 289
Советы для сценариев 290
Общие 290
Атрибуты 291
Регистрация 293
Полезные ссылки 293
Советы по настройке редактора и меню 294
Советы, не касающиеся Unity напрямую 296
Другие советы 297
Итоги 298
Предметный указатель 300

СкачатьPDF+DJVU+Code


Поделиться