Ru/Prefab: Difference between revisions

From Valve Developer Community
< Ru
Jump to navigation Jump to search
m (Setting bug notice hidetested=1 param on page where the bug might not need tested in param specified)
 
(26 intermediate revisions by 6 users not shown)
Line 1: Line 1:
{{otherlang2
{{LanguageBar|title = Заготовка}}
|title=Префабы
|en=Prefab
}}


'''Префаб''' означает '''предварительно собранный''', и является отдельно сохраненным объектом, состоящим, как правило, из различных частей: брашей, пропов или сущностей. Система префабов позволяет легко хранить части ваших уровней, которые можно использовать неоднократно. Примеры полезных префабов включают коридоры, столбы, специально установленные сущности, и т.д..


Префабы - это просто маленькие файлы карт (.[[VMF]]), которые содержат только ваш префаб. Эти файлы хранятся в определенной папке, обычно <code>\sourcesdk\bin\prefabs</code>, чтобы [[Valve Hammer Editor|Хаммер]] мог легко их найти и вставить в ваш уровень.
'''Заготовка''' является отдельно сохраненным объектом, как правило состоящий из различных частей: элементов и объектов мира. Система заготовок позволяет легко хранить части ваших карт, которые можно использовать многократно. Примеры полезных заготовок включают коридоры, столбы, специальные инсталляции объектов, и т.д..


'''Примечание:''' В играх orangebox, убедитесь, что используете <code>\sourcesdk\bin\orangebox\bin\prefabs</code>
Заготовки - это простые маленькие файлы карт (.{{L|VMF}}), которые содержат только вашу заготовку. Эти файлы хранятся в определенной директории, обычно <code>\sourcesdk\bin\prefabs</code>, чтобы {{L|Valve Hammer Editor|редактор карт}} мог их найти и Вы могли легко вставить их на ваши карты.


Префабы можно выстраивать по иерархии, просто добавляя их в подпапки каталога <code>\prefabs</code>. Это позволяет сортировать их на основе принадлежности к карте или моду, тем самым облегчая поиск.
'''Примечание:''' Убедитесь, что в играх orangebox используете <code>\sourcesdk\bin\orangebox\bin\prefabs</code>


== Создание префабов ==
Заготовки можно выстраивать по иерархии, просто добавляя их в поддиректории <code>\prefabs</code>. Это позволяет сортировать их на основе принадлежности к карте или модифцикации, что облегчает их поиск.
Следующие шаги позволяют создавать префабы в Хаммере:
# Если префабы предназначены для взаимодействия с поименованными объектами внутри себя, в конце имени каждого объекта добавляем маркер "_&i". См. ниже [[#Prefab tokens|Маркер префабов]].
# Выделите объекты, которые нужно добавить в префаб (зажав {{key|Ctrl}}).
# Если вы планируете вставлять префаб, используя [[Entity Tool]], то начало координат (0,0,0) вашей карты будет использовано в качестве точки отсчета, поэтому желательно перенести выбранные объекты в эту точку и центрировать префаб по ней.
# Нажмите кнопку '''Create Prefab''' на [[Hammer New Objects Toolbar|панели объектов]], или выберите команду '''Create Prefab''' в [[Hammer_Tools_Menu|меню инструментов]]. (Горячая клавиша: {{key|Ctrl+R}})
# Откроется диалог '''Save As...''', показывая каталог префабов Хаммера. Впишите имя файла и сохраните префаб, нажав кнопку '''Save'''. {{note:ru|К файлу автоматически добавляется расширение ''.vmf'', однако некоторые пользователи имели опыт отсутствия такового. Чтобы перестраховаться, припишите файлу расширение ''.vmf''. Также, это расширение можно добавить позже, открыв папку префабов.}} {{bug:ru|После сохранения самого первого префаба Хаммер может закрыться.}}
# Теперь новый префаб будет доступен для вставки на [[Hammer New Objects Toolbar|панели объектов]].


