Учебник Bethesda Оптимизация

Навигация

Материал из Creation Kit Русский
Версия от 09:45, 13 января 2016; Admin (обсуждение | вклад) (Что есть оптимизация?)

(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск
Учебник Bethesda Оптимизация
Серия Дизайн Уровней, глава 7
Вернуться в Учебный центр
LeftArrow.png Предыдущий учебник Следующий учебник RightArrow.png
Примеры плагинов:
Начальный Завершенный


Обзор

Эта глава проведет вас через процесс оптимизации подземелья для повышения производительности.

Вы узнаете:

  • Советы по достижению наилучшей производительности
  • Инструменты доступные для оптимизации
  • Как размещать маркеры комнат и порталы

Что есть оптимизация?

Зачастую визуализируемые в играх объекты, продолжают тратить драгоценную производительность, когда они не нужны. Например, если игрок находится внутри комнаты, у которой со всех сторон стены, он не увидит что-либо за стенами. Нет необходимости в визуализации объектов, находящимися за ними. Однако, по-умолчанию эти объекты могут быть визуализированы. Смотри Рис. 7.1 для примера. Хоть и выбраковка таких объектов может казаться очевидной для нас, иногда игровым движкам приходится принимать нелегкое решение о том, что должно быть прорисовано.

Для того чтобы помочь игре узнать о том, что нам не нужно визуализировать объекты вне стен, у нас в распоряжении есть специальные инструменты, доступные для оптимизации комнаты. Благодаря этим инструментам игра может принимать лучшие решения о том, что визуализировать, а что выбраковывать. Доступные инструменты - это порталы (Portals), маркеры комнат (Room Markers), Multibound, и Occlusion Plane.

Не всегда необходимо делать ручную оптимизацию - некоторые пространства очень простые и потребляют не много ресурсов. Запомните, что игровое пространство может хорошо работать на вашей машине, и при этом работать очень плохо на другой машине, с другой конфигурацией железа. Этот учебник постарается ознакомить вас и дать несколько практических примеров в том, как сделать, чтобы ваш мод хорошо работал на максимально возможном числе машин.

Сборка уровня с учетом руководящих принципов по оптимизации

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

  • Следите за числом объектов

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

  • Избегайте длинных коридоров

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

В нашей локации Lokir's Tomb как раз есть проблема с длинной линией зрения, которая может являться причиной снижения производительности, если так и оставить её. Из входа в комнату вы можете увидеть далее находящиеся две комнаты, что служит причиной визуализации большого числа объектов в игре, как на Рис. 7.2.

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

  1. Найдите ссылку "NorHallBg1way01" около входа в подземелье.
  2. Ctrl+F для замены её объектом "NorHallBg1wayStairs256"
  3. Убедитесь что отображение маркеров включено (клавиша "M")
  4. Измените положение подземелья и навигационной сетки для выравнивания с новой лестницей
  5. Внимательно проверьте на наличие каких-либо швов из-за изменения высоты.
  • Проверяйте количество источников света

Как и от объектов, от числа источников света в пространстве зависит производительность игры. Постарайтесь не освещать объект более чем двумя источниками света. Вы можете увидеть сколько ссылок освещает свет используя горячую клавишу "L". Вы так же можете смотреть на проблемы с освещением нажав правую кнопку мышки в окне Render Window и выбрав пункт "Render Window Properties". Перейдите на вкладку "Shaders" и поставьте галочку у пункта, где написано "# of lights". Рис. 7.3 показывает пример игрового пространства со слишком большим количеством источников света. Различные цвета показывают собой число источников света, освящающих каждую ссылку. Зеленый представляет неосвещенный участок и красный значит очень большое количество света на этом участке, и возможные проблемы с производительностью. Хорошо взять за правило делать проверку, чтобы ничего не показывалось красным цветом при настройке освещения в подземелье.

  • Наблюдение за частотой кадров в секунду используя FRAPS

FRAPS это программное обеспечение для захвата видео и скришотов в играх, позволяющее так же отображать частоту кадров в секунду (FPS), когда запущено. Хорошо бы исользовать FRAPS во время бега по подземелью для проверки частоты кадров в секунду, при этом для проверки нужно стараться смотреть во всех направлениях. Хорошим правилом является постоянная частота в 30 кадров в секунду. Если в какой-то точке FPS понижается, то возможно в поле зрения игрока есть проблема с количеством объектов. Скачать FRAPS можно здесь.

Маркеры комнат и порталы

Рис. 7.4: Черная точка и голубой конус представляют собой положение игрока и усеченную пирамиду поля зрения. Фигура, помеченная A и B представляет собой маркеры комнат, и красные линии a и b это порталы.

Маркеры комнат это простые фигуры, которые вы можете создать для определения конкретной зоны, как комнаты. По сути, комнаты это как сборщики объектов. При выбраковке, визуализатор будет рассматривать все внутри другой комнаты, как невидимое, экономя драгоценную вычислительную мощность компьютера.

Маркеры комнат

Маркер комнаты (англ. Room Marker), иногда называемый граница комнаты (англ. Roombound), это бокс, для группировки объектов вместе, позволяющий Creation Engine визуализировать или выбраковывать их как группу. Например, мы можем создать большой маркер комнаты, который окружает всю комнату. По-умолчанию, объекты внутри этого маркера будут нормально визуализироваться - но как только вы выходите из него, каждый объект, охваченный маркером комнаты будет выбракован и станет невидимым.

Боксы "A" и "B" на Рис. 7.4 представляют собой два маркера комнат. Черная точка это игрок, и полу-прозрачный треугольник показывает поле зрения игрока. С помощью всего лишь этих маркеров комнат, игрок будет видеть только ссылки (объекты) внутри комнаты "A". Однако, спасибо порталам, благодаря которым мы можем логично соединять маркеры комнат между собой.

Порталы

Портал (англ. Portal) это своего рода дверной проем от одного маркера комнаты в другой. Без порталов, игрок на Рис. 7.4 увидит все ссылки внутри комнаты "A", но не увидит ничего внутри комнаты "B". Однако на этой диаграмме два портала: портал "a" и портал "b".

Поскольку усеченная пирамида поля зрения игрока включает некоторые объекты или даже все в портале "a", содержимое обеих комнат "A" и "B" будет визуализировано. (Положим, что "a" конечно же привязана к обоим комнатам "A" и "B". Подробнее позже.)

Обратите внимание что игрок не может видеть никакую часть портала "b". Это обозначает что любая комната, присоединенная к этому порталу (ни одна из показанных) будет выбраковываться.

Процесс оптимизации

Ручная оптимизация с использованием маркеров комнат и порталов по началу может быть сложной для понимания. Но давайте пройдем вместе через этот процесс на примере нашего подземелья Lokir's Tomb, чтобы понять как это делается.

Шаг 1: Создаем маркеры комнат

Перед тем, как мы начнем, есть несколько быстрых шагов по настройке:

  1. Разбейте длинные линии обзора как говорилось выше, если ещё этого не сделали (Рис. 7.2)
  2. Включите привязку к сетке Snap-to-Grid (клавиша Q или кнопка IconSnaptoGrid.png)
  3. На главной панели инструментов нажмите: View > Show/Hide Window
  4. Проверьте на активность "Portals and Rooms". Примечание: "Markers" так же должны быть включены

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

  1. Ctrl+щелчок для выбора кусочков стен с каждой стороны комнаты
  2. Нажмите кнопку "Create Room" на главной панели инструментов: IconRoom.png
  3. Обратите внимание, что наш маркер комнаты охватывает все объекты внутри нашего выделения.
  4. Вручную измените масштаб маркера комнаты, чтобы он включал и некоторые блуждающие кусочки, как на Рис. 7.5b.
  5. Повторите этот процесс для создания всех пяти комнат, как показано на Рис. 7.5c-e.
    1. По желанию, вы можете дублировать существующий маркер комнаты и изменять его масштаб вручную. Выбор зависит от вас, но результат должен быть схожий.
Achtung.png Здесь можно немного выходить за границы. Каждый портал, попадающий в поле зрения камеры игрока включает в себя объем ресурсов для визуализации, это означает, что слишком много комнат/порталов может вызвать более медленную работу игрового пространства, чем без их использования. Хорошим правилом является избежание ситуаций, когда в линию зрения может попасть более 3-5 порталов.

Некоторые из ваших комнат могут пересекаться или быть разделены небольшими зазорами, как на Рис. 7.5d, в зависимости от того как вы их создавали. Вы можете использовать неравномерное масштабирование (о котором говорилось в учебнике ранее) чтобы свести к минимуму эти ошибки. Старайтесь выравнивать комнаты по наиболее узким точкам, таким, как дверные проемы. Дополнительную информацию о работе с примитивами можно найти здесь. Creation Kit сам попытается исправить незначительные ошибки, когда мы свяжем наши комнаты вместе, но это позже, а сейчас лучше стремиться к хорошей привязке, как на Рис. 7.5e.

Теперь попробуйте запустить игру. Вы заметите, что не все выглядят правильно; каждая комната визуализируется сама по себе, когда игрок зайдет в неё. В любом месте, где начинается другой маркер комнаты, вы увидите пробелы, ведущие в пустоту. В следующем шаге мы установим порталы, которые позволяют Creation Engine визуализировать несколько комнат за раз.

Achtung.png Достаточно важным аспектом являются идеально выровненные края маркера комнаты, или вы получите в итоге небольшие пересечения с соседней комнатой и/или зазоры, из-за которых может происходить некорректная визуализация. А такие ошибки, как известно, трудно найти и отладить, но обычно их можно избежать, если у вас будет привычка хорошо выравнивать их на данном этапе.
Protip.jpg При создании маркера комнаты (или другого примитива) с выделенными объектами, только что созданный примитив будет совпадать с позицией, углом поворота, и границами области выделения. Это очень полезно для быстрого создания точных маркеров комнаты, как вы могли видеть выше. Вы так же можете создать "старомодные" примитивы: просто нажмите на кнопку IconRoom.png без выделенных объектов, затем щелкните там, где хотите разместить данный примитив, затем измените масштаб на нужный.

Шаг 2: Обдумываем порталы

Мы создадим порталы везде, где a) встречаются два маркера комнаты и b) игрок должен мочь видеть из одной комнаты другую. Вы можете рассматривать их как своего рода окно, определенное пользователем. Теперь попробуем создать портал:

  1. Выберите маркер комнаты, охватывающий первую комнату. Убедитесь что больше ничего не выбрано.
  2. Разместите камеру внутри комнаты.
  3. Смотрите через дверной проем, аналогично виду от первого лица, как на Рис. 7.6a.
  4. Войдите в режим "Portal Mode" нажав IconPortalMode.png или сочетание клавиш Ctrl+P.
    1. Примечание: При нахождении в режиме портала, можно выделять только порталы.
  5. Нажмите кнопку "Create Portal" на главной панели инструментов: IconPortalCreate.png
  6. Щелкните по видимой голубой поверхности внутри дверного проема
  7. Будет создана темная фигура, вровень с границей вашей комнаты. Это и есть портал.
    1. Иногда портал не создается на корректной грани комнаты. Если это случилось, нажмите Shift+F для фокусировки камеры на только что созданном портале, затем поверните/измените его позицию на приблизительно ту, где должны соединяться две комнаты. Он будет привязан именно тогда, когда мы присоединим к нему вторую комнату, которую сделаем в ближайшее время.
  8. Используйте помощник масштабирования для изменения формы портала. Он должна быть как можно меньше, пока полностью не заполнит видимое пространство на пересечении комнат. (Рис. 7.6b)

