Visibility
January 2024
Contents
Visibility basics
Файл компилируемых карт имеет расширение .bsp
. BSP является аббревиатурой Binary Space Partitioning. Строго говоря, игровой движок должен отрисовать только те области игрового уровня, которые видны из точки, в которой находится игрок. Это улучшает производительность в уровне (т.е. влияет на то, насколько быстро происходит смена кадров). Чтобы этого добиться, движок делит уровень на порции, называемые leafs (листья). Если игрок находится в листе из котрого виден следующий дист, тогда тот лист также отрисовывается. Постоянные (не сущностные) браши определяют, где лист будет разрезаться. Браши сущностей, такие как func_ladder
, которые мы создавали в предыдущей секции, не влияют на порядок разрезания уровня.
Так почему бы не сделать браши для разрезания уровня на большое количество листов? Если будет много брашей, режущих уровень на листы видимости, движок вынужден будет делать больше работы при вычислении видимости большего количества деталей для прорисовки.
Любой созданный Вами браш, которые не должен блокировать видимость, должен быть сущностным брашем (func_detail
). Эти func_detail
браши являются уже твердыми телами в мире, но игнорируются при вычислении области видимости.
- Это довольно общее представление системы визуализации в игровом движке. Для более подробной информации об BSP и графической визуализации смотрите Visibility optimization .
Создайте tutorial03.vmf
В первую очередь нам нужно создать новую версию карты, что мы использовали в предыдущем разделе.
Откройте файл карты tutorial01.vmf который вы создали ранее в Hammer (если он еще не открыт). Он расположен в папке mapsrc, по умолчанию:
C:\Program Files\Steam\steamapps\common\left 4 dead\sdk_content\mapsrc\
Итак мы сделаем новую рабочую версию и скомпилируем ее:
- Для этого проходим в меню File и выбираем Save As...
- Меняем имя на
tutorial03.vmf
.
Creating a Platform
Sticking with our level called tutorial02
, let's create a platform that extends the upper floor where we created our ladder.
Using the Selection tool, duplicate the back wall brush that we extended out to create the upper story in the last tutorial by ⇧ Shift-dragging it. Reshape it to be a platform that extends out from the upper story on one side.
It should be 368 units wide, 176 units long, and 16 units deep.
Feel free to re-texture the bottom of the platform so that it matches the ceiling and floor.
Now, go to the Tools menu and choose Tie to Entity. You can also use the Ctrl+T keyboard shortcut.
The default Class for a brush entity is func_detail
.
If you see something else under the Class drop-down menu, you will need to change a setting in Tools > Options > Game Configurations tab.
Make sure the Default SolidEntity Class field is set to "func_detail
".
That's it. You're done! You just created a brush that will not cut up the BSP into more leafs.
Run the map
Press F9 to open the Run Map dialog and click on the OK Button to compile the map and run it in the game.
Good candidates for func_detail brushes
So how do you know to make a brush a func_detail
or not?
Details such as:
- Columns and beams
- Trim
- Frames
- Small platforms
- Posts
- Furniture
- Trusses
func_detail.
This will create a leak to the outside.- L4D Level Design/Лестницы|:L4D Level Design/Лестницы]]