Оптимизация игр в Unity 5
Покупка
Издательство:
ДМК Пресс
Автор:
Дикинсон Крис
Перевод:
Рагимов Р. Н.
Год издания: 2017
Кол-во страниц: 306
Дополнительно
Вид издания:
Практическое пособие
Уровень образования:
ВО - Бакалавриат
ISBN: 978-5-97060-432-8
Артикул: 712475.01.99
Ничто так не отпугивает игроков, как сбои при выполнении игры. Задержки при вводе, медленное отображение, физические нестыковки, подергивание, замирание и неожиданное аварийное завершение превращают игру в кошмар, и разработчики игр должны сделать все, чтобы этого никогда не происходило! Из этой книги вы узнаете, как выявлять и исследовать узкие места во всех основных компонентах движка Uoty3D. В каждом конкретном случае описываются способы идентификации проблем, порядок выявления их причин и ряд возможных решений. Издание адресовано разработчикам игр среднего и продвинутого уровня, имеющим опыт работы с Unity и языком С# и желающим повысить производительность своих приложений.
Тематика:
ББК:
УДК:
ОКСО:
- ВО - Бакалавриат
- 09.03.01: Информатика и вычислительная техника
- 09.03.02: Информационные системы и технологии
- 09.03.03: Прикладная информатика
- 09.03.04: Программная инженерия
ГРНТИ:
Скопировать запись
Фрагмент текстового слоя документа размещен для индексирующих роботов
Крис Дикинсон Оптимизация игр в 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 лет я сумел усвоить огромный объем знаний. Сделать это было бы невозможно без постоянной поддержки коллег, преподавателей, друзей и семьи. Спасибо моим коллегам по работе, что с пониманием отнеслись к моему перидическому отсутствию, пока я обучался разработке игр в колледже. А также спасибо моим преподавателям за то, что смогли оперативно донести до меня самое основное и помогли так много узнать о разработке игр за такое короткое время. Спасибо друзьям, которые всегда были и остаются постоянным источником вдохновения, за их интерес к моей работе. Спасибо моей семье за предоставленную возможность получить так много знаний, ощущений и любви за такое короткое время. И конечно, спасибо моей прекрасной жене и лучшему другу Джейми, окружающей меня заботой и поддержкой и помогающей мне творить.