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

Навигация

Материал из Creation Kit Русский
Версия от 21:47, 4 января 2014; Admin (обсуждение | вклад) (Шаг 1: Создаем маркеры комнат)

Перейти к: навигация, поиск

Symbol error.png Статья не закончена!

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


Обзор

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

Вы узнаете:

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

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

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

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

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

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

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

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

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

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

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

В нашей локации 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, в зависимости от того как вы их создавали. Вы можете использовать неравномерное масштабирование (о котором говорилось в учебнике ранее) чтобы свести к минимуму эти ошибки. Strive to line Rooms up at the most narrow possible points, such as doorways. Дополнительную информацию о работе с примитивами можно найти здесь. Creation Kit сам попытается исправить незначительные ошибки, когда мы свяжем наши комнаты вместе, но это позже, а сейчас лучше стремиться к хорошей привязке, как на Рис. 7.5e.

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

Achtung.png Достаточно важным аспектом являются идеально выровненные края маркера комнаты, или вы можете заканчивать их небольшим пересечением с соседней комнатой и/или зазорами gaps in which the game will not render correctly. These are notoriously difficult to find and debug, but can usually be avoided by good snapping habits at this stage.
Protip.jpg При создании маркера комнаты (или другого примитива) с выделенными объектами, только что созданный примитив будет совпадать с позицией, углом поворота, и границами области выделения. Это очень полезно для быстрого создания точных маркеров комнаты, как вы могли видеть выше. Вы так же можете создать "old-fashioned" primitives: simply click the IconRoom.png button with nothing selected, then click where you'd like to place your new primitive, then scale as needed.

Step 2: Thinking With Portals

We'll create portals everywhere that a) two Room Markers meet and b) the player should be able to see from one room to the next. You can think of them as a sort of user-defined window. Try creating a portal now:

  1. Select the Room Marker encompassing the first room. Be sure nothing else is selected.
  2. Position the camera within the room.
  3. Look through the doorway, similar to a first-person view, as in Fig 7.6a.
  4. Enter "Portal Mode" by pressing Файл:Jb MainPortalMode.jpg or the Ctrl+P hotkey.
    1. NOTE: While in portal mode, only portals can be selected.
  5. Click the "Create Portal" button in the Main Toolbar: Файл:Jb MainPortal.jpg
  6. Click on the visible blue surface within the doorway
  7. A dark shape, flush with the edge of your room, will have been created. This is your portal.
    1. Sometimes the portal will not be created on the correct edge of the room. If this happens, press shift+F to focus the camera on the newly-created portal, then rotate/position it approximately where the two rooms meet. It will be snapped precisely when we join it with the second room, which we'll do shortly.
  8. Use the scale gizmo to adjust the shape of the portal. It should be as small as possible while completely filling the visible space at the intersection. (Fig 7.6b)

Your portal is positioned correctly, but it's only linked to one of the two rooms. You'll need to link it to the second room before it will work properly.

  1. Keeping the portal selected, exit Portal Mode. (Файл:Jb MainPortalMode.jpg or Ctrl+P)
  2. Ctrl+Click to select the second Room Marker.
  3. You should now have two objects selected: the portal and the unlinked second room.
  4. Click the "Link Portal To Room" button: Файл:Jb MainPortalLink.jpg

Note the white arrow now drawn from the portal to the center of the newly-linked room. (Fig 7.6c) This visual representation is a good way to spot-check connections in a space. You may also notice a slight change in the scale/position of Room Marker #2. The Linking process will ensure the Room edges and Portal are co-planar, which sometimes corrects small errors. It's still best to try and make sure your rooms are properly snapped ahead of time, however. These auto-adjustments can become problematic when you're working with a room with multiple portals; a correction on one side of the room may create a gap on the other - so it's best not to rely upon them entirely.

Achtung.png If you're having trouble selecting a portal, simply go into Portal Mode by selecting a Room Marker and pressing "CTRL+P" or Файл:Jb MainPortalMode.jpg, and select your portal. When in Portal Mode, you can only select portals. This comes in handy when you have a lot of references blocking your view.

Keep this in mind if you ever find yourself unable to select anything in the editor - you may have accidentally entered portal mode!

Step 3: Finishing the Optimization Pass

With Room Markers in place, continue adding portals throughout LokirsTomb until every room is linked. This layout is relatively straightforward, and most problems can be diagnosed by simply running the space in-game and looking for areas where some or all of the objects you'd expect to see pop out of existence, usually because of a gap or overlap where two Room Markers meet.

InDepth.jpg Some tips for advanced optimization:
  • Multiple rooms can be joined and treated as a single Room Marker. This allows coverage of irregular room shapes, and is especially useful for areas with several off-grid transitions. To join rooms, select each Room Marker and press the "Join Rooms" button: Файл:Jb RoomMarkerLink.jpg Joined rooms are indicated by a double-ended blue arrow.
  • It's possible to get a clean, diagram-style view of your connections. With Portals and Rooms hidden from the View menu, select all objects and double-tap "1" to hide. Then check the View menu to show Portals/Rooms, enter Portal Mode, and select all portals. (Fig 7.7)
  • Once connected to Room Markers, a portal cannot be moved. You can break this link with the "Break Portal Link" button: Файл:Jb MainPortalBreakLink.jpg
  • Each reference can only belong to a single Room Marker - by default, the one in which its pivot point is contained. If a reference needs to be visible in multiple Rooms, assign it to the "NONE" multibound in its reference properties.
  • Skyboxes can be used to set up a Skybox diorama to make your spaces with sky-holes more believable.

Once your level is optimized for maximum performance, you're ready to move on to lighting and FX!

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