Areaportal: различия между версиями

Материал из CSM Wiki
Перейти к навигации Перейти к поиску
м (Правки 66.28.139.243 (обсуждение) откачены к версии Slux)
Строка 1: Строка 1:
[[Категория:Маппинг_Source]]
 
 
<div class="thumb right">
 
<div class="thumb right">
 
'''Areaportal''' это брашевая энтити [http://va5i1.mapping.vbios.com/wiki/Func_areaportal func_reaportal], она используется для разделения [[Source:Leafs|листьев]] и контроля визуализации. Портал как дверь может может находится в двух состояниях открытом либо закрытом. Когда портал закрыт он блокирует все визуальные объекты в листьях. Когда открыт — визуализация не блокируется. В процессе игры состояние портала может изменяться, как правило брашевыми [http://developer.valvesoftware.com/wiki/Trigger_multiple триггерами], кнопками системой [http://developer.valvesoftware.com/wiki/Inputs_and_Outputs I/O] или [http://developer.valvesoftware.com/wiki/Doors дверью].
 
'''Areaportal''' это брашевая энтити [http://va5i1.mapping.vbios.com/wiki/Func_areaportal func_reaportal], она используется для разделения [[Source:Leafs|листьев]] и контроля визуализации. Портал как дверь может может находится в двух состояниях открытом либо закрытом. Когда портал закрыт он блокирует все визуальные объекты в листьях. Когда открыт — визуализация не блокируется. В процессе игры состояние портала может изменяться, как правило брашевыми [http://developer.valvesoftware.com/wiki/Trigger_multiple триггерами], кнопками системой [http://developer.valvesoftware.com/wiki/Inputs_and_Outputs I/O] или [http://developer.valvesoftware.com/wiki/Doors дверью].
<div class="thumb tright"><div class="thumbinner" style="width:202px;">[http://developer.valvesoftware.com/w/images/d/d3/Areaportal_simple_open.jpg http://developer.valvesoftware.com/w/images/thumb/d/d3/Areaportal_simple_open.jpg/200px-Areaportal_simple_open.jpg]<div class="thumbcaption"><div class="magnify"></div>Открытый портал выделен зелёными контурами, красные - листья.</div></div></div><div class="thumb tright"><div class="thumbinner" style="width:202px;">[http://developer.valvesoftware.com/w/images/5/5f/Areaportal_simple_closed.jpg http://developer.valvesoftware.com/w/images/thumb/5/5f/Areaportal_simple_closed.jpg/200px-Areaportal_simple_closed.jpg]<div class="thumbcaption"><div class="magnify"></div>Закрытый портал.</div></div></div></div>
+
== Свойства ==
+
<div class="thumb tright"><div class="thumbinner" style="width:202px;">[http://developer.valvesoftware.com/w/images/d/d3/Areaportal_simple_open.jpg [[Image:|200px-Areaportal_simple_open.jpg]]]<div class="thumbcaption"><div class="magnify"></div>Открытый портал выделен зелёными контурами, красные - листья.</div></div></div><div class="thumb tright"><div class="thumbinner" style="width:202px;">[http://developer.valvesoftware.com/w/images/5/5f/Areaportal_simple_closed.jpg [[Image:|200px-Areaportal_simple_closed.jpg]]]<div class="thumbcaption"><div class="magnify"></div>Закрытый портал.</div></div></div></div>
<div class="thumb tright"><div class="thumbinner" style="width:202px;">[http://developer.valvesoftware.com/w/images/5/57/Areaportal_trainstation04.jpg http://developer.valvesoftware.com/w/images/thumb/5/57/Areaportal_trainstation04.jpg/200px-Areaportal_trainstation04.jpg]<div class="thumbcaption"><div class="magnify"></div>Trigger_multiples может быть использован для управления порталом.</div></div></div>
+
 +
== Свойства ==
 +
<div class="thumb tright"><div class="thumbinner" style="width:202px;">[http://developer.valvesoftware.com/w/images/5/57/Areaportal_trainstation04.jpg [[Image:|200px-Areaportal_trainstation04.jpg]]]<div class="thumbcaption"><div class="magnify"></div>Trigger_multiples может быть использован для управления порталом.</div></div></div>
 +
 
Стандартный эреапортал:
 
Стандартный эреапортал:
<ul><li>создаётся с помощью [http://va5i1.mapping.vbios.com/wiki/Func_areaportal func_areaportal].
+
</li><li>должен быть построен из одного браша, в противном случае это будет вызывать ошибку при компиляции [http://developer.valvesoftware.com/wiki/Vbsp vbsp].
+
 
</li><li>должен быть покрыт tools\toolsareaportal материалом со всех сторон браша.
+
*создаётся с помощью [http://va5i1.mapping.vbios.com/wiki/Func_areaportal func_areaportal].
</li><li>не должен содержать [http://developer.valvesoftware.com/wiki/Displacement дисплейсмента] иначе это вызовет ошибку vbsp.
+
</li><li>должен полностью отделять зону которую нужно отображать от зоны которую нужно "выключить" иначе это может вызвать [http://developer.valvesoftware.com/wiki/Leak leak] ошибку.
+
*должен быть построен из одного браша, в противном случае это будет вызывать ошибку при компиляции [http://developer.valvesoftware.com/wiki/Vbsp vbsp].
</li><li>состоит не из одной плоскости. Хотя areaportals может быть любого размера, как правило, они изготовлены из тонкого браша под размер зоны которой они разделяют.
+
</li><li>создаёт новый [[Source:Leafs|лист]] равный размеру портала.
+
*должен быть покрыт tools\toolsareaportal материалом со всех сторон браша.
</li><li>может быть открыт или закрыт [http://developer.valvesoftware.com/wiki/Inputs_and_Outputs логической системой] энтити или активирован [http://developer.valvesoftware.com/wiki/Doors door entity].</li></ul>
+
== areaportal_window ==
+
*не должен содержать [http://developer.valvesoftware.com/wiki/Displacement дисплейсмента] иначе это вызовет ошибку vbsp.
 +
 +
*должен полностью отделять зону которую нужно отображать от зоны которую нужно "выключить" иначе это может вызвать [http://developer.valvesoftware.com/wiki/Leak leak] ошибку.
 +
 +
*состоит не из одной плоскости. Хотя areaportals может быть любого размера, как правило, они изготовлены из тонкого браша под размер зоны которой они разделяют.
 +
 +
*создаёт новый [[Source:Leafs|лист]] равный размеру портала.
 +
 +
*может быть открыт или закрыт [http://developer.valvesoftware.com/wiki/Inputs_and_Outputs логической системой] энтити или активирован [http://developer.valvesoftware.com/wiki/Doors door entity].
 +
 
 +
== areaportal_window ==
 +
 
 
[http://developer.valvesoftware.com/wiki/Func_areaportalwindow func_areaportalwindow] это стандартный areaportal с добавлением опций исчезновения и закрытия портала при удалении игрока на определённую дистанцию от него.
 
[http://developer.valvesoftware.com/wiki/Func_areaportalwindow func_areaportalwindow] это стандартный areaportal с добавлением опций исчезновения и закрытия портала при удалении игрока на определённую дистанцию от него.
== Конструирование ==
+
<div class="thumb tright"><div class="thumbinner" style="width:202px;">[http://developer.valvesoftware.com/w/images/e/ef/Areaportal_simple_ex1.jpg http://developer.valvesoftware.com/w/images/thumb/e/ef/Areaportal_simple_ex1.jpg/200px-Areaportal_simple_ex1.jpg]<div class="thumbcaption"><div class="magnify"></div>Конструкция стандартного эреапортала.</div></div></div>
+
 
<ol><li>Создайте areaportal из одного браша что бы <u>полностью</u> изолировать две зоны друг от друга, визуализацию которых вы хотите контролировать. (Можно использовать несколько порталов стоящих вплотную сторона-к-стороне, но не больше чем 6 сторон на одну плоскость браша.)
+
== Конструирование ==
</li><li>Если две зоны соединены дверным проёмом, сделайте браш портала по размеру этого проёма. Если зоны являются открытыми местностями толщина портала может быть любой (обычно по размеру сетки 8,16,32 и т.д).
+
<div class="thumb tright"><div class="thumbinner" style="width:202px;">[http://developer.valvesoftware.com/w/images/e/ef/Areaportal_simple_ex1.jpg [[Image:|200px-Areaportal_simple_ex1.jpg]]]<div class="thumbcaption"><div class="magnify"></div>Конструкция стандартного эреапортала.</div></div></div>
</li><li>Нанесите tools\toolsareaportal материал со всех сторон.
+
</li><li>[http://developer.valvesoftware.com/wiki/Entity_Creation Примените] к брашу [http://va5i1.mapping.vbios.com/wiki/Func_areaportal func_areaportal].
+
#Создайте areaportal из одного браша что бы <u>полностью</u> изолировать две зоны друг от друга, визуализацию которых вы хотите контролировать. (Можно использовать несколько порталов стоящих вплотную сторона-к-стороне, но не больше чем 6 сторон на одну плоскость браша.)
</li><li>Установите параметр ''Initial State'' (исходное значение) closed - блокировать или open - отображать визуализацию. Если вы хотите привязать состояние портала к положению какой-либо двери укажите её имя в параметре ''Name of linked door'' и задайте закрытое начально значение портала, если дверь закрыта. Теперь во время игры визуализация комнаты будет просчитываться только если дверь откроет игрок.
+
</li></ol>
+
#Если две зоны соединены дверным проёмом, сделайте браш портала по размеру этого проёма. Если зоны являются открытыми местностями толщина портала может быть любой (обычно по размеру сетки 8,16,32 и т.д).
 +
 +
#Нанесите tools\toolsareaportal материал со всех сторон.
 +
 +
#[http://developer.valvesoftware.com/wiki/Entity_Creation Примените] к брашу [http://va5i1.mapping.vbios.com/wiki/Func_areaportal func_areaportal].
 +
 +
#Установите параметр ''Initial State'' (исходное значение) closed - блокировать или open - отображать визуализацию. Если вы хотите привязать состояние портала к положению какой-либо двери укажите её имя в параметре ''Name of linked door'' и задайте закрытое начально значение портала, если дверь закрыта. Теперь во время игры визуализация комнаты будет просчитываться только если дверь откроет игрок.
 +
 
 
{{Совет|Когда вы создаёте "ссылку" на дверь убедитесь что толщина браша меньше чем толщина модели двери.}}
 
{{Совет|Когда вы создаёте "ссылку" на дверь убедитесь что толщина браша меньше чем толщина модели двери.}}
== Применение ==
+
<div class="thumb center"><div class="thumbinner" style="width:733px;">[http://va5i1.mapping.vbios.com/wiki/Изображение:Areaportal_culling_engine1.jpg http://developer.valvesoftware.com/w/images/thumb/b/b8/Areaportal_culling_engine1.jpg/350px-Areaportal_culling_engine1.jpg] [http://va5i1.mapping.vbios.com/wiki/Изображение:Areaportal_culling_engine2.jpg http://developer.valvesoftware.com/w/images/thumb/f/f7/Areaportal_culling_engine2.jpg/350px-Areaportal_culling_engine2.jpg]<div class="thumbcaption"></div></div></div>
+
 
<p>При применении порталов в режиме wireframe на первом снимке заметно что он работает как фильтр и отсекает листья не входящие в зону обзора. На втором снимке без применения портала видно как движок игры просчитывает всю визуализацию соседней комнаты, даже ту которую из данного положения нельзя увидеть. Он работает как окно в доме, визуализируестя только то что видно то есть листья через которые проходит луч обзора игрока при пересечении его с порталом. </p>
+
== Применение ==
<div class="thumb tright"><div class="thumbinner" style="width:182px;">[http://developer.valvesoftware.com/w/images/4/46/Areaportal_culling_top.jpg http://developer.valvesoftware.com/w/images/thumb/4/46/Areaportal_culling_top.jpg/180px-Areaportal_culling_top.jpg]<div class="thumbcaption"><div class="magnify"></div>Вид сверху. Обзор игрока проходит через портал.</div></div></div>
+
<div class="thumb center"><div class="thumbinner" style="width:733px;">[http://va5i1.mapping.vbios.com/wiki/Изображение:Areaportal_culling_engine1.jpg [[Image:|350px-Areaportal_culling_engine1.jpg]]] [http://va5i1.mapping.vbios.com/wiki/Изображение:Areaportal_culling_engine2.jpg [[Image:|350px-Areaportal_culling_engine2.jpg]]]<div class="thumbcaption"></div></div></div>
<p>В связи с этим так же используются порталы в состоянии всегда-открыт. Это обычный [http://developer.valvesoftware.com/wiki/Func_areaportal func_areaportal] с начальным значением - открыт, но не управляемый системой I/O. Они используются на границе участков с большим количеством геометрии и листьев. Например разумно было бы разместить такой эреапортал на выходе длинного коридора в комнату. Когда игрок находится внутри коридора визуализируется только то что находится перед коридором и можно увидеть из него.</p>
+
<h3>Примечание</h3>
+
При применении порталов в режиме wireframe на первом снимке заметно что он работает как фильтр и отсекает листья не входящие в зону обзора. На втором снимке без применения портала видно как движок игры просчитывает всю визуализацию соседней комнаты, даже ту которую из данного положения нельзя увидеть. Он работает как окно в доме, визуализируестя только то что видно то есть листья через которые проходит луч обзора игрока при пересечении его с порталом.  
<p>Не ставьте слишком много эреапорталов в одной зоне. Так как это может повысить нагрузку на процессор, бывают моменты когда просчёт (отсечение видимых областей и т.д.) эреапорталами занимает больше ресурсов чем если бы они не применялись вовсе.
+
<div class="thumb tright"><div class="thumbinner" style="width:182px;">[http://developer.valvesoftware.com/w/images/4/46/Areaportal_culling_top.jpg [[Image:|180px-Areaportal_culling_top.jpg]]]<div class="thumbcaption"><div class="magnify"></div>Вид сверху. Обзор игрока проходит через портал.</div></div></div>
</p><p>Так же эреапорталы не входят в общий лимит брашей. Это может быть полезным на карте с большим количеством хинт брашей.</p>
+
== Компиляция ==
+
В связи с этим так же используются порталы в состоянии всегда-открыт. Это обычный [http://developer.valvesoftware.com/wiki/Func_areaportal func_areaportal] с начальным значением - открыт, но не управляемый системой I/O. Они используются на границе участков с большим количеством геометрии и листьев. Например разумно было бы разместить такой эреапортал на выходе длинного коридора в комнату. Когда игрок находится внутри коридора визуализируется только то что находится перед коридором и можно увидеть из него.
<div class="thumb tright"><div class="thumbinner" style="width:302px;">[http://developer.valvesoftware.com/w/images/4/46/Areaportal_culling_top.jpg http://developer.valvesoftware.com/w/images/thumb/5/59/AreaPortalLeakFig.jpg/300px-AreaPortalLeakFig.jpg]<div class="thumbcaption"><div class="magnify"></div>Вид сверху: слева показана leak ошибка, справа полностью изолированая зона.</div></div></div>
+
 
<p>При разделении зон эреапорталом очень важно что бы они были полностью изолированы друг от друга как на снимке справа и не образовывали "утечек" leak ошибок. Зона считается изолированной если она полностью окружена world-брашами, а соединения (проходы) к другим пространствам закрыты эреапорталами. Если зоны соединяются несколькими проходами они тоже должны быть закрыты эреапорталами.</p>
+
=== Примечание ===
<p>Это можно прдеставить себе как отверстие в аквариуме с рыбой. Каждое отверстие в world-браше соединяющее одну зону с другой должно быть закрыто эреапорталом, иначе возникнет leak ошибка компиляции vbsp. [http://developer.valvesoftware.com/wiki/Func_detail Detail-браши] и дисплейсмент не может служить границей зоны для их изолирования. Если компилятор сможет найти путь соединяющий две основные поверхности эрепортала то возникнет leak ошибка.</p>
+
 
<h3>Ошибки компиляции</h3>
+
Не ставьте слишком много эреапорталов в одной зоне. Так как это может повысить нагрузку на процессор, бывают моменты когда просчёт (отсечение видимых областей и т.д.) эреапорталами занимает больше ресурсов чем если бы они не применялись вовсе.
<p>При компиляции эреапортала ошибки выводятся [http://developer.valvesoftware.com/wiki/Vbsp VBSP]. Если на карте возникла leak тучка вы увидите:</p>
+
 +
 
 +
Так же эреапорталы не входят в общий лимит брашей. Это может быть полезным на карте с большим количеством хинт брашей.
 +
 
 +
== Компиляция ==
 +
<div class="thumb tright"><div class="thumbinner" style="width:302px;">[http://developer.valvesoftware.com/w/images/4/46/Areaportal_culling_top.jpg [[Image:|300px-AreaPortalLeakFig.jpg]]]<div class="thumbcaption"><div class="magnify"></div>Вид сверху: слева показана leak ошибка, справа полностью изолированая зона.</div></div></div>
 +
 +
При разделении зон эреапорталом очень важно что бы они были полностью изолированы друг от друга как на снимке справа и не образовывали "утечек" leak ошибок. Зона считается изолированной если она полностью окружена world-брашами, а соединения (проходы) к другим пространствам закрыты эреапорталами. Если зоны соединяются несколькими проходами они тоже должны быть закрыты эреапорталами.
 +
 
 +
Это можно прдеставить себе как отверстие в аквариуме с рыбой. Каждое отверстие в world-браше соединяющее одну зону с другой должно быть закрыто эреапорталом, иначе возникнет leak ошибка компиляции vbsp. [http://developer.valvesoftware.com/wiki/Func_detail Detail-браши] и дисплейсмент не может служить границей зоны для их изолирования. Если компилятор сможет найти путь соединяющий две основные поверхности эрепортала то возникнет leak ошибка.
 +
 
 +
=== Ошибки компиляции ===
 +
 
 +
При компиляции эреапортала ошибки выводятся [http://developer.valvesoftware.com/wiki/Vbsp VBSP]. Если на карте возникла leak тучка вы увидите:
 
<pre>Brush &lt;brush number&gt;: areaportal brush doesn't touch two areas
 
<pre>Brush &lt;brush number&gt;: areaportal brush doesn't touch two areas
 
done</pre>
 
done</pre>
<p>Эту ошибку иногда трудно заметить по сравнению с обычной [http://developer.valvesoftware.com/wiki/Leak leak] утечкой но когда это происходит vbsp генерирует [http://developer.valvesoftware.com/wiki/Leak#Finding_leaks pointfile] что бы помочь вам как при стандартной ошибке.</p>
+
Эту ошибку иногда трудно заметить по сравнению с обычной [http://developer.valvesoftware.com/wiki/Leak leak] утечкой но когда это происходит vbsp генерирует [http://developer.valvesoftware.com/wiki/Leak#Finding_leaks pointfile] что бы помочь вам как при стандартной ошибке.
<div style="padding:3px 3px 3px 15px;margin:2px;overflow:auto;">http://developer.valvesoftware.com/w/images/7/7d/Bug.png<b><span style="color:#b03434;"> Баг:</span></b> Если ваша карта не содержит энтити (info_player_start к примеру) портал создаст нестандартную LEAK ошибку. Что бы этого не было карта должна содержать минимум одну энтити.</div>
+
<div style="padding:3px 3px 3px 15px;margin:2px;overflow:auto;">http://developer.valvesoftware.com/w/images/7/7d/Bug.png'''<span style="color:#b03434;"> Баг:</span>''' Если ваша карта не содержит энтити (info_player_start к примеру) портал создаст нестандартную LEAK ошибку. Что бы этого не было карта должна содержать минимум одну энтити.</div>
 +
 
{{Совет|В [http://developer.valvesoftware.com/wiki/Glview glview] можно увидеть эреапорталы как серые участки.}}
 
{{Совет|В [http://developer.valvesoftware.com/wiki/Glview glview] можно увидеть эреапорталы как серые участки.}}
<h3>Areaportal и вода</h3>
+
<p>Важный аспект в работе с эреапорталами: не допустимо пересечение браша эреапортала с водой. Что бы избежать пересечения портала с водой разделите его на 2 части и разместите их на разных концах браша воды.</p>
+
 
<h3>Слияние</h3>
+
=== Areaportal и вода ===
<p>Для улучшения оптимизации порталы расположенные в одной плоскости и направленные в одну строну автоматически сливаются в один игровым движком. Если это не нужно, просто переместите браш эрепортала в другую плоскость, направте в другую сторону или просто измините размер. Смещение портала на один юнит достаточно что бы слияния не произощло.
+
 
</p>
+
Важный аспект в работе с эреапорталами: не допустимо пересечение браша эреапортала с водой. Что бы избежать пересечения портала с водой разделите его на 2 части и разместите их на разных концах браша воды.
 +
 
 +
=== Слияние ===
 +
 
 +
Для улучшения оптимизации порталы расположенные в одной плоскости и направленные в одну строну автоматически сливаются в один игровым движком. Если это не нужно, просто переместите браш эрепортала в другую плоскость, направте в другую сторону или просто измините размер. Смещение портала на один юнит достаточно что бы слияния не произощло.
 +
 +
 
 
{{Совет|Вы можете увидеть объединённые порталы введя команду <code>r_DrawPortals 1</code>.}}
 
{{Совет|Вы можете увидеть объединённые порталы введя команду <code>r_DrawPortals 1</code>.}}
== Обзор через зоны ==
+
<div class="thumb tright"><div class="thumbinner" style="width:130px;">[http://developer.valvesoftware.com/w/images/7/71/Areaportal-areas.png http://developer.valvesoftware.com/w/images/7/71/Areaportal-areas.png]<div class="thumbcaption">Визуализация в зонах 1 и 2 не изменяется. Красным выделены листья, чёрные - world-браши.</div></div></div>
+
 
<p>Эреапорталы отсекают только ту часть которую они изолируют. Рассмотрим изображение справа: визуализация лситьев 1 и 2 ни как не будет зависеть от расположенных эреапорталов, так как они связаны друг с другом через другие зоны. Вы могли бы расположить еще 2 портала в зонах слева и справа, но только если оно того стоит.</p>
+
== Обзор через зоны ==
== Консольные команды ==
+
<div class="thumb tright"><div class="thumbinner" style="width:130px;">[http://developer.valvesoftware.com/w/images/7/71/Areaportal-areas.png [[Image:|Areaportal-areas.png]]]<div class="thumbcaption">Визуализация в зонах 1 и 2 не изменяется. Красным выделены листья, чёрные - world-браши.</div></div></div>
<p>Вы можете отлаживать и тестировать эреапорталы в игре через [http://developer.valvesoftware.com/wiki/Console консоль]:</p>
+
<dl><dt>r_DrawPortals 0/1<dd> Этот параметр установелный на 1 выделяет зелёными контурами эреапортал если он открыт так же показывает проекцию (отсекающая листья) обзора игрока при просмотре сквозь него.
+
Эреапорталы отсекают только ту часть которую они изолируют. Рассмотрим изображение справа: визуализация лситьев 1 и 2 ни как не будет зависеть от расположенных эреапорталов, так как они связаны друг с другом через другие зоны. Вы могли бы расположить еще 2 портала в зонах слева и справа, но только если оно того стоит.
</dl>
+
 
<dl><dt>mat_wireframe 0/1/2/3<dd> В <code>wireframe</code> режиме можно легко увидеть как работает эреопортал, как ведут себя листья в данный момент при значениях параметра 1 и 2, значение 3 выделяет листья отображаемые в данный момент.
+
== Консольные команды ==
</dl>
+
 
<dl><dt>r_portalscloseall 0/1<dd> Значение 1 закроет все изначально открытые (только если они не были открыты <code>r_portalsopenall 1</code>) порталы и укажет работающие неправильно.
+
Вы можете отлаживать и тестировать эреапорталы в игре через [http://developer.valvesoftware.com/wiki/Console консоль]:
</dl>
+
 
<dl><dt>r_portalsopenall 0/1<dd> Значение 1 откроет все изначально закрытые (только если они не были закрыты <code>r_portalscloseall 1</code>) порталы.
+
 
</dl>
+
 
 +
;r_DrawPortals 0/1
 +
:Этот параметр установелный на 1 выделяет зелёными контурами эреапортал если он открыт так же показывает проекцию (отсекающая листья) обзора игрока при просмотре сквозь него.
 +
 
 +
;mat_wireframe 0/1/2/3
 +
:В <code>wireframe</code> режиме можно легко увидеть как работает эреопортал, как ведут себя листья в данный момент при значениях параметра 1 и 2, значение 3 выделяет листья отображаемые в данный момент.
 +
 
 +
;r_portalscloseall 0/1
 +
:Значение 1 закроет все изначально открытые (только если они не были открыты <code>r_portalsopenall 1</code>) порталы и укажет работающие неправильно.
 +
 
 +
;r_portalsopenall 0/1
 +
:Значение 1 откроет все изначально закрытые (только если они не были закрыты <code>r_portalscloseall 1</code>) порталы.
 
{{Совет|Используйте <code>BindToggle</code> что бы присвоить клавишам значения команд (пример: <code>BindToggle p mat_wireframe 1</code>).}}
 
{{Совет|Используйте <code>BindToggle</code> что бы присвоить клавишам значения команд (пример: <code>BindToggle p mat_wireframe 1</code>).}}
== Мультиплеер ==
+
<p>Эреапорталы очень полезны в сетевой игре. Создаются они также как и в одиночной игре, но их функции и применение немного отличается. Состояние эреапортала в многопользовательской игре контролировать сложнее поэтому карта должна быть оптимизирована для наихудшего сценария когда все эреапорталы открыты. Самый часто используемый вариант это "всегда-открытый" эрепортал за ним идёт активируемый дверью худший вариант в мультиплеере эреапортал управляемый триггером. В худшем варианте с использованием триггеров, правильно поставленый "всегда-открытый" портал повысит производительность по сравнению с управляемый портал.</p>
+
 
<p>Так же в мультиплеере могут быть использованы areaportal window, но они менее полезны так как вносят дисбаланс в геймплей многопользовательской карты. Игрок внутри зоны, рядом с порталом может увидеть любого игрока снаружи, но игрок снаружи находящийся на расстоянии от портала не сможет увидеть игрока внутри.</p>
+
 
== Общее с occluders ==
+
== Мультиплеер ==
<p>[http://developer.valvesoftware.com/wiki/Occluder Окклюдеры] помогают контролирвать визуализацию этим они схожи с эриапорталами. Основные различия:</p>
+
 
<ul><li>Окклюдеры скрывают всё (модели, брашевые энтити) кроме world-брашей. Эреапортал блокирует всю визуализацию.
+
Эреапорталы очень полезны в сетевой игре. Создаются они также как и в одиночной игре, но их функции и применение немного отличается. Состояние эреапортала в многопользовательской игре контролировать сложнее поэтому карта должна быть оптимизирована для наихудшего сценария когда все эреапорталы открыты. Самый часто используемый вариант это "всегда-открытый" эрепортал за ним идёт активируемый дверью худший вариант в мультиплеере эреапортал управляемый триггером. В худшем варианте с использованием триггеров, правильно поставленый "всегда-открытый" портал повысит производительность по сравнению с управляемый портал.
</li><li>Две разделяемые зоны должны быть полностью изолированы эреапорталами, окклюдер может быть установлен в любом месте карты.
+
 
</li><li>Окклюдер затрачивает больше ресурсов чем открытый эреапортал.
+
Так же в мультиплеере могут быть использованы areaportal window, но они менее полезны так как вносят дисбаланс в геймплей многопользовательской карты. Игрок внутри зоны, рядом с порталом может увидеть любого игрока снаружи, но игрок снаружи находящийся на расстоянии от портала не сможет увидеть игрока внутри.
</li><li>Окклюдерами можно контролировать размер скрываемой зоны.</li></ul>
+
 
 +
== Общее с occluders ==
 +
 
 +
[http://developer.valvesoftware.com/wiki/Occluder Окклюдеры] помогают контролирвать визуализацию этим они схожи с эриапорталами. Основные различия:
 +
 
 +
*Окклюдеры скрывают всё (модели, брашевые энтити) кроме world-брашей. Эреапортал блокирует всю визуализацию.
 +
 +
*Две разделяемые зоны должны быть полностью изолированы эреапорталами, окклюдер может быть установлен в любом месте карты.
 +
 +
*Окклюдер затрачивает больше ресурсов чем открытый эреапортал.
 +
 +
*Окклюдерами можно контролировать размер скрываемой зоны.
 +
 
 
{{Примечание|Браши окклюдера и эриапортала не должны пересекаться и сопрекосаться в противном случае они не будут работать.}}
 
{{Примечание|Браши окклюдера и эриапортала не должны пересекаться и сопрекосаться в противном случае они не будут работать.}}
== Смотрите также: ==
+
<ul><li>[http://developer.valvesoftware.com/wiki/Func_areaportal func_areaportal]/[http://developer.valvesoftware.com/wiki/CAreaPortal CAreaPortal]
+
 
</li><li>[http://developer.valvesoftware.com/wiki/Func_areaportalwindow func_areaportalwindow]
+
== Смотрите также: ==
</li><li>[http://developer.valvesoftware.com/wiki/CAreaPortalOneWay CAreaPortalOneWay] (C++ код)
+
 
</li><li>[http://developer.valvesoftware.com/wiki/Controlling_Geometry_Visibility_and_Compile_Times Контроль Геометрии, Визуализации и Компиляции]
+
*[http://developer.valvesoftware.com/wiki/Func_areaportal func_areaportal]/[http://developer.valvesoftware.com/wiki/CAreaPortal CAreaPortal]
</li><li>[http://developer.valvesoftware.com/wiki/Leak Leak-ошибка]
+
</li><li>[http://va5i1.mapping.vbios.com/wiki/Source:Leafs Visleaf]</li></ul>
+
*[http://developer.valvesoftware.com/wiki/Func_areaportalwindow func_areaportalwindow]
 +
 +
*[http://developer.valvesoftware.com/wiki/CAreaPortalOneWay CAreaPortalOneWay] (C++ код)
 +
 +
*[http://developer.valvesoftware.com/wiki/Controlling_Geometry_Visibility_and_Compile_Times Контроль Геометрии, Визуализации и Компиляции]
 +
 +
*[http://developer.valvesoftware.com/wiki/Leak Leak-ошибка]
 +
 +
*[http://va5i1.mapping.vbios.com/wiki/Source:Leafs Visleaf]
  
 
Статья взята с [http://developer.valvesoftware.com/wiki/Areaportal ValveDev]
 
Статья взята с [http://developer.valvesoftware.com/wiki/Areaportal ValveDev]
 +
 +
 +
[[Category:Маппинг_Source]]

Версия 20:25, 11 мая 2009

Areaportal это брашевая энтити func_reaportal, она используется для разделения листьев и контроля визуализации. Портал как дверь может может находится в двух состояниях открытом либо закрытом. Когда портал закрыт он блокирует все визуальные объекты в листьях. Когда открыт — визуализация не блокируется. В процессе игры состояние портала может изменяться, как правило брашевыми триггерами, кнопками системой I/O или дверью.

[[Image:|200px-Areaportal_simple_open.jpg]]
Открытый портал выделен зелёными контурами, красные - листья.
[[Image:|200px-Areaportal_simple_closed.jpg]]
Закрытый портал.

Свойства

[[Image:|200px-Areaportal_trainstation04.jpg]]
Trigger_multiples может быть использован для управления порталом.

Стандартный эреапортал:


  • должен быть построен из одного браша, в противном случае это будет вызывать ошибку при компиляции vbsp.
  • должен быть покрыт tools\toolsareaportal материалом со всех сторон браша.
  • должен полностью отделять зону которую нужно отображать от зоны которую нужно "выключить" иначе это может вызвать leak ошибку.
  • состоит не из одной плоскости. Хотя areaportals может быть любого размера, как правило, они изготовлены из тонкого браша под размер зоны которой они разделяют.
  • создаёт новый лист равный размеру портала.

areaportal_window

func_areaportalwindow это стандартный areaportal с добавлением опций исчезновения и закрытия портала при удалении игрока на определённую дистанцию от него.


Конструирование

[[Image:|200px-Areaportal_simple_ex1.jpg]]
Конструкция стандартного эреапортала.
  1. Создайте areaportal из одного браша что бы полностью изолировать две зоны друг от друга, визуализацию которых вы хотите контролировать. (Можно использовать несколько порталов стоящих вплотную сторона-к-стороне, но не больше чем 6 сторон на одну плоскость браша.)
  1. Если две зоны соединены дверным проёмом, сделайте браш портала по размеру этого проёма. Если зоны являются открытыми местностями толщина портала может быть любой (обычно по размеру сетки 8,16,32 и т.д).
  1. Нанесите tools\toolsareaportal материал со всех сторон.
  1. Примените к брашу func_areaportal.
  1. Установите параметр Initial State (исходное значение) closed - блокировать или open - отображать визуализацию. Если вы хотите привязать состояние портала к положению какой-либо двери укажите её имя в параметре Name of linked door и задайте закрытое начально значение портала, если дверь закрыта. Теперь во время игры визуализация комнаты будет просчитываться только если дверь откроет игрок.
Tip.png Совет: Когда вы создаёте "ссылку" на дверь убедитесь что толщина браша меньше чем толщина модели двери.


Применение

При применении порталов в режиме wireframe на первом снимке заметно что он работает как фильтр и отсекает листья не входящие в зону обзора. На втором снимке без применения портала видно как движок игры просчитывает всю визуализацию соседней комнаты, даже ту которую из данного положения нельзя увидеть. Он работает как окно в доме, визуализируестя только то что видно то есть листья через которые проходит луч обзора игрока при пересечении его с порталом.

[[Image:|180px-Areaportal_culling_top.jpg]]
Вид сверху. Обзор игрока проходит через портал.

В связи с этим так же используются порталы в состоянии всегда-открыт. Это обычный func_areaportal с начальным значением - открыт, но не управляемый системой I/O. Они используются на границе участков с большим количеством геометрии и листьев. Например разумно было бы разместить такой эреапортал на выходе длинного коридора в комнату. Когда игрок находится внутри коридора визуализируется только то что находится перед коридором и можно увидеть из него.

Примечание

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


Так же эреапорталы не входят в общий лимит брашей. Это может быть полезным на карте с большим количеством хинт брашей.

Компиляция

[[Image:|300px-AreaPortalLeakFig.jpg]]
Вид сверху: слева показана leak ошибка, справа полностью изолированая зона.

При разделении зон эреапорталом очень важно что бы они были полностью изолированы друг от друга как на снимке справа и не образовывали "утечек" leak ошибок. Зона считается изолированной если она полностью окружена world-брашами, а соединения (проходы) к другим пространствам закрыты эреапорталами. Если зоны соединяются несколькими проходами они тоже должны быть закрыты эреапорталами.

Это можно прдеставить себе как отверстие в аквариуме с рыбой. Каждое отверстие в world-браше соединяющее одну зону с другой должно быть закрыто эреапорталом, иначе возникнет leak ошибка компиляции vbsp. Detail-браши и дисплейсмент не может служить границей зоны для их изолирования. Если компилятор сможет найти путь соединяющий две основные поверхности эрепортала то возникнет leak ошибка.

Ошибки компиляции

При компиляции эреапортала ошибки выводятся VBSP. Если на карте возникла leak тучка вы увидите:

Brush <brush number>: areaportal brush doesn't touch two areas
done

Эту ошибку иногда трудно заметить по сравнению с обычной leak утечкой но когда это происходит vbsp генерирует pointfile что бы помочь вам как при стандартной ошибке.

http://developer.valvesoftware.com/w/images/7/7d/Bug.png Баг: Если ваша карта не содержит энтити (info_player_start к примеру) портал создаст нестандартную LEAK ошибку. Что бы этого не было карта должна содержать минимум одну энтити.
Tip.png Совет: В glview можно увидеть эреапорталы как серые участки.


Areaportal и вода

Важный аспект в работе с эреапорталами: не допустимо пересечение браша эреапортала с водой. Что бы избежать пересечения портала с водой разделите его на 2 части и разместите их на разных концах браша воды.

Слияние

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


Tip.png Совет: Вы можете увидеть объединённые порталы введя команду r_DrawPortals 1.


Обзор через зоны

[[Image:|Areaportal-areas.png]]
Визуализация в зонах 1 и 2 не изменяется. Красным выделены листья, чёрные - world-браши.

Эреапорталы отсекают только ту часть которую они изолируют. Рассмотрим изображение справа: визуализация лситьев 1 и 2 ни как не будет зависеть от расположенных эреапорталов, так как они связаны друг с другом через другие зоны. Вы могли бы расположить еще 2 портала в зонах слева и справа, но только если оно того стоит.

Консольные команды

Вы можете отлаживать и тестировать эреапорталы в игре через консоль:


r_DrawPortals 0/1
Этот параметр установелный на 1 выделяет зелёными контурами эреапортал если он открыт так же показывает проекцию (отсекающая листья) обзора игрока при просмотре сквозь него.
mat_wireframe 0/1/2/3
В wireframe режиме можно легко увидеть как работает эреопортал, как ведут себя листья в данный момент при значениях параметра 1 и 2, значение 3 выделяет листья отображаемые в данный момент.
r_portalscloseall 0/1
Значение 1 закроет все изначально открытые (только если они не были открыты r_portalsopenall 1) порталы и укажет работающие неправильно.
r_portalsopenall 0/1
Значение 1 откроет все изначально закрытые (только если они не были закрыты r_portalscloseall 1) порталы.
Tip.png Совет: Используйте BindToggle что бы присвоить клавишам значения команд (пример: BindToggle p mat_wireframe 1).


Мультиплеер

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

Так же в мультиплеере могут быть использованы areaportal window, но они менее полезны так как вносят дисбаланс в геймплей многопользовательской карты. Игрок внутри зоны, рядом с порталом может увидеть любого игрока снаружи, но игрок снаружи находящийся на расстоянии от портала не сможет увидеть игрока внутри.

Общее с occluders

Окклюдеры помогают контролирвать визуализацию этим они схожи с эриапорталами. Основные различия:

  • Окклюдеры скрывают всё (модели, брашевые энтити) кроме world-брашей. Эреапортал блокирует всю визуализацию.
  • Две разделяемые зоны должны быть полностью изолированы эреапорталами, окклюдер может быть установлен в любом месте карты.
  • Окклюдер затрачивает больше ресурсов чем открытый эреапортал.
  • Окклюдерами можно контролировать размер скрываемой зоны.
Note.png Примечание:


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

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