=== Маркер префабов ===
== Создание заготовок ==
К именам сущностей внутри префаба можно добавить специальный ''маркер'' "&i", так что на карте им будет присвоен уникальный номер. Маркер может включаться в [[targetname]], [[Inputs and Outputs|inputs and outputs]], и т.д.. Все маркеры в префабе будут заменены на тот же номер. Это позволяет сущностям внутри префабов не ссылаться на другие префабы.
Заготовки в Хаммере создаются так:
# Если заготовки предназначены для взаимодействия с поименованными объектами внутри себя, то в конце имени каждого объекта добавляем маркер "_&i". См. ниже [[#Prefab tokens|Маркер заготовок]].
# Выделите объекты, которые нужно добавить в заготовку (зажав {{key|Ctrl}}).
# Если Вы планируете вставлять заготовку с помощью {{L|Entity Tool}}, то в качестве точки отсчёта будет выбрано начало координат (0,0,0) вашей карты, поэтому желательно перенести выбранные объекты в эту точку и центрировать заготовку по ней.
# Нажмите кнопку '''Create Prefab''' на {{L|Hammer New Objects Toolbar|панели объектов}}, или выберите команду '''Create Prefab''' в {{L|Hammer_Tools_Menu|меню инструментов}}. (Горячая клавиша: {{key|Ctrl+R}})
# Откроется диалог '''Save As...''', показывая каталог заготовок Хаммера. Впишите имя файла и сохраните заготовку, нажав кнопку '''Save'''. {{note|К файлу автоматически добавляется расширение ''.vmf'', однако у некоторых пользователей его не было. Чтобы перестраховаться, припишите файлу расширение ''.vmf''. Также, это расширение можно добавить позже, открыв папку заготовок.}} {{bug|hidetested=1|После сохранения самой первой заготовки Хаммер может закрыться.}}
# Теперь новая заготовка будет доступена для вставки на {{L|Hammer New Objects Toolbar|панели объектов}}.


Например, сущность [[func_door]] с именем "door_sliding_&i" в префабе, на карте станет называться "door_sliding_1". В последующих префабах она будет называться "door_sliding_2", "door_sliding_3", ...
=== Маркер заготовок ===
К именам объектов внутри заготовки можно добавить специальный ''маркер'' "&i", так что на карте им будет присвоен уникальный номер. Маркер может включаться в {{L|targetname|имя}}, {{L|Inputs and Outputs|входы и выходы}}, и т.д.. Все маркеры в заготовкуе будут заменены на тот же номер. Это позволяет объектам внутри заготовок не ссылаться на другие заготовки.


Триггеру [[trigger_multiple]], включенному в ''один префаб'' с триггером "door_sliding_&i", который он запускает, будет присвоен тот же номер, что и двери.
Например, объект {{L|func_door}} с именем "door_sliding_&i" в заготовке, на карте станет называться "door_sliding_1". В последующих заготовках он будет называться "door_sliding_2", "door_sliding_3", ...


{{note:ru|Другие значения, как например прикрепленные к префабу [[env_cubemap|кубмапы]], не будут сохраняться, и будут сброшены при каждой вставке.}}
Триггеру {{L|trigger_multiple}}, добаленному в ''одну заготовку'' с триггером "door_sliding_&i", который он запускает, будет присвоен тот же номер, что и двери.


{{tip:ru|Используйте звездочку (*) в фильтре поиска префабов, использующих подстановку. Например, поиск ''door_*'' выдаст ''door_1'', ''door_2'', ''door_red_7'', etc.}}
{{note|Другие элементы, как например поверхности элементов указанные в добавленном в заготовку {{L|env_cubemap|кубмапы}}, сохраняться не будут, и отбрасываются при каждой вставке.}}


== Вставка префабов ==
{{tip|Используйте звездочку (*) в фильтре поиска заготовок, использующих подстановку. Например, поиск ''door_*'' выдаст ''door_1'', ''door_2'', ''door_red_7'', и т.д..}}
[[Image:hammer_newobjects.jpg|right]]


Готовый префаб очень просто вставить на карту.
== Вставка заготовок ==
[[File:hammer_newobjects.jpg|right]]
 
