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

Материал из CSM Wiki
Перейти к навигации Перейти к поиску
м (Правки 66.28.139.242 (обсуждение) откачены к версии Slux)
(Содержимое страницы заменено на «Сдесь был БульдозеР»)
Строка 1: Строка 1:
[[Категория:Маппинг_Source]]
+
Сдесь был БульдозеР
<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 дверью].
 
<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/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>
 
Стандартный эреапортал:
 
<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 материалом со всех сторон браша.
 
</li><li>не должен содержать [http://developer.valvesoftware.com/wiki/Displacement дисплейсмента] иначе это вызовет ошибку vbsp.
 
</li><li>должен полностью отделять зону которую нужно отображать от зоны которую нужно "выключить" иначе это может вызвать [http://developer.valvesoftware.com/wiki/Leak leak] ошибку.
 
</li><li>состоит не из одной плоскости. Хотя areaportals может быть любого размера, как правило, они изготовлены из тонкого браша под размер зоны которой они разделяют.
 
</li><li>создаёт новый [[Source:Leafs|лист]] равный размеру портала.
 
</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/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 и т.д).
 
</li><li>Нанесите tools\toolsareaportal материал со всех сторон.
 
</li><li>[http://developer.valvesoftware.com/wiki/Entity_Creation Примените] к брашу [http://va5i1.mapping.vbios.com/wiki/Func_areaportal func_areaportal].
 
</li><li>Установите параметр ''Initial State'' (исходное значение) closed - блокировать или open - отображать визуализацию. Если вы хотите привязать состояние портала к положению какой-либо двери укажите её имя в параметре ''Name of linked door'' и задайте закрытое начально значение портала, если дверь закрыта. Теперь во время игры визуализация комнаты будет просчитываться только если дверь откроет игрок.
 
</li></ol>
 
{{Совет|Когда вы создаёте "ссылку" на дверь убедитесь что толщина браша меньше чем толщина модели двери.}}
 
== Применение ==
 
<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>
 
<p>В связи с этим так же используются порталы в состоянии всегда-открыт. Это обычный [http://developer.valvesoftware.com/wiki/Func_areaportal func_areaportal] с начальным значением - открыт, но не управляемый системой I/O. Они используются на границе участков с большим количеством геометрии и листьев. Например разумно было бы разместить такой эреапортал на выходе длинного коридора в комнату. Когда игрок находится внутри коридора визуализируется только то что находится перед коридором и можно увидеть из него.</p>
 
<h3>Примечание</h3>
 
<p>Не ставьте слишком много эреапорталов в одной зоне. Так как это может повысить нагрузку на процессор, бывают моменты когда просчёт (отсечение видимых областей и т.д.) эреапорталами занимает больше ресурсов чем если бы они не применялись вовсе.
 
</p><p>Так же эреапорталы не входят в общий лимит брашей. Это может быть полезным на карте с большим количеством хинт брашей.</p>
 
== Компиляция ==
 
<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>
 
<pre>Brush &lt;brush number&gt;: areaportal brush doesn't touch two areas
 
done</pre>
 
<p>Эту ошибку иногда трудно заметить по сравнению с обычной [http://developer.valvesoftware.com/wiki/Leak leak] утечкой но когда это происходит vbsp генерирует [http://developer.valvesoftware.com/wiki/Leak#Finding_leaks pointfile] что бы помочь вам как при стандартной ошибке.</p>
 
<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>
 
{{Совет|В [http://developer.valvesoftware.com/wiki/Glview glview] можно увидеть эреапорталы как серые участки.}}
 
<h3>Areaportal и вода</h3>
 
<p>Важный аспект в работе с эреапорталами: не допустимо пересечение браша эреапортала с водой. Что бы избежать пересечения портала с водой разделите его на 2 части и разместите их на разных концах браша воды.</p>
 
<h3>Слияние</h3>
 
<p>Для улучшения оптимизации порталы расположенные в одной плоскости и направленные в одну строну автоматически сливаются в один игровым движком. Если это не нужно, просто переместите браш эрепортала в другую плоскость, направте в другую сторону или просто измините размер. Смещение портала на один юнит достаточно что бы слияния не произощло.
 
</p>
 
{{Совет|Вы можете увидеть объединённые порталы введя команду <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>
 
== Консольные команды ==
 
<p>Вы можете отлаживать и тестировать эреапорталы в игре через [http://developer.valvesoftware.com/wiki/Console консоль]:</p>
 
<dl><dt>r_DrawPortals 0/1<dd> Этот параметр установелный на 1 выделяет зелёными контурами эреапортал если он открыт так же показывает проекцию (отсекающая листья) обзора игрока при просмотре сквозь него.
 
</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>) порталы и укажет работающие неправильно.
 
</dl>
 
<dl><dt>r_portalsopenall 0/1<dd> Значение 1 откроет все изначально закрытые (только если они не были закрыты <code>r_portalscloseall 1</code>) порталы.
 
</dl>
 
{{Совет|Используйте <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>Окклюдер затрачивает больше ресурсов чем открытый эреапортал.
 
</li><li>Окклюдерами можно контролировать размер скрываемой зоны.</li></ul>
 
{{Примечание|Браши окклюдера и эриапортала не должны пересекаться и сопрекосаться в противном случае они не будут работать.}}
 
== Смотрите также: ==
 
<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 Контроль Геометрии, Визуализации и Компиляции]
 
</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/Areaportal ValveDev]
 

Версия 22:34, 10 мая 2009

Сдесь был БульдозеР