Объект func_areaportal используется для контроля видимости отдельных частей карты, открывая или закрывая невидимую перегородку (портал) между ними.
Объект func_areaportal используется для оптимизации карт. Закрыв портал, часть карты, находящаяся по ту сторону портала, не будет отображаться. Благодаря этому увеличивается быстродействие карты. Принцип работы объекта func_areaportal очень похож на принцип отпирания/запирания дверей, поэтому в движке Source есть возможность привязки объекта func_areaportal к любому доступному типу дверей. До тех пор, пока двери закрыты, портал тоже закрыт и часть карты, находящаяся по ту сторону дверей (относительно игрока), не будет отображаться. Когда двери открыты – портал тоже открыт, и та часть карты, которая находится за дверью, будет отображаться.
Не обнаружены.
Объект func_areaportal не обязательно должен быть покрыт материалом tools/toolsareaportal, но с этим материалом объекты func_areaportal легко будут видны и различимы в редакторе Hammer.
Для отладки порталов предусмотрены следующие консольные команды:
Не используйте один объект func_areaportal сразу с несколькими дверями. Если открыть хотя бы одну дверь, то портал откроется. Портал закроется, когда закроется хотя бы одна дверь, даже если другие двери останутся открытыми.
Начинайте заниматься расстановкой объектов func_areaportal после того, как создадите свою карту. Как уже говорилось ранее, объект func_areaportal используется для оптимизации карт.
csssdk_func_areaportal.vmf
Игроки появляются в небольшом помещении с большим проёмом в стене, через который можно свободно выходить на улицу или входить в дом. В этом проёме расположен основной портал, состояние которого будет изменяться при помощи кнопок пульта. В дом ведут три двери, имеющие разные классы - func_door_rotating, prop_door_rotating, func_door. Для каждой двери был поставлен отдельный объект func_areaportal. В отверстии на потолке так же установлен объект func_areaportal, покрывающий отверстие полностью. На крышу здания можно попасть по лестницам внутри и снаружи здания, а так же по ящикам, поставленным на улице.
Поначалу все двери закрыты, а значит и закрыты все порталы для них, а основой портал открыт. Нажмите на правую кнопку пульта, чтобы включить отображение порталов. Порталы будут обведены бирюзовым цветом. Первое на что стоит обратить внимание – это то, что порталы выглядят плоскими, хотя в редакторе Hammer они были созданы объёмными. Дело в том, что движок Source выбирает в качестве портала только одну грань объекта func_areaportal. Это упрощает расчёты видимости и позволяет легко манипулировать порталами. Угадать какую именно грань движок возьмёт в качестве портала практически невозможно, поэтому объекты func_areaportal нужно ставить всегда наверняка, избегая проблем в будущем. Так же обратите внимание, что в редакторе Hammer для всех дверей был создан свой объект func_areaportal, но в игре некоторые порталы объединились в один большой, и образовали портал непрямоугольной формы. Объёдинённые порталы увеличивают быстродействие карты. Открытые порталы обводятся прямоугольником. Побегав немного по карте (всё ещё со включенной правой кнопкой пульта) вы можете понаблюдать за порталами.
Пришло время понять, как работают порталы. Нажмите левую кнопку пульта. Это приведёт к закрытию основного портала. В том месте где установлен основной портал и на месте отверстия в потолке сразу появится артефакт. Этот артефакт всегда появляется в той части экрана, которая не обновляется, а это означает, что движок Source ничего в этом месте не рисует, увеличивая тем самым быстродействие карты. Не забывайте, что через проём в стене или отверстие в потолке всё ещё можно свободно выйти на улицу. Выйдите на улицу и понаблюдайте за работой закрытых порталов. Обратите внимание, что находясь на улице артефакт, описанный ранее, не проявляет себя. Вместо артефакта видно небо. Это всё потому, что игрок находится на улице и видит небо (Skybox), а небо рисуется всегда, когда игрок может его видеть.
Возможно, вы уже обратили внимание, что в правой верней части экрана постоянно отображается информация об используемой видеопамяти "Texture memory usage". Использование порталов очень помогает снизить количество необходимой видеопамяти, уменьшая требования к мощности компьютера для игры на вашей карте. При тестировании вашей карты на максимальных настройках старайтесь избегать показателей "Texture memory usage" свыше 100 МБ, потому что далеко не у всех игроков есть видеокарта с количеством видеопамяти больше 128 МБ. Как правило, грамотно созданная карта не использует одновременно свыше 100 МБ текстур.
Осталось разобраться с дверями. Если вы уже многократно нажимали на кнопки, то вернитесь к тому моменту, когда основной портал закрыт (когда видны артефакты), и включите отображение порталов, используя правую кнопку на пульте. Три объёдинённых портала отсекают всё, что находится за ними. Но у самой левой двери портал не был объединён и поэтому наиболее интересен для рассмотрения. Откройте самую левую дверь, находясь внутри или снаружи помещения. Результат скорей всего будет для вас неожиданностью, если вы посмотрите через основной портал в то время пока дверь остаётся открытой. Тот участок карты, который находится за дверью будет отображён, в то время как невидимая часть карты так и останется невидимой. Объяснить это явление не так то просто – значительно проще вам посмотреть всё самим на примере.
На этой карте были допущены грубые ошибки использования объекта func_areaportal, чтобы вы не допускали таких же ошибок в будущем. Разберём эти ошибки.