Areaportal tutorial

Материал из CSM Wiki
Перейти к навигации Перейти к поиску

Введение

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

Рис.1 Улица с четырьмя домами.
Рис.2 Закрытый эреапортал в режиме mat_wireframe.
Рис.3 Тот же эреапортал - открытый.

Примеры

Улица

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

На карте данного типа размещая эреапорталы в дверях будет потимальным положением для них. Вот как это работает: закрытый эреапортал отделяет листья двух зон и отображает только область в которой находится игрок, если эреапортал открыт он начинает отсекать листья соседней части карты не входящие в зону видимости, которую можно увидеть смотря сквозь дверной проход. В режиме mat_wireframe 3 можно увидеть как работает эреапортал во время игры. Таким образом скорость обработки карты в участке с закрытом эреапорталом становится такой же если бы карта состояла из одной этой зоны.

Домик

Возьмём к примеру домик имеющий две двери, четыре окна и дымоход. Нам нужно превратити домик в отдельную зону визуализации. Для этого нам нужно сделать пол, крышу и стены из world-брашей оставив отверстия для дверей, окон и трубы. Все эти отверстия должны быть полностью закрыты брашами эреапорталов. Место размещения портала в трубе не имеет значения. Если два окна расположены близко друг к другу то браш портала может быть растянут для их перекрытия, тогда браш разделяющий окна может быть изменён в энтити (func_detail или func_wall), это означает что он не будет создавать лишний лист. Но если между world-брашами (окна, двери и т.д.) и эреапорталами будут пространства хотябы в 1 юнит возникнет leak-утечка. Устраните ошибку и перекомпилируйте карту.

После правильной установки эреапорталов, поместите на карту дверь таким образом что б браш/модель двери был шире портала. В окна можно поместить жалюзи, а состояние портала привязать к их положению. Дымоход не имеет двери но это не важно, обзор из него довольно ограничен.

Смотрите также

Статья взята с ValveDev