Портал расположен правильно, но привязан только к одной из двух комнат. Чтобы это начало работать правильно, вам нужно привязать ко второй комнате.

  1. Сохраняя портал выделенным, выйдите из режима Portal Mode. (IconPortalMode.png или нажмите Ctrl+P)
  2. Ctrl+щелчок по второму маркеру комнаты.
  3. Теперь у вас должны быть выделено два объекта: портал и вторая комната без привязки.
  4. Нажмите кнопку "Link Portal To Room": IconPortalLink.png

Вы увидите появившуюся белую стрелку от портала к центру только что привязанной комнаты. (Рис. 7.6c) Такое визуальное представление это хороший способ для выборочной проверки соединений между комнатами в пространстве. Вы также можете заметить небольшое изменение в масштабе/позиции маркера комнаты #2. Процесс связывания обеспечивает то, что грань комнаты и портал буду компланарны (в параллельных плоскостях), что иногда исправляет маленькие ошибки. Однако лучше всего попробовать заранее убедиться в том, что комнаты правильно привязаны. Эти автоматические корректировки могут стать проблематичными, когда работаете с комнатой, у которой несколько порталов; корректировка с одной стороны комнаты может создать зазор с другой - так что лучше полностью не полагаться на это.

Achtung.png Если у вас возникли проблемы с выделением портала, то перейдите в режим Portal Mode, выбрав маркер комнаты и нажав "CTRL+P" или IconPortalMode.png, и выделите ваш портал. Когда вы в режиме Portal Mode, вы можете выделять только порталы. Это полезно, когда у вас много предметов, перекрывающих вид.

