Оптимизация небосвода
В этой статье приведены различные методы размещения элементов короба неба на карте, а также их преимущества и недостатки. Все методы показаны на примере карты. Верхние элементы скрыты для наглядности.
Эта статья актуальна для
GoldSrc и
Source, карты которых должны быть герметичны и для просмотра небосвода необходимы элементы покрытые текстурой неба. Начиная с
Source 2, эти требования больше не актуальны, но по-прежнему считаются лучшей практикой, так как компиляция карт с утечками занимает значительно больше времени и неправильно рассчитывается видимость.
Обзор
| Метод | Описание | Преимущества | Недостатки | |
|---|---|---|---|---|
| Коробочный метод | Создаётся один большой короб неба, охватывающий всё содержимое карты |
|
| |
| Облегающий небосвод | Создаются стены и потолки короба неба для каждой области, не оставляя доступных игроку областей |
|
| |
| Опоясывающий метод | Похож на Облегающий небосвод, но не настолько детально, оставляя разные части карты соединенными над игровой областью |
|
| |
Дополнительными преимуществами оптимизации небосвода карты являются:
- Простота использования порталов областей
- Простота организации переключения звукового окружения env_soundscape
- Отрисовка большего количества мелких объектов на деформированных поверхностях>
Коробочный метод
Каждый картодел создаёт неправильные небосводы просто делая полую коробку вокруг карты, или делая отдельные браши, ставя их вместе в форме коробки.
В другом случае этот "Коробочный метод" в корне не тот метод, который вы должны использовать в качестве создания небосвода, так как карты, которые могут иметь такой тип небосвода, малы до такой степени, чтобы вы могли видеть её всю. Не беря в счёт эти карты, небосвод необходимо делать правильно.
Теперь, чтобы показать вам, почему "Коробочный метод" плохой, я покажу вам карту справа и я буду использовать два способа создания небосвода на ней. Это простенькая карта: несколько путей с тремя большими комнатами и стенами, отделяющие их.
Это не такая уж и красивая карта, но она служит быть примером. Также заметьте, что непосредственно пол самой карты состоит из некоторого количества смещений, а не из одного целого. Это довольно таки распространено, далее мы увидим, как это затронет наш небосвод.
"Коробочный метод" выглядит именно так, как на картинке ниже.
Сам пол карты исчезает неспроста, он заостряет внимание на том, что пол не именно там в простом понимании. Смещения не блокируют видимость, и VVIS не просчитает visleafs, который останавливает поверхности от смещения, visleafs проигнорирует их. Если вы бы сделали стену, состоящую только из смещений, то ваш компьютер прорисовывал бы постоянно все модели, игроков и геометрию позади их. Только геометрия карты - в этом случае стены - будут блокировать видимость и создавать visleafs, контролирующий предметы от их прорисовки.
Правильно сделанный короб неба с продвинутым картостроением даёт большой прирост производительности на сложной карте. Это не очень умная идея создавать коробочный небосвод, когда вы начинаете делать уровень. Лучше используйте инструмент кордона, пока вы не достигнете стадии разработки карты, в которой вы не будете работать над финальной версией короба неба.
In
In
Облегающий небосвод
Теперь давайте взглянем на более лучший метод создания короба неба, взгляните на картинку ниже:
Короб неба теперь огибает весь уровень, и nodraw текстуры будут использованы под всеми стенами и полом, вместо служебной текстуры неба tools/toolsskybox. Это уменьшает количества расчётов (КОЛОССАЛЬНО уменьшая время компиляции), потому что небосвод не содержит в себе пустое пространство для генерации. Nodraw текстуры будут использованы, потому что нам не надо освещать поверхности за картой, и мы не хотим увидеть ошибки в прорисовке, которые появятся при освещении смещений снизу.
Все эти методы колоссально влияют на компиляцию:
Portal Clusters: 73 »» 16
Numportals: 201 »» 19
Total Clusters Visible: 3981 »» 134
Average Clusters Visible: 54 »» 8
Average Clusters Audible: 73 »» 13
VisDataSize: 2048 »» 196
Для такой маленькой карты эти различия существенны и значительно повышают производительность карты в игре, особенно если карта будет больше.
Когда не надо делить на части
Делать небосвод, который будет поверх всех стен карты, не очень правильная идея. Есть несколько случаев, в которых вы должны оставлять некоторые стены без короба неба, чтобы видеть другие секции вашей картыю, например.
Я поставил высокие элементы в середине карты, картинка справа это показывает. Однако, если короб неба будет там присутствовать, то башня будет то появляться, то исчезать время от времени из-за работы небосвода. Обрезка небосвода в требующих местах неоходима, чтобы другие части карты были видны от всех углов камеры игрока.
Убирая и обрезая стены короба неба мы можем увидеть эту башню от всех углов карты и используя nodraw текстуры внизу карты мы не позволим свету выглядывать. Результат выглядит таковым:
Также вы можете попробовать ограничить зону прорисовки башни. Просто вытяните несколько стен, так чтобы вблизи этих стен вы не заметили бы башню:






