Ru/Prop data: Difference between revisions
m (Nesciuse moved page Prop data:ru to Ru/Prop data over redirect: -Language prefixes) |
m (Using L template for links) |
||
Line 4: | Line 4: | ||
'''<code>prop_data</code>''' могут быть использованы, чтобы создавать модели: | '''<code>prop_data</code>''' могут быть использованы, чтобы создавать модели: | ||
* [[#Options|Физические]] (по умолчанию, модели с <code>prop_data</code> не могут быть | * [[#Options|Физические]] (по умолчанию, модели с <code>prop_data</code> не могут быть {{L|prop_static|статикой}}) | ||
* [[#Damage modifiers|Разбиваемые]] (с [[#Gibs|гибсами]]) | * [[#Damage modifiers|Разбиваемые]] (с [[#Gibs|гибсами]]) | ||
* [[#Flammable props|Поджигаемые]] | * [[#Flammable props|Поджигаемые]] | ||
* [[#Exploding props|Взрывающиеся]] | * [[#Exploding props|Взрывающиеся]] | ||
Их блок | Их блок {{L|KeyValues}} встроен с помощью QC-команды <code>{{L|$keyvalues}}</code>. | ||
{{Note|Свойства ''поверхности'' модели определяются в <code> | {{Note|Свойства ''поверхности'' модели определяются в <code>{{L|$surfaceprop}}</code>.}} | ||
{{Note|Моделям, используемым как | {{Note|Моделям, используемым как {{L|prop_physics|физика}}, будет необходим <code>{{L|$staticprop}}</code>.}} | ||
== Пример == | == Пример == | ||
{{L|$keyvalues}} | |||
{ | { | ||
prop_data | prop_data | ||
Line 61: | Line 61: | ||
=== Тип основы === | === Тип основы === | ||
; <code>base < | ; <code>base <{{L|string}}></code> | ||
: Даёт модели | : Даёт модели {{L|prop_data base types|предопределенный тип prop_data}}, обеспечивая одним движением все данные, необходимые движку, чтобы создать модель одновременно и физической и разбиваемой. Большинство других команд в блоке prop_data переопределяют значения, унаследованные отсюда. | ||
===Общие=== | ===Общие=== | ||
; <code>health < | ; <code>health <{{L|int}}></code> | ||
: Количество повреждений, которые объект должен принять до момента разбивания. 0 означает, что не ломается. | : Количество повреждений, которые объект должен принять до момента разбивания. 0 означает, что не ломается. | ||
; <code>allowstatic < | ; <code>allowstatic <{{L|bool}}></code> | ||
: Позволяет использовать модель как | : Позволяет использовать модель как {{L|prop_static|статику}}. Для обеспечения согласованности, избегайте по возможности. | ||
; <code>physicsmode <choices></code> | ; <code>physicsmode <choices></code> | ||
: Задает режим физики, используемый в | : Задает режим физики, используемый в {{L|prop_physics_multiplayer}}. Может быть переопределен сущностью в Orange Box. | ||
* Твердый, отталкивает игрока. | * Твердый, отталкивает игрока. | ||
* Не-твердый, но отталкивается игроком. | * Не-твердый, но отталкивается игроком. | ||
* Не-твердый, моделируется только на стороне клиента. | * Не-твердый, моделируется только на стороне клиента. | ||
; <code>blockLOS <bool></code> | ; <code>blockLOS <bool></code> | ||
: Определяет, блокирует ли он | : Определяет, блокирует ли он {{L|line of sight|линию взгляда}} NPC. Если не указано, движок игры будет принимать решение на основе размеров модели. | ||
; <code>AIWalkable <bool></code> | ; <code>AIWalkable <bool></code> | ||
: Должны ли боты проходить этот объект? {{todo|Имеет ли значение тип объекта?}} | : Должны ли боты проходить этот объект? {{todo|Имеет ли значение тип объекта?}} | ||
Line 95: | Line 95: | ||
:* Бумага, ткань, керамика, флэш и дерево = 1.5 | :* Бумага, ткань, керамика, флэш и дерево = 1.5 | ||
; <code>damage_table</code> <choices> | ; <code>damage_table</code> <choices> | ||
: | : {{L|Impact Damage Table|Таблица повреждений}} задана в коде C++ (в physics_impact_damage.cpp), и содержит самую подробную информацию о том, какой урон получает объект с различных направлений и силы удара. Только стекло и керамика наследуют один base_type. {{tip|Используйте <code> damage_table "" </code>, чтобы игнорировать таблицу наследования.}} | ||
:; <code>glass</code> | :; <code>glass</code> | ||
:: Чрезвычайно хрупкий, разбивается даже при падении. | :: Чрезвычайно хрупкий, разбивается даже при падении. | ||
Line 109: | Line 109: | ||
''<code>fire_interactions</code> - это подраздел <code>prop_data</code>, который отвечает за воспламеняемость. Имеет всего три известных параметра, каждый с одним известным значением:'' | ''<code>fire_interactions</code> - это подраздел <code>prop_data</code>, который отвечает за воспламеняемость. Имеет всего три известных параметра, каждый с одним известным значением:'' | ||
{{L|$keyvalues}} | |||
{ | { | ||
prop_data | prop_data | ||
Line 137: | Line 137: | ||
=== Гибы === | === Гибы === | ||
''Система prop_data обрабатывает стандартные | ''Система prop_data обрабатывает стандартные {{L|Wikipedia:Gibs|гибы}}. Стандартные гибы используются для любого разрушаемого объекта, у которого нет {{L|Creating Custom Breakable Gibs|пользовательских гибов}}.'' | ||
; <code>breakable_model <choices></code> | ; <code>breakable_model <choices></code> | ||
: Задает набор стандартных гибов (как в <code>scripts\propdata.txt</code>) этого разрушаемого объекта. Объекты с гибом древесной основы в этой манере. См. также | : Задает набор стандартных гибов (как в <code>scripts\propdata.txt</code>) этого разрушаемого объекта. Объекты с гибом древесной основы в этой манере. См. также {{L|Creating Custom Breakable Gibs|создание гибов}}. | ||
:* <code>WoodChunks</code> | :* <code>WoodChunks</code> | ||
:* <code>GlassChunks</code> | :* <code>GlassChunks</code> | ||
Line 151: | Line 151: | ||
: Только объекты с деревянными base_types наследуют гиб-скин (скин 0). | : Только объекты с деревянными base_types наследуют гиб-скин (скин 0). | ||
; <code>multiplayer_break <choices></code> | ; <code>multiplayer_break <choices></code> | ||
: {{confirm:ru|Определить, где моделируются гибы из | : {{confirm:ru|Определить, где моделируются гибы из {{L|prop_physics_multiplayer}}.}} | ||
:* <code>both</code> | :* <code>both</code> | ||
:* <code>server</code> | :* <code>server</code> | ||
Line 203: | Line 203: | ||
== Работа с прототипами моделей == | == Работа с прототипами моделей == | ||
Во время работы над прототипами, когда под рукой нет моделиста, весьма полезно обойти систему принуждения проп-данных. Для этого используйте сущности | Во время работы над прототипами, когда под рукой нет моделиста, весьма полезно обойти систему принуждения проп-данных. Для этого используйте сущности {{L|prop_physics_override}} и {{L|prop_dynamic_override}} вместо {{L|prop_physics}} и {{L|prop_dynamic}}. Сущность {{L|prop_physics_override}} не удалит себя, если ей назначена модель, которая хочет быть статичной (т. е. не имеет записей "prop_data" в <code>$keyvalues</code> раздела .{{L|qc|QC}}). Это также позволит дизайнеру уровня настроить "здоровье". | ||
Переопределение сущностей во время испытания прототипа временно позволяет использовать модели некорректно, пока моделист не задаст им нужные свойства. '''Настоятельно рекомендуется''' использовать | Переопределение сущностей во время испытания прототипа временно позволяет использовать модели некорректно, пока моделист не задаст им нужные свойства. '''Настоятельно рекомендуется''' использовать {{L|Hammer Entity Report Dialog|Журнал отчета по сущностям}} в Хаммере, чтобы перед отправкой карт убедиться, что на них нет переопределенных сущностей. Иначе вы получите несоответствие физики, которое игроки быстро заметят (при стрельбе по оранжевому ведру оно не двигается, как на предыдущем уровне). | ||
См. также | См. также {{L|func_physbox}} - брашевые физические объекты. | ||
== См. также == | == См. также == | ||
* | * {{L|prop_data base types}} | ||
* | * {{L|prop_static}}, {{L|prop_dynamic}}, {{L|prop_physics}} — общие проп-сущности. | ||
* | * {{L|Prop Types Overview}} — статьи, описывабщие различные виды пропов. | ||
* | * {{L|physgun interactions}} — другой блок QC $keyvalues, который определяет различные взаимодействия между моделями {{L|prop_physics}} и гравипушкой. | ||
[[Category:Modeling]] | [[Category:Modeling]] | ||
[[Category:QC Keyvalues]] | [[Category:QC Keyvalues]] |
Latest revision as of 07:39, 11 July 2024
prop_data
могут быть использованы, чтобы создавать модели:
- Физические (по умолчанию, модели с
prop_data
не могут быть статикой ) - Разбиваемые (с гибсами)
- Поджигаемые
- Взрывающиеся
Их блок KeyValues встроен с помощью QC-команды $keyvalues
.

$surfaceprop
.
$staticprop
.Пример
$keyvalues { prop_data { base Wooden.Small dmg.bullets 0 explosive_damage 100 explosive_radius 50 } }
Здесь мы получаем prop_data из стандартного base_type "Wooden.Small". Затем берём дополнительные ключевые значения, чтобы дать модели три специальные характеристики: она будет пуленепробиваемой, но когда взорвётся, нанесет ущерб 100 в радиусе 50 единиц.
Советы
- Вам не нужно что-либо переопределять
- Просто установите
base
, и она будет работать как физический объект. - Не переопределяет уровни здоровья у ваших пропов
- Вместо этого, пусть здоровье будет настроено по-умолчанию. Таким образом, один стул не получит вдвое больший урон, чем другой стул.
- Всегда, когда это возможно, избегайте смешивания типов материалов внутри одного пропа
- Не создавайте полуметаллические, полудеревянные пропы.
- Избегайте скопления нескольких объектов в одном пропе
- Особенно, если вы или Valve по отдельности смоделировали идентичные объекты в разных местах.
- Избегайте движущихся частей или материалов, которые Source не моделирует
- Не помещайте воду в физический аквариум.
Должна ли моя модель быть физической?
В Half-Life 2, Valve старается следовать общим правилам:
- Если модель прикреплена к не-физической вещи или поддерживает её...
- То должна быть статикой.
- Если генерирует статичный свет...
- То должна быть статикой.
- Если она настолько велика, что игрок не может двигать её...
- То должна быть статикой.
- В остальном...
- Она должна быть физикой.
Кроме того, Valve рассматривает металл и пластик как неуязвимые, но всё же разбиваемые материалы.
Свойства
Тип основы
base <string >
- Даёт модели предопределенный тип prop_data , обеспечивая одним движением все данные, необходимые движку, чтобы создать модель одновременно и физической и разбиваемой. Большинство других команд в блоке prop_data переопределяют значения, унаследованные отсюда.
Общие
health <int >
- Количество повреждений, которые объект должен принять до момента разбивания. 0 означает, что не ломается.
allowstatic <bool >
- Позволяет использовать модель как статику . Для обеспечения согласованности, избегайте по возможности.
physicsmode <choices>
- Задает режим физики, используемый в prop_physics_multiplayer . Может быть переопределен сущностью в Orange Box.
- Твердый, отталкивает игрока.
- Не-твердый, но отталкивается игроком.
- Не-твердый, моделируется только на стороне клиента.
blockLOS <bool>
- Определяет, блокирует ли он линию взгляда NPC. Если не указано, движок игры будет принимать решение на основе размеров модели.
AIWalkable <bool>
- Должны ли боты проходить этот объект? Нужно сделать: Имеет ли значение тип объекта?
Модификаторы урона
Модификаторы урона используются для отражения разницы между суммой ущерба, которую объект принимает от различных атак. Не используйте их, чтобы отражать полную силу ущерба. (например, камень устойчив ко всему. Чтобы отразить это, увеличьте здоровье всех камней, не ставьте модификаторы урона ниже.)
dmg.bullets
<float>- Изменяет урон от пуль.
- Бумага, ткань и стекло = 0.5
- Дерево = 0.75
- Flesh = 1.25.
dmg.club
<float>- Урон от тупого предмета.
- Ткань = 0.75
- Бумага и керамика = 1.25
- Дерево = 2.0
dmg.explosive
<float>- Урон от взрывов.
- Бумага, ткань, керамика, флэш и дерево = 1.5
damage_table
<choices>- Таблица повреждений задана в коде C++ (в physics_impact_damage.cpp), и содержит самую подробную информацию о том, какой урон получает объект с различных направлений и силы удара. Только стекло и керамика наследуют один base_type.
Совет:Используйте
damage_table ""
, чтобы игнорировать таблицу наследования.glass
- Чрезвычайно хрупкий, разбивается даже при падении.
player
- [Нужно сделать]
player_vehicle
- [Нужно сделать]
npc
- [Нужно сделать]
Воспламеняющиеся объекты
fire_interactions
- это подраздел prop_data
, который отвечает за воспламеняемость. Имеет всего три известных параметра, каждый с одним известным значением:
$keyvalues { prop_data { fire_interactions { ignite halfhealth // Будет самовозгораться при достижении 50% здоровья. explosive_resist yes // Ограничивает урон от взрыва, так что объект загорается вместо того, чтобы разрушиться. flammable yes // Может загораться от огня и взрывов. } } }
Примечание:fire_interactions может не работать в разделе prop_data. Если у вас возникли проблемы, переместите его ниже раздела prop_data
- Нужно сделать: подтвердить, что fire_interactions не используется для воспламеняющихся моделей NPC.
- Нужно сделать: подтвердить, что не разрушаемые (здоровье 0) модели могут воспламеняться.
Взрывающиеся объекты
Эти два поля определяют количество жизни, которое отнимет объект во время взрыва.
explosive_damage <float>
- Сила повреждений от взрыва.
explosive_radius <float>
- Радиус взрыва. Чем дальше от взрыва, тем повреждений меньше.
Гибы
Система prop_data обрабатывает стандартные гибы . Стандартные гибы используются для любого разрушаемого объекта, у которого нет пользовательских гибов .
breakable_model <choices>
- Задает набор стандартных гибов (как в
scripts\propdata.txt
) этого разрушаемого объекта. Объекты с гибом древесной основы в этой манере. См. также создание гибов .WoodChunks
GlassChunks
ConcreteChunks
MetalChunks
breakable_count <int>
- Количество стандартных разбиваемых гибов. Если не задано, движок генерирует разумное число на основе гибов или размеров модели.
breakable_skin <int>
- Позволяет задать скин для использования на гиб-моделях, который соответствует оригинальному скину объектов.
- Только объекты с деревянными base_types наследуют гиб-скин (скин 0).
multiplayer_break <choices>
Подтвердить:Определить, где моделируются гибы из prop_physics_multiplayer .
both
server
client
(default)
- Нужно сделать: Confirm whether breakable_count, breakable_skin and multiplayer_break do not affect custom gibs.
- Нужно сделать: Confirm whether multiplayer_break is set for the breakable model rather than each individual gib itself.
Создание новых базовых типов
Все базовые типы задаются в scripts\propdata.txt
. Редактирование базовых типов в этом файле повлияет на поведение всех моделей, которые его используют (и не имеют своих собственных переопределений).
Формат файла:
PropData.txt
{
<base type name>
{
<any number of the prop_data KVs listed above>
}
}
Как правило, Valve использует эти типы только для того, чтобы задать модификаторы здоровья и урона.
Создание стандартных гибов
Стандартные гибы также задаются в propdata.txt. У Valve есть только четыре гиба, и только одному (WoodChunks
) присваивается базовый тип — для остальных моделей тип задается напрямую, с помощью breakable_model
.
Определить новый gibset легко, поскольку движок делает большую часть работы:
PropData.txt
{
BreakableModels
{
WoodChunks
{
// Smallest to largest:
models\Gibs\wood_gib01e.mdl 1
models\Gibs\wood_gib01d.mdl 1
models\Gibs\wood_gib01c.mdl 1
models\Gibs\wood_gib01b.mdl 1
models\Gibs\wood_gib01a.mdl 1
}
}
}
Работа с прототипами моделей
Во время работы над прототипами, когда под рукой нет моделиста, весьма полезно обойти систему принуждения проп-данных. Для этого используйте сущности prop_physics_override и prop_dynamic_override вместо prop_physics и prop_dynamic . Сущность prop_physics_override не удалит себя, если ей назначена модель, которая хочет быть статичной (т. е. не имеет записей "prop_data" в $keyvalues
раздела .QC ). Это также позволит дизайнеру уровня настроить "здоровье".
Переопределение сущностей во время испытания прототипа временно позволяет использовать модели некорректно, пока моделист не задаст им нужные свойства. Настоятельно рекомендуется использовать Журнал отчета по сущностям в Хаммере, чтобы перед отправкой карт убедиться, что на них нет переопределенных сущностей. Иначе вы получите несоответствие физики, которое игроки быстро заметят (при стрельбе по оранжевому ведру оно не двигается, как на предыдущем уровне).
См. также func_physbox - брашевые физические объекты.
См. также
- prop_data base types
- prop_static , prop_dynamic , prop_physics — общие проп-сущности.
- Prop Types Overview — статьи, описывабщие различные виды пропов.
- physgun interactions — другой блок QC $keyvalues, который определяет различные взаимодействия между моделями prop_physics и гравипушкой.