Помните об этом, если вы когда-нибудь окажетесь не в состоянии выбрать что-либо в редакторе - возможно вы случайно вошли в режим Portal Mode!

Шаг 3: Завершение процесса оптимизации

Теперь, когда маркеры комнат размещены, продолжайте добавлять маркеры по всей локации LokirsTomb пока не соедините все комнаты. Этот макет уровня относительно прост, и большинство проблем можно обнаружить, просто запустив это пространство в игре, и поискать те зоны, где все или некоторые из объектов, которые вы ожидали увидеть не появились, обычно из-за зазора или перекрытия на месте соединения двух маркеров комнат.

InDepth.jpg Некоторые советы для продвинутой оптимизации:
  • Несколько комнат могут быть объединены и рассматриваться как одинарный маркер комнаты. Это позволяет охватить комнату необычной формы, и особенно полезно для зон с несколькими переходами, построенными без сетки. Для объединения комнат, выделите каждый маркер комнаты и нажмите кнопку "Join Rooms": IconJoinRooms.png Объединенные комнаты указываются двунаправленной синей стрелочкой.
  • Есть возможность получить чистый, вид ваших соединений в стиле диаграммы. С отключенными к отображению порталами (Portals) и комнатами (Rooms) в меню View, выделите все объекты и нажмите два раза "1" чтобы спрятать все объекты. Затем в меню View включите показ Portals/Rooms, войдите в режим Portal Mode, и выделите все порталы. (Рис. 7.7)
  • После соединения с маркерами комнат, портал нельзя перемещать. Вы можете разорвать данную связь используя кнопку "Break Portal Link": IconPortalDetach.png
  • Каждая ссылка может принадлежать только одному маркеру комнаты - по-умолчанию, это тот маркер, в котором находится его точка пересечения осей. Если нужно, чтобы ссылка была видимой в нескольких комнатах, присоедините её к ячейке "NONE" на вкладке Multibound в свойствах ссылки.
  • Skybox'ы могут быть использованы для настройки диорамы скайбоксов, чтобы сделать ваши пространства, в которых есть отверстия с видом на небо более правдоподобными.

Как только ваш уровень оптимизирован для максимальной производительности, пришло время перейти к освещению и эффектам!

LeftArrow.png Предыдущий учебник Вернуться в Учебный центр Следующий учебник RightArrow.png