Вхождение
Вхождение (instance) - это файл карты (.vmf
), который используется внутри другой карты через func_instance, возможно с помощью func_instance_parms и/или func_instance_io_proxy.










mapversion
keyvalue be taken from one of the instances instead.Вхождения полезны в различных ситуациях:
- Они предоставляют более динамичную альтернативу заготовкам , так как любые изменения во вхождении карты будут отражены во всех его вхождениях.
- Они предоставляют альтернативу видовым группам , так как с их помощью можно разделить большую, громоздкую карту на несколько более мелких, удобно редактируемых (над которыми могут работать несколько авторов одновременно).
- Они предоставляют простой способ редактировать участки карты, которые должны располагаться под произвольным углом. Создайте карту на сетке внутри отдельной карты, а затем вставьте её в другую карту с помощью func_instance, повернутого на необходимый угол. Это дешевле , чем компилировать карту с повернутой геометрией непосредственно в общем VMF-файле карты, так как при этом получается меньше BSP граней (хотя это может слегка нарушить QPhysics, например, сделать невозможным скольжение).
- Они предоставляют способ работать с картами на нескольких платформах, как например версии Left 4 Dead и Left 4 Dead 2 одной и той же карты.
Входы/выходы вхождений
Через func_instance_io_proxy
В Left 4 Dead 2 и более поздних версиях вхождения могут отправлять и получать входы и выходы. Для использования этого функционала в экземпляре должна присутствовать и правильно настроен объект func_instance_io_proxy с именем
proxy
. Чтобы отправить входные данные объекту внутри вхождения, нужно использовать следующий выход:
Чтобы получить выходные данные от объекта во вхождении, будет использоваться этот выход func_instance:

Без func_instance_io_proxy
В играх до Left 4 Dead 2 нет подмены входов/выходов, поэтому в этих играх (или если подмены входа/выхода необходимо избегать по другой причине) вход/выходы вхождения должен выполняться вручную. Для входов необходимо непосредственно указывать конкретное имя объекта.
Для выходов logic_auto можно использовать AddOutput, чтобы добавить выходы к объекту внутри вхождения.

comp_kv_setter
, чтобы выходы добавлялись во время компиляции, а не во время запуска игры.
Декларации (сборники)
Вхождения можно усовершенствовать, используя совместно с декларациями (manifests). Декларация разделяет содержимое карты на специальные вхождения, так называемые "подкарты". В отличие от обычных вхождений Hammer может переключаться между подкартами без открытия отдельных VMF-файлов. Подкарты рассматриваются как расширения самой карты и не могут подменять имена объектов или иметь смещения, но подкарты могут использоваться в разных декларациях одновременно.
Декларации могут быть полезны в различных ситуациях:
- Они позволяют разным людям работать над картой одновременно.
- Они помогаются защитить карты от повреждений, как например проблемы с VMF-файлом, фактически ограниченным одной подкартой.
- Их можно использоваться для удобного именования разных частей карты.
- Они могут упростить отслеживание исходных файлов карты в программах контроля версий наподобие Git.
Декларацию можно создать в меню "Instancing".


Tools -> Convert Instance to Selection
can be used to convert selections to instances. Middle clicking an instance in 3D view or clicking Edit Instance (preview)
in object properties will allow editing the instance with the main map shown relative in the views.



Предварительная обработка (для любой игры Source)
Для использования вхождений в неподдерживаемых версиях платформы, Metapyziks написал программу, которая объединяет используемые вхождения с основным VMF-файлом непосредственно перед компиляцией. This was originally created to enable instance support in older engine branches, but the GameData
method has since rendered it mostly obsolete. However, it would theoretically be possible for someone to fork the program to add additional functionality, such as instance I/O support or the ability to toggle VisGroups with a fixup variable.
Смотреть также
- L4D2 Level Design/VMF Instances - Инструкция от Valve об использовании вхождений в
Left 4 Dead 2.
- Working with instances - Инструкция об использовании вхождений в
Portal 2.