linked_portal_door

From Valve Developer Community
< Ru
Jump to navigation Jump to search
English (en)Русский (ru)中文 (zh)Translate (Translate)
C++ Классовая структура
CLinkedPortalDoor
CBaseAnimating
CBaseEntity
Пример мирового портала: он соединяется с комнатой такого же размера с белой плиткой.

Portal 2 linked_portal_door - это объект модель(en), доступно для Portal 2 Portal 2 и Strata Source Strata Source. Это особый вид сущности portal(en) без каких-либо эффектов, который может быть использован для незаметного соединения удалённых частей карты. Эти порталы прямоугольны, а также игроки могут стрелять своей портальной пушкой через них. Их часто называют мировыми порталами(англ. world portals) в сообществе, ссылаясь на факт того, что они бесшовно соединяются с картой, вместо размещения игроком или тестовым элементом.

В стандартном FGD(en), эта сущность выглядит как сеть координат. Красная ось является нормалью к поверхности портала, зелёная обозначает ширину, а синяя - высоту. У изначальной модели отсутствуют направляющие индикаторы для этих осей, поэтому необходимо использовать дополнительные линии осей, появляющиеся при выборе объекта, чтобы определить лицевую сторону.

Хоть это и мощная сущность, у неё есть ряд ошибок и особенностей, которые необходимо учитывать при использовании:

Icon-Bug.pngБаг:
  • Наличие твёрдого, движущегося brush entity(en) вблизи портала заставляет его закрыться. Не двигающиеся brush entity и анимированные или движущиеся prop(en)-ы работают нормально.
  • Lasers(en), проходящие через мировые порталы, будут иметь смещённые точки выхода в зависимости от расстояния до стены за этим порталом. Если вы используете в одной карте мировые порталы вместе с лазерами, убедитесь, что прямо за порталом есть стена, иначе лазеры не будут проходить правильно.
Warning.pngПредупреждение:
  • По умолчанию, больше 4 порталов на экране (включая обычные порталы, но не учитывая порталы видимые сквозь другие порталы) вызовут серьёзные графические баги. Это можно исправить/обойти изменив переменную r_portal_fastpath на 0 у клиента. Само по себе это не вызывает известных негативных эффектов, хотя большое количество видимых порталов одновременно приведёт к ухудшению производительности.
  • На низких настройках графики мировые порталы могут перестать отображаться на расстоянии или при взгляде сквозь другой портал, поэтому желательно удостовериться, что за порталом есть что-то (заместо nodraw).
Note.pngПримечание:
  • На самом деле портал появляется на 0.5 юнита впереди позиции сущности, так что для создания незаметного соединения его следует сместить на 0.5 юнита назад с помощью transform tool в hammer (Ctrl+M).
  • Перемещение объекта не изменяет положение портала динамически (даже с включённым sv_allow_mobile_portals), для обновления его позиции необходимо отправить ввод Enable.
  • Порталы односторонние, задняя часть не отображается.
  • Падение игроков будет откорректировано в портал если переменная sv_player_funnel_into_portals включена, как и в случае с обычными порталами.

Примеры использований

Невозможная комната в Portal 2.

Все уровни во встроенном редакторе используют мировые порталы для соединения выходных и входных лифтов с соответствующими коридорами; это позволяет избежать необходимости делать пространства для дверей слишком большими, чтобы вместить шахты лифтов. Они также используются дважды в кампании (в отличие от утверждений комментариев разработчиков, что их используют только один раз): на карте пробуждения ГЛаДОС, где они соединяют шахту доменной печи с её камерой, и в Финале 2, где они соединяют тест-"смертельную ловушку" с основной картой. Это единственные случаи использования этой сущности в финальной версии игры.

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

Мировые порталы также широко используются в The Stanley Parable для участков, которые бесконечно повторяются или где возврат по маршруту ведёт игрока в совершенно другое место, вместо того откуда он пришёл.

Keyvalues

Name (targetname) <объект источник(en)>
Имя объекта, по которому другие объекты могут ссылаться на этот объект, через Входы/Выходы(en) или другие ключ-параметры(en) (например parentname(en) или target).
Оно отображается на 2D-видах в Hammer и Отчёте об объектах (Entity Report)(en).
См. также: Основные ключ-параметры, входы и выходы(en) доступные для всех объектов
Width (width) <целое число(en)>
1/2 ширины желаемого портала. Должно быть меньше 1024 и совпадать с соответствующим свойством партнёра.
Height (height) <целое число(en)>
1/2 высоты желаемого портала. Должно быть меньше 1024 и совпадать с соответствующим свойством партнёра.
Static Portal (isstatic) <булева переменная(en)> (только в Strata Source)
Если установлено на true, то этот портал не будет двигаться или переключаться, а также позволит VRAD проливать свет через него.
Note.pngПримечание: Чтобы VRAD(en) компилировал статичный свет через мировые порталы ему нужен аргумент -PortalTraversalLighting, а для компиляции AO через мировые порталы VRAD необходим аргумент -PortalTraversalAO.
Start Active (startactive) <булева переменная(en)>
Надо ли активировать соединение с другим порталом изначально
Note.pngПримечание: (Начиная с DLC1) Это создаст сущность logic_auto(en) где-то на вашей карте. Движок попытается сообщить, что у logic_auto есть неверные входы/выходы. Можно спокойно проигнорировать это.
LinkedPortalDoor:
Linked Partner (partnername) <целевой объект(en)>
Another 'linked_portal_door' entity which will link to this one.

Inputs

LinkedPortalDoor:
SetPartner <строка(en)>
Set a new partner door.
Open
Open the door and cause the portal to activate.
Close
Close the door and cause the portal to deactivate.

Outputs

LinkedPortalDoor:
OnOpen
Called when the door has started its open animation.
OnClose
Called when the door has started its close animation.
OnEntityTeleportFromMe
Called when an entity enters this linked portal.
OnPlayerTeleportFromMe
Called when the player enters this linked portal.
OnEntityTeleportToMe
Called when an entity exits this linked portal.
OnPlayerTeleportToMe
Called when the player exits this linked portal.

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