Учебник Bethesda Оптимизация — различия между версиями

Навигация

Материал из Creation Kit Русский
Перейти к: навигация, поиск
м (Сборка уровня с учетом руководящих принципов по оптимизации)
м (Что есть оптимизация?)
 
(не показано 10 промежуточных версий этого же участника)
Строка 1: Строка 1:
[[Файл:Symbol_error.png]] '''Статья не закончена!'''
 
[[Category:Незаконченная статья]]
 
 
 
[[Category:Учебники]]
 
[[Category:Учебники]]
 
[[Category:New Users]]
 
[[Category:New Users]]
Строка 25: Строка 22:
 
Зачастую [[Глоссарий#Rendering|визуализируемые]] в играх объекты, продолжают тратить драгоценную производительность, когда они не нужны. Например, если игрок находится внутри комнаты, у которой со всех сторон стены, он не увидит что-либо за стенами. Нет необходимости в визуализации объектов, находящимися за ними. Однако, по-умолчанию эти объекты могут быть визуализированы. Смотри ''Рис. 7.1'' для примера. Хоть и выбраковка таких объектов может казаться очевидной для нас, иногда игровым движкам приходится принимать нелегкое решение о том, что должно быть прорисовано.
 
Зачастую [[Глоссарий#Rendering|визуализируемые]] в играх объекты, продолжают тратить драгоценную производительность, когда они не нужны. Например, если игрок находится внутри комнаты, у которой со всех сторон стены, он не увидит что-либо за стенами. Нет необходимости в визуализации объектов, находящимися за ними. Однако, по-умолчанию эти объекты могут быть визуализированы. Смотри ''Рис. 7.1'' для примера. Хоть и выбраковка таких объектов может казаться очевидной для нас, иногда игровым движкам приходится принимать нелегкое решение о том, что должно быть прорисовано.
  
Для того чтобы помочь игре узнать о том, что нам не нужно визуализировать объекты вне стен, у нас в распоряжении есть специальные инструменты, доступные для оптимизации комнаты. Благодаря этим инструментам игра может принимать лучшие решения о том, что визуализировать, а что [[Глоссарий#Culling|выбраковывать]]. Доступные инструменты - это '''Порталы''' (Portals), '''маркеры комнат''' (Room Markers), [[Multibounds]], и [[Occlusion Planes]].
+
Для того чтобы помочь игре узнать о том, что нам не нужно визуализировать объекты вне стен, у нас в распоряжении есть специальные инструменты, доступные для оптимизации комнаты. Благодаря этим инструментам игра может принимать лучшие решения о том, что визуализировать, а что [[Глоссарий#Culling|выбраковывать]]. Доступные инструменты - это '''порталы''' (Portals), '''маркеры комнат''' (Room Markers), [[Multibound]], и [[Occlusion Plane]].
  
 
Не всегда необходимо делать ручную оптимизацию - некоторые пространства очень простые и потребляют не много ресурсов. Запомните, что игровое пространство может хорошо работать на вашей машине, и при этом работать очень плохо на другой машине, с другой конфигурацией железа. Этот учебник постарается ознакомить вас и дать несколько практических примеров в том, как сделать, чтобы ваш мод хорошо работал на максимально возможном числе машин.
 
Не всегда необходимо делать ручную оптимизацию - некоторые пространства очень простые и потребляют не много ресурсов. Запомните, что игровое пространство может хорошо работать на вашей машине, и при этом работать очень плохо на другой машине, с другой конфигурацией железа. Этот учебник постарается ознакомить вас и дать несколько практических примеров в том, как сделать, чтобы ваш мод хорошо работал на максимально возможном числе машин.
Строка 50: Строка 47:
  
 
* '''Проверяйте количество источников света'''
 
* '''Проверяйте количество источников света'''
Как и от объектов, от числа источников света в пространстве зависит производительность игры. Постарайтесь не освещать объект более чем двумя источками света. Вы можете увидеть сколько ссылок освещает свет используя горячую клавишу "'''L'''". Вы так же можете смотреть на проблемы с освещением нажав правую кнопку мышки в окне render window и выбрав пункт "'''Render Window Properties'''". Перейдите на вкладку "'''Shaders'''" tab and check the box that says "'''# of lights'''". ''Fig 7.3'' shows an example space that has too many lights. The colors represent the number of lights hitting a each reference. Green represents an unlit piece and red means there are too many lights on a piece and performance issues are likely. It is good practice to make sure nothing shows up red when lighting your dungeon.  
+
Как и от объектов, от числа источников света в пространстве зависит производительность игры. Постарайтесь не освещать объект более чем двумя источниками света. Вы можете увидеть сколько ссылок освещает свет используя горячую клавишу "'''L'''". Вы так же можете смотреть на проблемы с освещением нажав правую кнопку мышки в окне Render Window и выбрав пункт "'''Render Window Properties'''". Перейдите на вкладку "'''Shaders'''" и поставьте галочку у пункта, где написано "'''# of lights'''". ''Рис. 7.3'' показывает пример игрового пространства со слишком большим количеством источников света. Различные цвета показывают собой число источников света, освящающих каждую ссылку. Зеленый представляет неосвещенный участок и красный значит очень большое количество света на этом участке, и возможные проблемы с производительностью. Хорошо взять за правило делать проверку, чтобы ничего не показывалось красным цветом при настройке освещения в подземелье.  
  
* '''Observe Framerate w/FRAPS'''
+
* '''Наблюдение за частотой кадров в секунду используя FRAPS'''
FRAPS is a piece of software that allows you to capture video and screenshots in game, but it also shows the framerate as it is running. It is a good idea to run through your space with FRAPS running to check your framerate while trying to look in all directions. A good rule of thumb is to try and stay consistently above 30 frames per second. If your framerate dips at any point, there could be an object count issue in your field of view. Download FRAPS [http://www.fraps.com here].
+
FRAPS это программное обеспечение для захвата видео и скришотов в играх, позволяющее так же отображать частоту кадров в секунду (FPS), когда запущено. Хорошо бы исользовать FRAPS во время бега по подземелью для проверки частоты кадров в секунду, при этом для проверки нужно стараться смотреть во всех направлениях. Хорошим правилом является постоянная частота в 30 кадров в секунду. Если в какой-то точке FPS понижается, то возможно в поле зрения игрока есть проблема с количеством объектов. Скачать FRAPS можно [http://www.fraps.com здесь].
  
 
<gallery widths="200px" heights="120px" perrow="3">
 
<gallery widths="200px" heights="120px" perrow="3">
Строка 77: Строка 74:
 
Обратите внимание что игрок не может видеть никакую часть портала "b". Это обозначает что любая комната, присоединенная к этому порталу (ни одна из показанных) будет выбраковываться.
 
Обратите внимание что игрок не может видеть никакую часть портала "b". Это обозначает что любая комната, присоединенная к этому порталу (ни одна из показанных) будет выбраковываться.
  
=Optimization Workflow=
+
=Процесс оптимизации=
  
Manual optimization with Room Markers and Portals can be difficult thing to understand. Let's go through the process with Lokir's Tomb to see it in action.
+
Ручная оптимизация с использованием маркеров комнат и порталов по началу может быть сложной для понимания. Но давайте пройдем вместе через этот процесс на примере нашего подземелья Lokir's Tomb, чтобы понять как это делается.
  
==Step 1: Creating Room Markers==
+
==Шаг 1: Создаем маркеры комнат==
  
Before we begin, there are a couple quick set-up steps:
+
Перед тем, как мы начнем, есть несколько быстрых шагов по настройке:
  
# Break the long sight-line as mentioned above if you haven't already (''Fig 7.2'')
+
# Разбейте длинные линии обзора как говорилось выше, если ещё этого не сделали (''Рис. 7.2'')
# Toggle Snap-to-Grid On (''Q hotkey or [[File:Buttongridsnapping.jpg]])
+
# Включите привязку к сетке Snap-to-Grid (''клавиша Q или кнопка [[File:IconSnaptoGrid.png]])
# On the main toolbar, click: '''View > Show/Hide Window'''
+
# На главной панели инструментов нажмите: '''View > Show/Hide Window'''
# Check "'''Portals and Rooms'''".  ''NOTE: "Markers" must be checked as well''
+
# Проверьте на активность "'''Portals and Rooms'''".  ''Примечание: "Markers" так же должны быть включены''
  
Lokirs Tomb is basically made up of five distinct areas. We'll use a room marker to define each of these areas in a way the Creation Engine can easily understand. We'll begin with the first room, and then repeat to create the rest.
+
Lokirs Tomb в основном состоит из пяти четко разделенных зон. Мы будем использовать маркер комнат для определения каждой из этих зон, чтобы Creation Engine мог проще это понять. Начнем с первой комнаты, а затем продолжим тем же способом делать и остальные.
  
# Ctrl+click to select wall pieces from each side of the room
+
# Ctrl+щелчок для выбора кусочков стен с каждой стороны комнаты
# Click the "''Create Room''" button on the Main Toolbar: [[File:Toolbar_Button_Cubic_Room.jpg]]
+
# Нажмите кнопку "''Create Room''" на главной панели инструментов: [[File:IconRoom.png]]
# Note that our new Room Marker encompasses all the objects in our selection.
+
# Обратите внимание, что наш маркер комнаты охватывает все объекты внутри нашего выделения.
# Manually Scale your new Room Marker to include any stray pieces, as in ''Fig 7.5b''.
+
# Вручную измените масштаб маркера комнаты, чтобы он включал и некоторые блуждающие кусочки, как на ''Рис. 7.5b''.
# Repeat this process to create a total of five rooms, as seen in ''Fig 7.5c-e''.
+
# Повторите этот процесс для создания всех пяти комнат, как показано на ''Рис. 7.5c-e''.
## Optionally, you can duplicate and scale your existing Room Marker by hand. It's up to you, as long as you achieve the same result.
+
## По желанию, вы можете дублировать существующий маркер комнаты и изменять его масштаб вручную. Выбор зависит от вас, но результат должен быть схожий.
  
{{WarningBox|It's possible to go overboard here. Each Portal the camera frustum hits involves a calculation cost, meaning that too many Rooms/Portals can actually cause a space to run slower than without them. It's a good rule of thumb to avoid situations where the line-of-sight will penetrate more than 3-5 portals.}}
+
{{WarningBox|Здесь можно немного выходить за границы. Каждый портал, попадающий в поле зрения камеры игрока включает в себя объем ресурсов для визуализации, это означает, что слишком много комнат/порталов может вызвать более медленную работу игрового пространства, чем без их использования. Хорошим правилом является избежание ситуаций, когда в линию зрения может попасть более 3-5 порталов.}}
  
Some of your rooms may overlap or be separated by small gaps, as in ''Fig 7.5d'', depending on how you created them. You can use non-uniform scaling (covered in an [[Bethesda_Tutorial_Traps_and_Prefabs#Triggering_an_Ambush|earlier tutorial]]) to minimize these errors. Strive to line Rooms up at the most narrow possible points, such as doorways. Further information on working with primitives can be found [[Создание примитивов|here]]. The Creation Kit will attempt to correct minor errors when we link these rooms together later, but it's best to strive for good snapping now, as in ''Fig 7.5e''.
+
Некоторые из ваших комнат могут пересекаться или быть разделены небольшими зазорами, как на ''Рис. 7.5d'', в зависимости от того как вы их создавали. Вы можете использовать неравномерное масштабирование (о котором говорилось в [[Учебник Bethesda Ловушки и Сложные Составные Объекты#Запускаем засаду|учебнике ранее]]) чтобы свести к минимуму эти ошибки. Старайтесь выравнивать комнаты по наиболее узким точкам, таким, как дверные проемы. Дополнительную информацию о работе с примитивами можно найти [[Создание примитивов|здесь]]. Creation Kit сам попытается исправить незначительные ошибки, когда мы свяжем наши комнаты вместе, но это позже, а сейчас лучше стремиться к хорошей привязке, как на ''Рис. 7.5e''.
  
Try running the game now. You'll notice that things don't look right; each room renders on its own while the player is within. You'll see gaps to the void anywhere another Room Marker begins. We'll install portals in the next step, which will allow the Creation Engine to render multiple Rooms at once.
+
Теперь попробуйте запустить игру. Вы заметите, что не все выглядят правильно; каждая комната визуализируется сама по себе, когда игрок зайдет в неё. В любом месте, где начинается другой маркер комнаты, вы увидите пробелы, ведущие в пустоту. В следующем шаге мы установим порталы, которые позволяют Creation Engine визуализировать несколько комнат за раз.
  
{{WarningBox|Perfectly aligned room edges are important, or you can end up with very small overlapping areas and/or 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.}}
+
{{WarningBox|Достаточно важным аспектом являются идеально выровненные края маркера комнаты, или вы получите в итоге небольшие пересечения с соседней комнатой и/или зазоры, из-за которых может происходить некорректная визуализация. А такие ошибки, как известно, трудно найти и отладить, но обычно их можно избежать, если у вас будет привычка хорошо выравнивать их на данном этапе.}}
  
{{ProTip|When creating a Room Marker (or other primitive) with objects selected, the newly-created primitive will match the position, rotation, and bounds of the selection. This can be extremely useful for quickly creating precise Room Markers, as seen above. You can also create "old-fashioned" primitives: simply click the [[File:Toolbar_Button_Cubic_Room.jpg]] button with nothing selected, then click where you'd like to place your new primitive, then scale as needed.}}
+
{{ProTip|При создании маркера комнаты (или другого примитива) с выделенными объектами, только что созданный примитив будет совпадать с позицией, углом поворота, и границами области выделения. Это очень полезно для быстрого создания точных маркеров комнаты, как вы могли видеть выше. Вы так же можете создать "старомодные" примитивы: просто нажмите на кнопку [[File:IconRoom.png]] без выделенных объектов, затем щелкните там, где хотите разместить данный примитив, затем измените масштаб на нужный.}}
  
 
<gallery perrow=5>
 
<gallery perrow=5>
Image:InitialRoomMarker.jpg|'''Fig 7.5a''': Room marker created by selecting walls at each side of the entry room.
+
Image:InitialRoomMarker.jpg|'''Рис. 7.5a''': Маркер комнаты, созданный выделением стен с каждой стороны начальной комнаты.
Image:InitialRoomMarkerResized.jpg|'''Fig 7.5b''': The room marker re-sized to contain the entire entry room.
+
Image:InitialRoomMarkerResized.jpg|'''Рис. 7.5b''': Маркер комнаты с измененным масштабом для охвата всей начальной комнаты.
Image:LokirsTombRoomMarkers.jpg|'''Fig 7.5c''': Room markers containing each room of the dungeon.
+
Image:LokirsTombRoomMarkers.jpg|'''Рис. 7.5c''': Маркеры комнат, содержащие каждую комнату подземелья.
Image:RoomMarkerGap.jpg|'''Fig 7.5d''': A gap between two room markers in orthographic top down view.
+
Image:RoomMarkerGap.jpg|'''Рис. 7.5d''': Зазор между двумя маркерами комнат в ортографической проекции сверху-вниз.
Image:RoomMarkersNoGaps.jpg|'''Fig 7.5e''': All room markers lined up perfectly in orthographic top down view.
+
Image:RoomMarkersNoGaps.jpg|'''Рис. 7.5e''': Все маркеры комнат с идеальным выравниванием в ортографической проекции сверху-вниз.
 
</gallery>
 
</gallery>
  
==Step 2: Thinking With Portals==
+
==Шаг 2: Обдумываем порталы==
  
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:
+
Мы создадим порталы везде, где a) встречаются два маркера комнаты и b) игрок должен мочь видеть из одной комнаты другую. Вы можете рассматривать их как своего рода окно, определенное пользователем. Теперь попробуем создать портал:
  
# Select the Room Marker encompassing the first room. Be sure nothing else is selected.
+
# Выберите маркер комнаты, охватывающий первую комнату. Убедитесь что больше ничего не выбрано.
# Position the camera within the room.
+
# Разместите камеру внутри комнаты.
# Look through the doorway, similar to a first-person view, as in ''Fig 7.6a''.
+
# Смотрите через дверной проем, аналогично виду от первого лица, как на ''Рис. 7.6a''.
# Enter "'''Portal Mode'''" by pressing [[File:Jb_MainPortalMode.jpg]] or the '''Ctrl+P''' hotkey.  
+
# Войдите в режим "'''Portal Mode'''" нажав [[File:IconPortalMode.png]] или сочетание клавиш '''Ctrl+P'''.  
## ''NOTE: While in portal mode, only portals can be selected.''
+
## ''Примечание: При нахождении в режиме портала, можно выделять только порталы.''
# Click the "'''Create Portal'''" button in the Main Toolbar: [[File:Jb_MainPortal.jpg]]
+
# Нажмите кнопку "'''Create Portal'''" на главной панели инструментов: [[File:IconPortalCreate.png]]
# Click on the visible blue surface within the doorway
+
# Щелкните по видимой голубой поверхности внутри дверного проема
# A dark shape, flush with the edge of your room, will have been created. This is your portal.
+
# Будет создана темная фигура, вровень с границей вашей комнаты. Это и есть портал.
## ''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.''
+
## ''Иногда портал не создается на корректной грани комнаты. Если это случилось, нажмите Shift+F для фокусировки камеры на только что созданном портале, затем поверните/измените его позицию на приблизительно ту, где должны соединяться две комнаты. Он будет привязан именно тогда, когда мы присоединим к нему вторую комнату, которую сделаем в ближайшее время.''
# 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'')
+
# Используйте помощник масштабирования для изменения формы портала. Он должна быть как можно меньше, пока полностью не заполнит видимое пространство на пересечении комнат. (''Рис. 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.  
+
Портал расположен правильно, но привязан только к одной из двух комнат. Чтобы это начало работать правильно, вам нужно привязать ко второй комнате.  
  
# '''Keeping the portal selected''', exit Portal Mode. (''[[File:Jb_MainPortalMode.jpg]] or '''Ctrl+P''''')
+
# '''Сохраняя портал выделенным''', выйдите из режима Portal Mode. (''[[File:IconPortalMode.png]] или нажмите '''Ctrl+P''''')
# Ctrl+Click to '''select the second Room Marker'''.
+
# Ctrl+щелчок по '''второму маркеру комнаты'''.
# You should now have '''two objects selected''': the portal and the unlinked second room.
+
# Теперь у вас должны быть '''выделено два объекта''': портал и вторая комната без привязки.
# Click the "'''Link Portal To Room'''" button: [[File:Jb_MainPortalLink.jpg]]
+
# Нажмите кнопку "'''Link Portal To Room'''": [[File:IconPortalLink.png]]
  
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.
+
Вы увидите появившуюся белую стрелку от портала к центру только что привязанной комнаты. (''Рис. 7.6c'') Такое визуальное представление это хороший способ для выборочной проверки соединений между комнатами в пространстве. Вы также можете заметить небольшое изменение в масштабе/позиции маркера комнаты #2. Процесс связывания обеспечивает то, что грань комнаты и портал буду компланарны (в параллельных плоскостях), что иногда исправляет маленькие ошибки. Однако лучше всего попробовать заранее убедиться в том, что комнаты правильно привязаны. Эти автоматические корректировки могут стать проблематичными, когда работаете с комнатой, у которой несколько порталов; корректировка с одной стороны комнаты может создать зазор с другой - так что лучше полностью не полагаться на это.
  
{{WarningBox|If you're having trouble selecting a portal, simply go into Portal Mode by selecting a Room Marker and pressing "CTRL+P" or [[File: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.   
+
{{WarningBox|Если у вас возникли проблемы с выделением портала, то перейдите в режим Portal Mode, выбрав маркер комнаты и нажав "CTRL+P" или [[File:IconPortalMode.png]], и выделите ваш портал. Когда вы в режиме Portal Mode, вы можете выделять только порталы. Это полезно, когда у вас много предметов, перекрывающих вид.   
  
Keep this in mind if you ever find yourself unable to select anything in the editor - you may have accidentally entered portal mode!}}
+
Помните об этом, если вы когда-нибудь окажетесь не в состоянии выбрать что-либо в редакторе - возможно вы случайно вошли в режим Portal Mode!}}
  
 
<gallery widths="280px" heights="180px" perrow="3">
 
<gallery widths="280px" heights="180px" perrow="3">
Image:RoomMarkerBorder.jpg|'''Fig 7.6a''': The border between two room markers where we want to create our portal.
+
Image:RoomMarkerBorder.jpg|'''Рис. 7.6a''': Граница между двумя маркерами комнат, где мы хотим создать наш портал.
Image:SizedPortal.jpg|'''Fig 7.6b''': The portal placed at the border and sized to cover the entire connecting area.
+
Image:SizedPortal.jpg|'''Рис. 7.6b''': Портал, размещенный на грани, с размером, покрывающим всю область соединения.
Image:ConnectedPortal.jpg|'''Fig 7.6c''': Two rooms linked to a co-planar portal. Note the white arrows.
+
Image:ConnectedPortal.jpg|'''Рис. 7.6c''': Две комнаты, соединенные с компланарным порталом. Обратите внимание на белые стрелки.
 
</gallery>
 
</gallery>
  
==Step 3: Finishing the Optimization Pass==
+
==Шаг 3: Завершение процесса оптимизации==
  
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.
+
Теперь, когда маркеры комнат размещены, продолжайте добавлять маркеры по всей локации LokirsTomb пока не соедините все комнаты. Этот макет уровня относительно прост, и большинство проблем можно обнаружить, просто запустив это пространство в игре, и поискать те зоны, где все или некоторые из объектов, которые вы ожидали увидеть не появились, обычно из-за зазора или перекрытия на месте соединения двух маркеров комнат.
  
{{InDepth|Some tips for advanced optimization:
+
{{InDepth|Некоторые советы для продвинутой оптимизации:
* 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: [[File:Jb_RoomMarkerLink.jpg]]  Joined rooms are indicated by a double-ended blue arrow.
+
* Несколько комнат могут быть объединены и рассматриваться как одинарный маркер комнаты. Это позволяет охватить комнату необычной формы, и особенно полезно для зон с несколькими переходами, построенными без сетки. Для объединения комнат, выделите каждый маркер комнаты и нажмите кнопку "'''Join Rooms'''": [[File:IconJoinRooms.png]]  Объединенные комнаты указываются двунаправленной синей стрелочкой.
* 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'')
+
* Есть возможность получить чистый, вид ваших соединений в стиле диаграммы. С отключенными к отображению порталами (Portals) и комнатами (Rooms) в меню View, выделите все объекты и нажмите два раза "1" чтобы спрятать все объекты. Затем в меню View включите показ Portals/Rooms, войдите в режим Portal Mode, и выделите все порталы.  (''Рис. 7.7'')
* Once connected to Room Markers, a portal cannot be moved. You can break this link with the "'''Break Portal Link'''" button: [[File:Jb_MainPortalBreakLink.jpg]]
+
* После соединения с маркерами комнат, портал нельзя перемещать. Вы можете разорвать данную связь используя кнопку "'''Break Portal Link'''": [[File:IconPortalDetach.png]]
* 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.
+
* Каждая ссылка может принадлежать только одному маркеру комнаты - по-умолчанию, это тот маркер, в котором находится его точка пересечения осей. Если нужно, чтобы ссылка была видимой в нескольких комнатах, присоедините её к ячейке "NONE" на вкладке Multibound в свойствах ссылки.
* Skyboxes can be used to set up a [[Glossary#Skybox|Skybox]] diorama to make your spaces with sky-holes more believable.}}
+
* [https://ru.wikipedia.org/wiki/%D0%A1%D0%BA%D0%B0%D0%B9%D0%B1%D0%BE%D0%BA%D1%81 Skybox]'ы могут быть использованы для настройки [http://ru.wikipedia.org/wiki/Диорама диорамы] [[Глоссарий#Skybox|скайбоксов]], чтобы сделать ваши пространства, в которых есть отверстия с видом на небо более правдоподобными.}}
  
Once your level is optimized for maximum performance, you're ready to move on to lighting and FX!
+
Как только ваш уровень оптимизирован для максимальной производительности, пришло время перейти к освещению и эффектам!
  
 
{{Tutorial_Bottom_Bar
 
{{Tutorial_Bottom_Bar

Текущая версия на 09:45, 13 января 2016

Учебник 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