Ru/Instance: Difference between revisions
Kestrelguy (talk | contribs) m (Kestrelguy moved page Примеры:ru to Instance:ru: moved to match location of English page.) |
(Update content and translate) |
||
(8 intermediate revisions by 5 users not shown) | |||
Line 1: | Line 1: | ||
{{ | {{LanguageBar|title=Вхождение}} | ||
|title= | '''Вхождение (instance)''' - это {{L|VMF|файл карты}} (<code>.vmf</code>), который используется внутри другой карты через {{ent|func_instance}}, возможно с помощью {{ent|func_instance_parms}} и/или {{ent|func_instance_io_proxy}}. | ||
{{note|While working inside | {{note|While working inside {{L|Hammer}} for all Source games, instances are currently only supported by the map compilers for {{l4d2|2}}, {{as|2}}, {{portal2|2}}, {{tf2|2}}, {{csgo|2}}, and {{Src13|2}}, and therefore will not work for any other games. To use them in unsupported games, see below.}} | ||
{{note|In {{ | {{note|In branches before {{l4d2|2}}, instances have some broken or missing functionality: instance I/O system is unsupported, instances cannot be nested, displacements within an instance may not compile properly and any {{ent|env_cubemap}}s inside of an instance will not be compiled into the final map.}} | ||
{{note|Referencing an instance in your map will make the compiled map's <code>mapversion</code> keyvalue be taken from one of the instances instead.}} | |||
Вхождения полезны в различных ситуациях: | |||
== | * Они предоставляют более динамичную альтернативу {{L|Prefab|заготовкам}}, так как любые изменения во вхождении карты будут отражены во всех его вхождениях. | ||
* Они предоставляют альтернативу {{L|Grouping and VisGrouping|видовым группам}}, так как с их помощью можно разделить большую, громоздкую карту на несколько более мелких, удобно редактируемых (над которыми могут работать несколько авторов одновременно). | |||
* Они предоставляют простой способ редактировать участки карты, которые должны располагаться под произвольным углом. Создайте карту на сетке внутри отдельной карты, а затем вставьте её в другую карту с помощью {{ent|func_instance}}, повернутого на необходимый угол. '''Это {{L|cheap|дешевле}}, чем компилировать карту с повернутой геометрией непосредственно в общем VMF-файле карты''', так как при этом получается меньше [[Ru/BSP (Source)#Браши и брашсайды|BSP граней]] (хотя это может слегка нарушить [[QPhysics]], например, сделать невозможным [[Surf|скольжение]]). | |||
* Они предоставляют способ работать с картами на нескольких платформах, как например версии {{L|Left 4 Dead}} и {{L|Left 4 Dead 2}} одной и той же карты. | |||
== Входы/выходы вхождений == | |||
=== Через func_instance_io_proxy === | |||
В {{l4d2|2}} и более поздних версиях вхождения могут отправлять и получать входы и выходы. Для использования этого функционала в экземпляре должна присутствовать и правильно настроен объект {{ent|func_instance_io_proxy}} с именем <code>proxy</code>. Чтобы отправить входные данные объекту внутри вхождения, нужно использовать следующий выход: | |||
::{| class=standard-table | ::{| class=standard-table | ||
! || My Output || Target Entity || Target Input || Parameter || Delay || Only Once | ! || My Output || Target Entity || Target Input || Parameter || Delay || Only Once | ||
|- | |- | ||
| [[ | | [[File:Io11.png]] || <выход> || <instance> || instance:<объект>;<вход> || <none> || 0.00 || No | ||
|} | |} | ||
Чтобы получить выходные данные от объекта во вхождении, будет использоваться этот выход {{ent|func_instance}}: | |||
::{| class=standard-table | ::{| class=standard-table | ||
! || My Output || Target Entity || Target Input || Parameter || Delay || Only Once | ! || My Output || Target Entity || Target Input || Parameter || Delay || Only Once | ||
|- | |- | ||
| [[ | | [[File:Io11.png]] || instance:<объект>;<выход> || <другой объект> || <вход> || <none> || 0.00 || No | ||
|} | |} | ||
== | {{note|Hammer должен автоматически обрабатывать эти входы и выходы. Они могут отображаться как нерабочие, но будут работать во время игры.}} | ||
{{ | |||
=== Без func_instance_io_proxy === | |||
В играх до Left 4 Dead 2 нет подмены входов/выходов, поэтому в этих играх (или если подмены входа/выхода необходимо избегать по другой причине) вход/выходы вхождения должен выполняться вручную. Для входов необходимо непосредственно указывать конкретное имя объекта. | |||
::{| class=standard-table | |||
! || My Output || Target Entity || Target Input || Parameter || Delay || Only Once | |||
|- | |||
| [[File:Io11.png]] || <выход> || <исправленное>-<объект> || <вход> || <none> || 0.00 || No | |||
|} | |||
Для выходов {{ent|logic_auto}} можно использовать [[AddOutput]], чтобы добавить выходы к объекту внутри вхождения. | |||
::{| class=standard-table | |||
! || My Output || Target Entity || Target Input || Parameter || Delay || Only Once | |||
|- | |||
| [[File:Io11.png]] || OnMapSpawn || <исправленное>-<объект> || AddOutput || <выход> <target_ent>:<target_input>::0:-1 || 0.00 || No | |||
|} | |||
{{note|При использовании [[TeamSpen's Hammer Addons|HammerAddons]], вместо этого нужно использовать объект <code>comp_kv_setter</code>, чтобы выходы добавлялись во время компиляции, а не во время запуска игры.}} | |||
{{note|Hammer не обрабатывает данные входы автоматически и отображает их как нерабочие, но они будут работать во время игры. Если для исправления имени объекта во вхождении установлено значение Postfix, то исправленное имя и имя объекта следует поменять местами.}} | |||
== Декларации (сборники) == | |||
Вхождения можно усовершенствовать, используя совместно с '''декларациями (manifests)'''. Декларация разделяет содержимое карты на специальные вхождения, так называемые "подкарты". В отличие от обычных вхождений Hammer может переключаться между подкартами без открытия отдельных VMF-файлов. Подкарты рассматриваются как расширения самой карты и не могут подменять имена объектов или иметь смещения, но подкарты могут использоваться в разных декларациях одновременно. | |||
Декларации могут быть полезны в различных ситуациях: | |||
* Они позволяют разным людям работать над картой одновременно. | |||
* Они помогаются защитить карты от повреждений, как например проблемы с VMF-файлом, фактически ограниченным одной подкартой. | |||
* Их можно использоваться для удобного именования разных частей карты. | |||
* Они могут упростить отслеживание исходных файлов карты в программах контроля версий наподобие Git. | |||
Декларацию можно создать в меню "Instancing". | |||
{{note|Декларации не поддерживаются в {{hammerpp|2}}. Вместо этого были дополнены инструменты вхождений, чтобы предоставить аналогичный декларациям функционал. <code>Tools -> Convert Instance to Selection</code> can be used to convert selections to instances. Middle clicking an instance in 3D view or clicking <code>Edit Instance (preview)</code> in object properties will allow editing the instance with the main map shown relative in the views.}} | |||
{{warning|Manifests should be mostly functional in any{{confirm}} version of Hammer, but in most games, [[VBSP]]'s support for manifests is unfinished and cannot compile them properly. [https://tf2maps.net/downloads/vmmc.3660/ VMMC] can collapse manifests into a single VMF before compilation, which fixes many of these issues.}} | |||
{{fix|For {{Game link|Source 2013}} mods, many of VBSP's issues can be fixed with code modifications. [https://github.com/DeathByNukes/source-sdk-2013 This fork by DeathByNukes] includes several overall manifest fixes. [https://github.com/mapbase-source/source-sdk-2013 Mapbase's repository] modifies these fixes to work in {{Game link|Half-Life 2}} mapping and also incorporates instancing fixes intended for manifests.|code}} | |||
== | == Предварительная обработка (для любой игры Source) == | ||
Для использования вхождений в неподдерживаемых версиях платформы, [http://steamcommunity.com/id/metapyziks Metapyziks] написал программу, которая объединяет используемые вхождения с основным VMF-файлом непосредственно перед компиляцией. This was originally created to enable instance support in older engine branches, but the <code>GameData</code> 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. | |||
* [https://github.com/Metapyziks/VMFInstanceInserter Set up tutorial and source code] | * [https://github.com/Metapyziks/VMFInstanceInserter Set up tutorial and source code] | ||
* [https://github.com/Metapyziks/VMFInstanceInserter/releases VMFII releases] | * [https://github.com/Metapyziks/VMFInstanceInserter/releases VMFII releases] | ||
== | == Смотреть также == | ||
* | * {{L|L4D2 Level Design/VMF Instances}} - Инструкция от Valve об использовании вхождений в {{l4d2|2}}. | ||
* | * {{L|Working with instances}} - Инструкция об использовании вхождений в {{Portal2|2}}. | ||
== | == Внешние ссылки == | ||
* [http://www.youtube.com/watch?v=YvSZ2NEX1Y0 Source SDK Tutorial - Manifest Tool (YouTube)] | * [http://www.youtube.com/watch?v=YvSZ2NEX1Y0 Source SDK Tutorial - Manifest Tool (YouTube)] | ||
* [http://tf2maps.net/threads/mapping-collaboration-or-using-manifest-and-version-control.24787/ Manifests and Version Control Tutorial (TF2Maps.net)] | * [http://tf2maps.net/threads/mapping-collaboration-or-using-manifest-and-version-control.24787/ Manifests and Version Control Tutorial (TF2Maps.net)] | ||
* [https://tf2maps.net/downloads/vmmc.3660/ Valve Map Manifest Collapser (VMMC)] | |||
{{ACategory|Glossary}} | |||
{{ACategory|Level Design}} | |||
{{ACategory|Left 4 Dead 2}} | |||
{{ACategory|Alien Swarm}} | |||
{{ACategory|Portal 2}} | |||
[[Category:Instances|*]] | [[Category:Instances|*]] | ||
[[Category:Russian]] |
Latest revision as of 10:14, 31 May 2025
Вхождение (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.