Готовую заготовку очень просто вставить на карту.


Есть два способа: с помощью {{Hammer entity}}, или {{Hammer block}}.
Есть два способа: с помощью {{Hammer entity}}, или {{Hammer block}}.


В целом, процедура одинакова в обоих случаях: сперва определитесь с инструментом, затем на [[Hammer New Objects Toolbar|панели объектов]] выберите префаб, и вставьте его в одно из окон.
В целом, процедура одинакова в обоих случаях: сперва определитесь с инструментом, затем на {{L|Hammer New Objects Toolbar|Панели объектов}} выберите заготовку, и вставьте её в одно из окон.


Инструмент {{Hammer entity}}, используемый чаще всего, сохраняет исходный размер префаба. Инструмент {{Hammer block}} допускает изменение размера префаба.
Инструмент {{Hammer entity}}, используемый чаще всего, сохраняет исходный размер заготовки. Инструмент {{Hammer block}} допускает изменение размера заготовки.


{{tip|После того, как вы выберите способ создания префаба (Entity Tool или Block Tool), на панели объектов появится кнопка '''Insert original prefab'''. Используйте её, чтобы вставить префаб в центр окна 2D-вида. После этого можно префаб можно двигать куда угодно. Убедитесь, что включена [[Hammer_Map_Operations_Toolbar|Texture Locking]]!}}{{clr}}
{{tip|После того, как Вы выбрали способ создания заготовки (Entity Tool или Block Tool), на панели объектов появится кнопка '''Insert original prefab''' (вставить оригинальную заготовку). Используйте её, чтобы вставить заготовку в центр окна 2D-вида. После этого заготовку можно двигать куда угодно. Убедитесь, что включена {{L|Hammer_Map_Operations_Toolbar|Texture Locking}}!}}{{clr}}


=== Использование Entity Tool ===
=== Использование Entity Tool ===
[[Image:InsertPrefabTut1.png|right|200px]]
[[File:InsertPrefabTut1.png|right|200px]]
[[Image:InsertPrefabTut2.png|right|200px]]
[[File:InsertPrefabTut2.png|right|200px]]
[[Image:InsertPrefabTut3.png|right|200px]]
[[File:InsertPrefabTut3.png|right|200px]]


Используйте {{Hammer entity}}, чтобы разместить префаб в исходном размере.
Чтобы разместить заготовку в исходном размере, используйте {{Hammer entity}}.


# Выберите {{Hammer entity}} на панели инструментов. (Горячие клавиши: {{key|Shift+E}})
# Выберите {{Hammer entity}} на панели инструментов. (Горячие клавиши: {{key|Shift+E}})
# На панели [[Hammer New Objects Toolbar|Object bar]], в поле '''Categories:''' выберите Prefabs.
# На панели {{L|Hammer New Objects Toolbar|Object bar}}, в поле '''Categories:''' выберите Prefabs.
# В поле '''Objects:''' выберите из списка нужный префаб.
# В поле '''Objects:''' выберите из списка нужный префаб.
# Щелкните в окне 2D-вида в том месте, куда хотите поместить префаб. В качестве альтернативы, вы можете щелкнуть в окне 3D-вида, после чего префаб будет вставляться автоматически.
# Щелкните в окне 2D-вида в том месте, куда хотите поместить заготовку. В качестве альтернативы, Вы можете щелкнуть в окне 3D-вида, после чего заготовка будет вставляться автоматически.
# Нажмите {{key|Return}} или {{key|Enter}}, чтобы вставить префаб.
# Нажмите {{key|Return}} или {{key|Enter}}, чтобы вставить заготовку.


=== Использование Block Tool ===
=== Использование Block Tool ===
Используйте {{Hammer block}}, чтобы разместить префаб в нужном масштабе.
Чтобы разместить заготовку в нужном масштабе, используйте {{Hammer block}}.


