Ru/Prefab: Difference between revisions

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


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


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


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


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


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


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


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


Триггеру [[trigger_multiple]], включенному в ''один префаб'' с триггером "door_sliding_&i", который он запускает, будет присвоен тот же номер, что и двери.
Триггеру {{L|trigger_multiple}}, добаленному в ''одну заготовку'' с триггером "door_sliding_&i", который он запускает, будет присвоен тот же номер, что и двери.


{{note|Другие элементы, как например прикрепленные к префабу [[env_cubemap|кубмапы]], сохраняться не будут, и отбрасываются при каждой вставке.}}
{{note|Другие элементы, как например поверхности элементов указанные в добавленном в заготовку {{L|env_cubemap|кубмапы}}, сохраняться не будут, и отбрасываются при каждой вставке.}}


{{tip|Используйте звездочку (*) в фильтре поиска префабов, использующих подстановку. Например, поиск ''door_*'' выдаст ''door_1'', ''door_2'', ''door_red_7'', и т.д..}}
{{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}}


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


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


Обычно, префаб состоит из множества объектов, которые вам нужно куда-либо переместить или скопировать, и если префаб имеет неопределенный размер, то его компоненты могут оказаться в неожиданных местах. Вы можете этого избежать, окружив префаб [[tool texture|текстурой]] [[skip:ru|skip]]:
Обычно, заготовка состоит из множества объектов, которые Вам нужно куда-либо переместить или скопировать, и если заготовка имеет неопределенный размер, то его компоненты могут оказаться в неожиданных местах. Вы можете этого избежать, окружив заготовку {{L|tool texture|текстурой}} {{L|skip}}:


# Установите размер сетки на максимальный, на который желаете перемещать префаб. (Обычно, браш [[skip:ru|skip]] рисуется с размерами 4x4x4.)
# Установите размер сетки на максимальный, на который желаете перемещать заготовку. (Обычно, элемент карты {{L|skip}} рисуется с размерами 4x4x4.)
# Создайте браш, охватывающий все компоненты префаба.
# Создайте элемент карты, охватывающий все компоненты префаба.
# Покройте его со всех сторон [[tool texture:ru|текстурой]] [[skip:ru|skip]].
# Покройте его со всех сторон {{L|tool texture|служебной текстурой}} {{L|skip}}.
# Выберите все компоненты префаба, (''включая'' браш [[skip:ru|skip]]) и сохраните его.
# Выберите все компоненты заготовки, (''включая'' браш {{L|skip}}) и сохраните его.


Теперь положение компонентов внутри браша соотнесено с ним, и браш будет выравнивать их по графике Хаммера. Поскольку браш конвертирован в [[tool texture|текстуру]] [[skip:ru|skip]], он не компилируется с картой.
Теперь положение компонентов внутри элементы карты соотнесено с ним, и браш будет выравнивать их по графике Хаммера. Поскольку элемент карты покрыт {{L|tool texture|служебной текстурой}} {{L|skip}}, он не компилируется с картой.


== Готовые префабы ==
== Готовые заготовки ==
Список готовых в Source SDK префабов см.
Список готовых заготовок в Source SDK см.


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


* [[func_instance:ru|func_instance]] - это продвинутая альтернатива для префабов, доступная на движках [[Counter-Strike: Global Offensive]], [[Left 4 Dead 2]], [[Alien Swarm]] и [[Portal 2]].
* {{L|func_instance}} - это продвинутая альтернатива для заготовок, доступная на платформах {{L|Counter-Strike: Global Offensive}}, {{L|Left 4 Dead 2}}, {{L|Alien Swarm}} и {{L|Portal 2}}.


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


* [https://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]
* [https://www.fpsbanana.com/prefabs/games/2 (CS:S) FPSBANANA prefab database]
* [https://www.fpsbanana.com/prefabs/games/2 (CS:S) FPSBANANA prefab database]
* [https://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)]
{{ACategory|Hammer}}
{{ACategory|Level Design}}

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 см.

См. также

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

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