Книжная полка Сохранить
Размер шрифта:
А
А
А
|  Шрифт:
Arial
Times
|  Интервал:
Стандартный
Средний
Большой
|  Цвет сайта:
Ц
Ц
Ц
Ц
Ц

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

Покупка
Артикул: 712475.01.99
Доступ онлайн
699 ₽
В корзину
Ничто так не отпугивает игроков, как сбои при выполнении игры. Задержки при вводе, медленное отображение, физические нестыковки, подергивание, замирание и неожиданное аварийное завершение превращают игру в кошмар, и разработчики игр должны сделать все, чтобы этого никогда не происходило! Из этой книги вы узнаете, как выявлять и исследовать узкие места во всех основных компонентах движка Uoty3D. В каждом конкретном случае описываются способы идентификации проблем, порядок выявления их причин и ряд возможных решений. Издание адресовано разработчикам игр среднего и продвинутого уровня, имеющим опыт работы с Unity и языком С# и желающим повысить производительность своих приложений.
Дикинсон, К. Оптимизация игр в Unity 5 / К. Дикинсон. - ДМК Пресс, 2017. - 306 с. - ISBN 978-5-97060-432-8. - Текст : электронный. - URL: https://znanium.com/catalog/product/1028094 (дата обращения: 22.11.2024). – Режим доступа: по подписке.
Фрагмент текстового слоя документа размещен для индексирующих роботов
Крис Дикинсон

Оптимизация игр  

в Unity 5

Chris Dickinson

Unity 5 Game  
Optimization

MASTER PERFORMANCE OPTIMIZATION  
FOR UNITY3D APPLICATIONS WITH TIPS  
AND TECHNIQUES THAT COVER EVERY ASPECT  
OF UNITY3D ENGINE

BIRMINGHAM – MUMBAI

Крис Дикинсон

Оптимизация игр  

в Unity 5

СОВЕТЫ И МЕТОДЫ   

ОПТИМИЗАЦИИ ПРИЛОЖЕНИЙ,  

ОХВАТЫВАЮЩИЕ ВСЕ АСПЕКТЫ РАБОТЫ  

С ДВИЖКОМ UNITY3D

Москва, 2017

УДК 004.4'2Unity3D
ББК 32.972

Д44

Дикинсон К.

Д44
Оптимизация игр в Unity 5: пер. с англ. Рагимова Р. Н. – М.: 
ДМК Пресс, 2017. – 306 с.: ил.

ISBN 978-5-97060-432-8

Ничто так не отпугивает игроков, как сбои при выполнении игры. Задержки при 

вводе, медленное отображение, физические нестыковки, подергивание, замирание 
инеожиданное аварийное завершение превращают игру в кошмар, иразработчики 
игр должны сделать все, чтобы этого никогда не происходило!

Из этой книги вы узнаете, как выявлять и исследовать узкие места во всех 

основных компонентах движка Unty3D. В каждом конкретном случае описываются способы идентификации проблем, порядок выявления их причин и ряд 
возможных решений.

Издание адресовано разработчикам игр среднего и продвинутого уровня, 

имеющим опыт работы с Unity и языком C# и желающим повысить производительность своих приложений.

УДК 004.4'2Unity3D
ББК 32.972

 Copyright © Packt Publishing 2015. First published in the English language 

under the title “Unity 5 Game Optimization” – (9781785884580).

Все права защищены. Любая часть этой книги не может быть воспроиз
ведена в какой бы то ни было форме и какими бы то ни было средствами без 
письменного разрешения владельцев авторских прав.

Материал, изложенный в данной книге, многократно проверен. Но по
скольку вероятность технических ошибок все равно существует, издательство 
не может гарантировать абсолютную точность и правильность приводимых 
сведений. В связи с этим издательство не несет ответственности за возможные 
ошибки, связанные с использованием книги.

ISBN 978-1-78588-458-0 (анг.)
© 2016 Packt Publishing

ISBN 978-5-97060-432-8 (рус.)
© Оформление, перевод, ДМК Пресс, 2017

Содержание

Об авторе ................................................................. 9
Благодарности .........................................................10
О технических рецензентах ....................................... 11
Предисловие ...........................................................13

Глава 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

Глава 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

Содержание  7

Правильное использование статических коллайдеров .................................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

Об авторе

Крис Дикинсон (Chris Dickinson) вырос в Англии, увлекается естественными науками, математикой и компьютерными играми. Получив в 2005 году степень магистра в области физики и электроники, 
сразу же переехал в Калифорнию, чтобы заниматься научными исследованиями в самом сердце Кремниевой долины. Затем, разочаровавшись в своем выборе, переключился на работу в области разработки программного обеспечения.

За последнее десятилетие он многого достиг, сделал карьеру в области разработки программного обеспечения, стал ведущим разработчиком. Крис в основном занимался программным обеспечением 
для автоматизации и создавал инструменты для внутреннего тестирования в процессе разработки, но страсть к видеоиграм не потерял. 
В 2010 году он занялся изучением секретов разработки игр и трехмерной графики и получил степень бакалавра в области разработки 
игр и программного моделирования. Написал учебник о применении 
физических законов в играх (Learning Game Physics with Bullet Physics 
and OpenGL, издана в Packt Publishing). В настоящее время продолжает разрабатывать программное обеспечение, свободное время посвящая работе над независимыми игровыми проектами, использующими Unity 3D.

Благодарности

Всего за 5 лет я сумел усвоить огромный объем знаний. Сделать это 
было бы невозможно без постоянной поддержки коллег, преподавателей, друзей и семьи.
Спасибо моим коллегам по работе, что с пониманием отнеслись 
к моему перидическому отсутствию, пока я обучался разработке игр 
в колледже.
А также спасибо моим преподавателям за то, что смогли оперативно донести до меня самое основное и помогли так много узнать о разработке игр за такое короткое время.
Спасибо друзьям, которые всегда были и остаются постоянным источником вдохновения, за их интерес к моей работе.
Спасибо моей семье за предоставленную возможность получить 
так много знаний, ощущений и любви за такое короткое время.
И конечно, спасибо моей прекрасной жене и лучшему другу Джейми, окружающей меня заботой и поддержкой и помогающей мне творить.

Доступ онлайн
699 ₽
В корзину