Как отмасштабировать префаб в нужном размере:
Как вставить заготовку нужного размера:
# На панели инструментов выберите {{Hammer block}}. (Горячие клавиши: {{key|Shift+B}})
# На панели инструментов выберите {{Hammer block}}. (Горячие клавиши: {{key|Shift+B}})
# На панели [[Hammer New Objects Toolbar|Object bar]], в поле '''Categories:''' выберите Prefabs.
# На панели {{L|Hammer New Objects Toolbar|Object bar}}, в поле '''Categories:''' выберите Prefabs.
# В поле '''Objects:''' выберите из списка нужный префаб.
# В поле '''Objects:''' выберите из списка нужную заготовку.
# В окне 2D-вида начертите прямоугольник, убедившись, что его размер и положение во всех окнах редактора соответствуют вашим требованиям.
# В окне 2D-вида выделите прямоугольник, убедившись, что его размер и положение во всех окнах редактора соответствуют вашим требованиям.
# Нажмите {{key|Return}} или {{key|Enter}}, чтобы вставить префаб. Он будет отмасштабирован по начерченному прямоугольнику.
# Нажмите {{key|Return}} или {{key|Enter}}, чтобы вставить заготовку. Она будет списана в выделенный прямоугольник.
{{clr}}
{{clr}}


Обратите внимание, что любой вставленный префаб автоматически [[group|группируется]], и если вам нужно переместить отдельный объект, то префаб следует разгруппировать.
Обратите внимание, что любая вставленная заготовка автоматически {{L|Grouping and VisGrouping|группируется}}, и если Вам нужно переместить отдельный объект из заготовки, то её следует разгруппировать.


== The Skip tool texture ==
== Текстура Skip tool ==


A prefab typically consists of many objects that you want to move or copy somewhere, and if the prefab happens to be of an odd size, you may end up with components ending up not exactly where you want them. You can prevent this by enveloping the prefab inside a [[skip]] [[tool texture]]:
Обычно, заготовка состоит из множества объектов, которые Вам нужно куда-либо переместить или скопировать, и если заготовка имеет неопределенный размер, то его компоненты могут оказаться в неожиданных местах. Вы можете этого избежать, окружив заготовку {{L|tool texture|текстурой}} {{L|skip}}:


# Set the grid size to a the maximum size that you expect to move the prefab in. (Typically you plan the [[skip]] brush to be a size of about 4x4x4 grid squares.)
# Установите размер сетки на максимальный, на который желаете перемещать заготовку. (Обычно, элемент карты {{L|skip}} рисуется с размерами 4x4x4.)
# Create a brush enveloping all the components of the prefab.
# Создайте элемент карты, охватывающий все компоненты префаба.
# Cover every side of the brush with the [[skip]] [[tool texture]].
# Покройте его со всех сторон {{L|tool texture|служебной текстурой}} {{L|skip}}.
# Select all the components of the prefab (''including'' the [[skip]] brush) and save it.
# Выберите все компоненты заготовки, (''включая'' браш {{L|skip}}) и сохраните его.


The positions of the components inside the brush are now relative to the enveloping [[skip]] brush, and the even size of the brush makes the movements of every component on par with the Hammer editor's graph. As the brush is covered in a [[skip]] [[tool texture]], it will not be compiled with the map.
Теперь положение компонентов внутри элементы карты соотнесено с ним, и браш будет выравнивать их по графике Хаммера. Поскольку элемент карты покрыт {{L|tool texture|служебной текстурой}} {{L|skip}}, он не компилируется с картой.


== Available prefabs ==
== Готовые заготовки ==
For a list of prefabs that are already available in the Source SDK, see [[:Category:Prefabs]].
Список готовых заготовок в Source SDK см.


== See also ==
== См. также ==


* [[func_instance]] - An advanced dynamic alternative to prefabs, available for the [[Counter-Strike: Global Offensive]], [[Left 4 Dead 2]], [[Alien Swarm]] and [[Portal 2]] engines.
* {{L|func_instance}} - это продвинутая альтернатива для заготовок, доступная на платформах {{L|Counter-Strike: Global Offensive}}, {{L|Left 4 Dead 2}}, {{L|Alien Swarm}} и {{L|Portal 2}}.


