Учебный курс Bethsoft. GECK. Оптимизация.
Содержание. |
Приготовьтесь к оптимизации.
Введение.
С точки зрения производительности, ненужные объекты отрисовывающиеся во время игры, обходятся дорого.
Например, если игрок находится внутри комнаты со стенами со всех сторон, то он не может видеть то, что за ними. Объекты позади стен отрисовывать не нужно. Для нас это очевидно, но, игровому движку иногда трудно принять правильное решение.
Мы располагаем особыми инструментами, чтобы помочь игре узнать, что за стенами не надо выполнять отрисовку и оптимизировать комнату. Спасибо этим инструментам. Игра может принять грамотное решение по отрисовке видимых объектов и отбраковке объектов за преградой без выполнения запутанных вычислений. В нашем распоряжении находятся Тамбуры, Метки комнаты, Мультиграницы и Поглощающие плоскости. В этой части руководства мы проходим оптимизацию убежища. Прежде чем начать, давайте разберёмся с инструментами, которые находятся в нашем распоряжении.
Оптимизирующие инструменты.
Метка комнаты.
Метка комнаты -- это ящик, используемый для скрытия объектов. Например, метка комнаты окружающая проход. Внутри коридора мы расположили несколько объектов: стулья, столы, строительный мусор и т.д. Если бы в игре мы шли или стояли в проходе, то хотели бы видеть все эти объекты. Однако, как только мы прошли коридор, то все объекты внутри метки комнаты будут отсечены (невидимы).
Блоки "A" и "B" на диаграмме обозначают две Метки Комнаты. Чёрная точка — это игрок. Закрашенный треугольник показывает поле зрения игрока. Игрок в пределах Метки комнаты "A": отрисуются только объекты в пределах "A".
Тамбур.
Тамбур соединяет две Метки комнаты вместе. Считайте, что тамбур это проход внутрь метки комнаты. Если две метки комнаты следуют друг за другом, без тамбура между ними, то мы не сможем увидеть объекты в метках комнат пока не окажемся в них. Если портал помещён между ними, то мы сможем увидеть объекты в каждой из меток комнат сквозь присоединённый тамбур.
На диаграмме, справа оранжевая линия "a" изображает тамбур, связанный с Меткой комнаты "A" и "B". Тамбур «b» изображает тамбур к неограниченной области. Из-за того что тамбур в пределах поля зрения игрока, содержимое и "A" и "B" отрисуется. Так как тамбур "b" игроку не виден, объекты по ту сторону не отрисовываются (поглощаются).
Мультиграница.
Подобно Меткам комнаты, мультиграница скрывает группу объектов, которые поглощающая система трактует как единый объект отрисовки.. Если какая-нибудь часть мультиграницы видима, то отрисовываются все объекты в её пределах. Мультиграница обычно использует множества и здесь подробно не рассматривается.
Поглощающая плоскость.
Поглощающая плоскость — это просто простейшая плоскость, которая указывает отрисовщику отбраковывать любые скрытые за ней объекты.
Шаг 1: Создание трёх Меток комнаты.
Видеокурс на YouTube. Оптимизация. Часть 1.
В этой части руководства мы проходим применение Меток комнаты и Тамбуров для оптимизации первой секции нашего убежища. Мы не будем размещать Мультиграницы и Поглощающие плоскости.
Оптимизируем подсвеченные зелёным области (см. иллюстрацию ниже).
Обратите внимание, что подсвеченная секция состоит из трёх больших "комнат".
- Область пещеры.
- Большая комната, где находится дверь убежища.
- Прямой проход с лестничным маршем.
Давайте сделаем метки комнат для каждой из трёх областей. Прежде чем начать делать нашу первую метку комнаты, нам нужно сделать две вещи.
- Убедитесь, что выравнивание по сетке
включено. Это гарантирует, что наши метки комнаты и тамбуры будут хорошенько скреплены вместе.
- Убедитесь, что Метки комнаты и Тамбуры не скрыты. Для проверки пройдите в View (Вид) и щёлкните по Show/Hide (Показать/Скрыть). Появится диалог Show/Hide (Показать/Скрыть) Убедитесь, что Метки комнаты и Тамбуры отмечены. За одно убедитесь, что и Мультиграницы и Поглощающие плоскости тоже отмечены.
Если освещение в окне отрисовки мешает, то с помощью L вы можете его отключить. Более того, может быть вам захочется клавишей M запретить отображение меток геометрии.
Нажмите Метку комнаты на панели инструментов или введите "Room
Marker mode" (Режим меток комнаты). Когда иконка в положении включено, вы в режиме рисования
примитивов.
Двигайте мышь с нажатой левой клавишей на какой-нибудь поверхности уровня, чтобы задать XY-размеры метки комнаты. Отпустите левую клавишу и переместите мышь, чтобы задать Z-размер. Нажмите ещё раз левую клавишу для завершения изменения Метки комнаты.
Не беспокойтесь о правильном размере. Потом мы отмасштабируем так как нужно. По завершении изменения Метки комнаты вы автоматически выйдите из режима рисования примитивов; должна быть создана синяя метка комнаты как на иллюстрации рис. 2а. Заметьте, что моя Метка комнаты должна быть настолько мала, чтобы окружать пещерную область.
Чтобы узнать больше информации о создании примитивов (вроде метки комнаты), щёлкните здесь и прочтите ещё раз краткое руководство на этой странице.
Вы должны заметить, что вы можете начать создавать примитив только где-нибудь на плоскости кроме пустот.
Для изменения размеров Метки комнаты, выберите нужную, нажмите левой кнопкой мыши на одной из ручек в виде разноцветных стрелок, ориентированных по осям X,Y,Z и тащите (ручка с помощью которой масштабируется Метка комнаты в английской версии руководства называется Гизмо. Наверное это отсылка к Fallout 2. Только того Гизмо хватать и тащить было очень опасным занятием. — прим. пер.). Я подогнал размер Метки комнаты по внешнему размеру пещерной области как на рис. 2б.
Рис. 2в изображает ту же метку комнаты, но, отличие в том, что показано масштабирование по оси Z.
Теперь у нас есть одна метка комнаты, окружающая пещерную область, нам нужно сделать ещё две, чтобы покрыть большую комнату и коридор.
Выберите имеющуюся метку комнаты и дублируйте её ("CTRL-D"). Переместите новую метку комнаты и масштабируйте её, чтобы обернуть область комнаты убежища. Снова повторите эту процедуру, чтобы покрыть коридор. Когда вы всё сделаете, у вас должны быть три метки комнаты перекрывающие три значительных области: пещера, комната убежища и коридор. Ваши метки комнаты должны выглядеть так как показано на рис. 3а.
Нам нужно прикрепить каждую метку комнаты к смежной метке. Включите Ортогональный вид нажав "0" (нуль). Нажмите 'T' чтобы включить Вид сверху (прежде чем переключать виды не забывайте выделять все элементы конструкции —прим.пер). Ортогональный вид позволяет представить чертёж более наглядно, без нагромождения элементов, что позволяет проще достичь большей точности. Обратите внимание, что на рис. 3б метки комнат выровнены друг относительно друга не точно.
Идеально выровненные грани комнат очень важны. Иначе, в конечном итоге, у вас получатся мало перекрывающиеся области и/или промежутки, в которых игра корректно не отрисуется. Это известная трудность при отладке, но, обычно этого можно избежать, привыкнув применять выравнивание.
Таким образом убедитесь, что при масштабировании каждой метки
комнаты, все размеры каждой области подогнаны и все грани ваших меток
комнаты скреплены вместе. Убедитесь, что выравнивание по сетке включено
и попробуйте поработать с громадным шагом, чтобы
избежать возможности появления ошибок. Когда закончите, ваши три метки
комнат должны выглядеть как на рис. 3в.
Шаг 2. Создание двух Тамбуров.
Видеокурс на YouTube. Оптимизация. Часть 2.
Теперь, когда метки комнаты установлены, нам нужно создать между каждой меткой комнаты тамбуры так, чтобы отрисовщик понимал как соединены комнаты друг с другом.
Запомните, тамбуры позволяют нам видеть всё что внутри метки комнаты. Когда игрок видит тамбур, игра сообщит отрисовщику обо всём, что внутри присоединённой метки комнаты.
До того как вы создадите тамбур, нужно сделать две вещи.
Итак, маневрируя камерой переместитесь вплотную к границе между метками комнаты пещеры и убежища. Здесь установлена моя камера, выделенная метка комнаты облегает область пещеры.
Пока выбрана метка комнаты, включите Тамбурный режим, нажав пиктограмму.
Теперь, когда Тамбурный режим включен и выбрана метка комнаты мы можем создать наш тамбур. Нажмите на пиктограмму рисования тамбура.
Чтобы задать размеры по XY, перемещайте мышь с зажатой левой кнопкой, как при создании меток комнаты, возле границы двух меток комнаты. Потом, перемещая мышь, задайте размер по Z. Так вы получите требуемую высоту. Ещё раз щёлкните левой кнопкой, вы получите Тамбур такой же как на рис. 4а.
Обратите внимание на белый указатель от тамбура к выделенной метке комнаты. Это означает, что тамбур был прикреплён к этой метке комнаты.
Попробуйте сделать ваши тамбуры как можно меньше, так чтобы они облегали видимую область (как дверной проём). Больший чем необходимо тамбур делает возможным вывод содержимого соседних меток комнаты.
Более того, не делайте тамбуры слишком маленькими, обманутый таким образом отрисовщик.не будет рисовать содержимое комнаты, которое игрок ожидает увидеть. Помните, что лучше рисовать немного больший чем необходимо размер, чтобы игровой мир за пределами поля зрения отрисовывался правильно.
Первоначально Тамбур можно сделать грубо, чтобы потом изменить размер покрытия видимой игроком области.
Я маневрирую своей камерой внутри уровня и масштабирую свои тамбуры так, чтобы их грани простирались до границ видимой области. Этот тамбур чрезвычайно велик из-за того, что он находится на входе в пещеру. Большинство ваших тамбуров будут в дверных проёмах и поэтому гораздо меньшими. Измените размер так, чтобы она выглядел правильным, так как на рис. 4б.
Если ваш тамбур повёрнут неверно и не сливается с меткой комнаты, просто измените его положение, дважды щёлкнув по нему. В нашем случае, тамбур должен быть повёрнут по оси Z на -90.
Прежде чем перейти к следующему шагу, выберите тамбур и дублируйте его. Переместите новый тамбур в сторону от основного чертежа как на рис. 4в.
Если вы не можете выбрать тамбур, просто перейдите в тамбурный режим, выделите метку комнаты, нажмите "CTRL+P" илии выделите тамбур. В тамбурном режиме вы можете выбирать только тамбуры. Это оказывается полезно при нескольких взаимно перекрывающихся видах.
Шаг 3: Прикрепление Тамбуров к Меткам комнаты.
Теперь у нас есть два тамбура: один готовый, другой в стороне от уровня. Нам нужно прикрепить эти тамбуры к меткам комнаты. Во-первых, давайте поставим тамбур в стороне на место.
Переместите его к дверному проёму между входной комнатой и коридором, как показано на рис. 5а. Вам нужно повернуть его. При повороте вы можете включить выравнивание или можете сделать свободный поворот и изменить свойства поворота вручную. Но помните, тамбуры нужно притирать к меткам комнаты. Ваши тамбуры поворачиваются по Z на 0, 90, -90, -180 или 180.
Вы должны были заметить, что у моего тамбура есть белый указатель на метку комнаты пещеры. Пусть вас это сейчас не беспокоит. Мы рассмотрим это немного позже. Сейчас, нам нужно масштабировать наш тамбур в размер дверного проёма. Масштабируйте его, если вы всё ещё не сделали этого. Сравните ваш тамбур и тот что на рис. 5б. (Я скрыл дверь убежища так чтобы вам было легче увидеть размеры тамбура).
Теперь у нас есть два установленных на свои места тамбура. Нам нужно прикрепить их к соответствующим меткам комнаты. Давайте начнём с простого перемещения и поворота тамбура. Обратите внимание, что у тамбура появился белый указатель на метку комнаты пещеры. Это значит, что он прикрепился к метке комнаты. Связь через наш дубликат — это не то что нужно
Нам следует разорвать эту связь. Для этого войдите в тамбурный
режим и выберите нужный тамбур. Выбрав тамбур, нам нужно
отключить тамбурный режим
, выбрать метку комнаты пещеры по
CTRL+Левый-щелчок. Таким образом, у вас будет выделен как тамбур, так и
метка комнаты пещеры, как это показано на Рис. 5в.
Чтобы разорвать связь, щёлкните на пиктограмме Break Portal Link
(Оборвать связь с тамбуром) . Белая линия должна исчезнуть.
Теперь нам нужно ещё раз выбрать тамбур вместе с коридорной
меткой комнаты. Запомните последовательность действий: вход в тамбурный
режим , выбор тамбура, выход из тамбурного режима
, выбор метки комнаты прохода
CTRL+Левый-щелчок. Теперь у вас должны быть выбраны тамбур и коридорная
метка комнаты, как на рис. 5г.
Чтобы создать связь, просто нажмите на пиктограмму связь с
тамбуром . Теперь должна появиться белая линия от тамбура к
коридорной метке комнаты, как на рис. 6а ниже.
Повторите процесс и свяжите тамбур и убежищную метку комнаты. По окончании всё должно выглядеть как на Рис. 6б.
Заметьте, что когда вы выбрали тамбур и метку комнаты и когда связали их, тамбур и метка комнаты всё ещё будут оставаться выделенными. Чтобы ускорить процесс связывания тамбуров и других комнат, просто щёлкайте левой клавишей мыши по выбранной коридорной метке комнаты с зажатой CTRL. Это отменит выбор метки комнаты. Теперь CTRL+Левый-щелчок на убежищной метке комнаты. Всё что нам нужно, это создать связь и нажать на связь с тамбуром.
Свяжите тамбур около пещеры и две смежные метки комнаты (метки комнаты убежища и пещеры). Когда закончите, у вас будут два тамбура и три связанные метки комнаты, как на рис. 6в. Также вы можете получить более понятную картину соединений комнат/тамбуров используя "SHIFT+C", что скроет все помехи и отобразит линии связи при выборе всех тамбуров (фильтрация). Вы можете увидеть пример применения этого приёма на 6г.
Если вы пройдёте свой уровень в игре, вы заметите, что когда вы получили метку комнаты проход и открыли дверь в большую, двухуровневую комнату, то вы её не увидите. Всё, что вы увидите, это пустота.
Любая область за пределами вставленной Метки комнаты называется "Unbounded Space" ("Безграничное Пространство"). Безграничное пространство понимается как особенная Метка комнаты. Для перехода между этой и другими Метками комнаты так же необходимы Тамбуры.
Для этого, выберите тамбур, дублируйте его и перетащите на
дверной проём. Войдите в Тамбурный режим , выберите тамбур рядом с коридорной меткой комнаты (или
вы можете для тренировки создать один с нуля), дублируйте по
CTRL-D. Переместите его вниз, в дверной проём. Несмотря на то, что
тамбур уже связан (белая линия) с меткой комнаты, мы должны
подстраховаться и связать его ещё раз.
Связанный с меткой комнаты тамбур прикрепится к тамбуру с внешней стороны метки комнаты, впритык и без зазоров.
Так должен выглядеть ваш тамбур когда всё будет готово.
Войдите в игру и пройдите уровень. Теперь, прежде чем войти в дверной проём, вы должны увидеть большую двухуровневую комнату. В процессе изучения, медленно пройдите рядом с тамбурами, и посмотрите сквозь них под как можно более широкими углами.
Если во время путешествия по уровню вы заметили выпячивания или он внезапно исчезает, то, вероятно, ваш тамбур плохо подогнан к меткам комнаты или ваш тамбур недостаточно велик. Просто выберите нарушающий нормальную работу тамбур и ещё раз прикрепите его к соответствующим меткам комнаты. Проследите, что всё сделано правильно.
Как только ваш уровень был оптимизирован для достижения максимальной производительности, вы готовы подключить его в игровое пространство и открыть к нему доступ. Чтобы узнать больше, взгляните на следующую часть руководства.
Общие советы по Оптимизации.
Изучение работы с тамбурами и метками комнаты отнимает некоторое время и, возможно, внушает неуверенность в собственных силах. Неоднократное повторение процесса создания меток комнаты и тамбуров, связывания их, сделает вас лучше и быстрее. Я настоятельно советую повторить эту часть руководства несколько раз, пока вы не сможете сделать всё без подсказок. Относитесь серьёзно к тамбурированию уровня. Возможно вам покажется, что эта работа утомительна, но, тот кто проходит ваш уровень высоко оценит ваше внимание к улучшению производительности и отблагодарит вас за это, особенно если используются очень слабые системы.
Для более глубокого изучения создания примитивов тамбуров, меток комнаты, переключателей и т.д., щёлкните здесь.
Изучите систему поглощающей отбраковки здесь.
Ниже приведено несколько советов по оптимизации уровня с тамбурами и метками комнаты.
- Я создаю одну метку комнаты, потом дублирую её столько раз сколько необходимо для покрытия всего уровня.
- Потом я перехожу в ортогональный вид ('0' — нуль), перехожу вниз и вверх('T') и выравниваю все мои метки комнаты.
- За тем я создаю тамбур. Дальше я дублирую тамбур и обрываю связь. Это даёт мне тамбур без связей, который я могу дублировать и перемещать в другие места уровня.
- Когда у меня есть все готовые тамбуры и метки комнаты я нажимаю SHIFT-C, чтобы скрыть помехи. В окне отрисовки останутся только метки комнаты и тамбуры. Я систематически обхожу все связи всех моих тамбуров и соответствующих меток комнаты. По завершении, я нажимаю SHIFT-C ещё раз и открываю все помехи. Теперь мой уровень оптимизирован.
- Я бегаю по уровеню и замечаю где что выпирает или пропадает, если это имеет место. Возвращаюсь обратно в GECK и быстро переподключаю нарушающие нормальную работу тамбуры к соответствующим меткам комнаты.
При оптимизации некоторых мест бывают исключения из правил. Хорошо если вам не нужно заниматься оптимизацией производительности. В этом случае, вы можете пропустить это место и двигаться к следующей части руководства. Однако, если вы планируете выпустить модификацию для сообщества, мы советуем произвести как можно более тщательную оптимизацию. Это гарантирует, что обладатели низкопроизводительных машин спокойно насладятся вашим модом без критического падения производительности.
Помните, что улучшение вашего уровне это не просто помощь пользователям маломощных машин. Помимо достижения высокой частоты кадров, хорошая оптимизация поможет преодолеть испытание временем. Текстуры высокого разрешения, добавляемые впоследствии модами, и много других популярных типов модификаций, могут подвергнуть экстремальной нагрузке даже самые мощные машины.