== External links ==
== Внешние ссылки ==
The following sites host custom made prefabs and models:
Ниже представлены сайты, которые изготавливают заготовки и модели:


* [http://halflife2.filefront.com/files/Half-Life_2/Prefabs;2654 (HL2) File Front prefab database]
* [https://halflife2.filefront.com/files/Half-Life_2/Prefabs;2654 (HL2) File Front prefab database]
* [http://www.fpsbanana.com/prefabs/games/2 (CS:S) FPSBANANA prefab database]
* [https://www.fpsbanana.com/prefabs/games/2 (CS:S) FPSBANANA prefab database]
* [http://z15.invisionfree.com/Biwdc_Forums/index.php?showtopic=8 Half-life 2 Prefabs(Biwdc Forums)]
* [https://z15.invisionfree.com/Biwdc_Forums/index.php?showtopic=8 Half-life 2 Prefabs(Biwdc Forums)]


[[Category:Hammer]]
{{ACategory|Hammer}}
[[Category:Level Design]]
{{ACategory|Level Design}}
[[Category:Glossary]]

Latest revision as of 07:16, 20 May 2025

English (en)Русский (ru)中文 (zh)Translate (Translate)


Заготовка является отдельно сохраненным объектом, как правило состоящий из различных частей: элементов и объектов мира. Система заготовок позволяет легко хранить части ваших карт, которые можно использовать многократно. Примеры полезных заготовок включают коридоры, столбы, специальные инсталляции объектов, и т.д..

Заготовки - это простые маленькие файлы карт (.VMF(en)), которые содержат только вашу заготовку. Эти файлы хранятся в определенной директории, обычно \sourcesdk\bin\prefabs, чтобы редактор карт(en) мог их найти и Вы могли легко вставить их на ваши карты.

Примечание: Убедитесь, что в играх orangebox используете \sourcesdk\bin\orangebox\bin\prefabs

Заготовки можно выстраивать по иерархии, просто добавляя их в поддиректории \prefabs. Это позволяет сортировать их на основе принадлежности к карте или модифцикации, что облегчает их поиск.

Создание заготовок

Заготовки в Хаммере создаются так:

  1. Если заготовки предназначены для взаимодействия с поименованными объектами внутри себя, то в конце имени каждого объекта добавляем маркер "_&i". См. ниже Маркер заготовок.
  2. Выделите объекты, которые нужно добавить в заготовку (зажав Ctrl).
  3. Если Вы планируете вставлять заготовку с помощью Entity Tool(en), то в качестве точки отсчёта будет выбрано начало координат (0,0,0) вашей карты, поэтому желательно перенести выбранные объекты в эту точку и центрировать заготовку по ней.
  4. Нажмите кнопку Create Prefab на панели объектов(en), или выберите команду Create Prefab в меню инструментов(en). (Горячая клавиша: Ctrl+R)
  5. Откроется диалог Save As..., показывая каталог заготовок Хаммера. Впишите имя файла и сохраните заготовку, нажав кнопку Save.
    Note.pngПримечание:К файлу автоматически добавляется расширение .vmf, однако у некоторых пользователей его не было. Чтобы перестраховаться, припишите файлу расширение .vmf. Также, это расширение можно добавить позже, открыв папку заготовок.
    Icon-Bug.pngБаг:После сохранения самой первой заготовки Хаммер может закрыться.
  6. Теперь новая заготовка будет доступена для вставки на панели объектов(en).

Маркер заготовок

К именам объектов внутри заготовки можно добавить специальный маркер "&i", так что на карте им будет присвоен уникальный номер. Маркер может включаться в имя(en), входы и выходы(en), и т.д.. Все маркеры в заготовкуе будут заменены на тот же номер. Это позволяет объектам внутри заготовок не ссылаться на другие заготовки.

Например, объект func_door(en) с именем "door_sliding_&i" в заготовке, на карте станет называться "door_sliding_1". В последующих заготовках он будет называться "door_sliding_2", "door_sliding_3", ...

Триггеру trigger_multiple(en), добаленному в одну заготовку с триггером "door_sliding_&i", который он запускает, будет присвоен тот же номер, что и двери.

Note.pngПримечание:Другие элементы, как например поверхности элементов указанные в добавленном в заготовку кубмапы(en), сохраняться не будут, и отбрасываются при каждой вставке.
Tip.pngСовет:Используйте звездочку (*) в фильтре поиска заготовок, использующих подстановку. Например, поиск door_* выдаст door_1, door_2, door_red_7, и т.д..

Вставка заготовок

Hammer newobjects.jpg

Готовую заготовку очень просто вставить на карту.

Есть два способа: с помощью Entity tool Mt-entities.png, или Block tool Hammer block.png.

В целом, процедура одинакова в обоих случаях: сперва определитесь с инструментом, затем на Панели объектов(en) выберите заготовку, и вставьте её в одно из окон.

Инструмент Entity tool Mt-entities.png, используемый чаще всего, сохраняет исходный размер заготовки. Инструмент Block tool Hammer block.png допускает изменение размера заготовки.

Tip.pngСовет:После того, как Вы выбрали способ создания заготовки (Entity Tool или Block Tool), на панели объектов появится кнопка Insert original prefab (вставить оригинальную заготовку). Используйте её, чтобы вставить заготовку в центр окна 2D-вида. После этого заготовку можно двигать куда угодно. Убедитесь, что включена Texture Locking(en)!

Использование Entity Tool

InsertPrefabTut1.png
InsertPrefabTut2.png
InsertPrefabTut3.png

Чтобы разместить заготовку в исходном размере, используйте Entity tool Mt-entities.png.

  1. Выберите Entity tool Mt-entities.png на панели инструментов. (Горячие клавиши: Shift+E)
  2. На панели Object bar(en), в поле Categories: выберите Prefabs.
  3. В поле Objects: выберите из списка нужный префаб.
  4. Щелкните в окне 2D-вида в том месте, куда хотите поместить заготовку. В качестве альтернативы, Вы можете щелкнуть в окне 3D-вида, после чего заготовка будет вставляться автоматически.
  5. Нажмите Return или Enter, чтобы вставить заготовку.

Использование Block Tool

Чтобы разместить заготовку в нужном масштабе, используйте Block tool Hammer block.png.

Как вставить заготовку нужного размера:

  1. На панели инструментов выберите Block tool Hammer block.png. (Горячие клавиши: Shift+B)
  2. На панели Object bar(en), в поле Categories: выберите Prefabs.
  3. В поле Objects: выберите из списка нужную заготовку.
  4. В окне 2D-вида выделите прямоугольник, убедившись, что его размер и положение во всех окнах редактора соответствуют вашим требованиям.
  5. Нажмите Return или Enter, чтобы вставить заготовку. Она будет списана в выделенный прямоугольник.

Обратите внимание, что любая вставленная заготовка автоматически группируется(en), и если Вам нужно переместить отдельный объект из заготовки, то её следует разгруппировать.

Текстура Skip tool

Обычно, заготовка состоит из множества объектов, которые Вам нужно куда-либо переместить или скопировать, и если заготовка имеет неопределенный размер, то его компоненты могут оказаться в неожиданных местах. Вы можете этого избежать, окружив заготовку текстурой(en) skip(en):

  1. Установите размер сетки на максимальный, на который желаете перемещать заготовку. (Обычно, элемент карты skip(en) рисуется с размерами 4x4x4.)
  2. Создайте элемент карты, охватывающий все компоненты префаба.
  3. Покройте его со всех сторон служебной текстурой(en) skip(en).
  4. Выберите все компоненты заготовки, (включая браш skip(en)) и сохраните его.

Теперь положение компонентов внутри элементы карты соотнесено с ним, и браш будет выравнивать их по графике Хаммера. Поскольку элемент карты покрыт служебной текстурой(en) skip(en), он не компилируется с картой.

Готовые заготовки

Список готовых заготовок в Source SDK см.

См. также

Внешние ссылки

Ниже представлены сайты, которые изготавливают заготовки и модели: