Ru/Working ladders: Difference between revisions

From Valve Developer Community
< Ru
Jump to navigation Jump to search
No edit summary
m (SirYodaJedi moved page Ru/Working Ladders to Ru/Working ladders)
 
(6 intermediate revisions by 3 users not shown)
Line 1: Line 1:
{{otherlang2
{{lang|Working Ladders|title=Работающие лестницы}}
| title=Работающие лестницы
| es    = Working Ladders:es
| ko    = Working Ladders:ko
| en = Working Ladders
| zh-cn = Working Ladders:zh-cn
}}


== Введение ==
== Введение ==
Во всех играх [[Source]] имеются лестницы (кроме [[Team Fortress 2]] и [[Portal 2]], где их нет), состоящие из модели или браша, и системы невидимых энтить, расположенных рядом. Эти невидимые энтити и создают видимость того, что игрок взбирается по модели/брашу лестницы.
Во всех играх {{L|Source}} имеются лестницы (кроме {{L|Team Fortress 2}} и {{L|Portal 2}}, где их нет), состоящие из модели или браша, и системы невидимых энтить, расположенных рядом. Эти невидимые энтити и создают видимость того, что игрок взбирается по модели/брашу лестницы.


=== Видимая часть лестницы ===
=== Видимая часть лестницы ===


Для её создания вы можете использовать
Для её создания вы можете использовать
* энтитю [[prop_static]] с моделью лестницы (например, ''models\props_c17\metalladder001.mdl''), или
* энтитю {{L|prop_static}} с моделью лестницы (например, ''models\props_c17\metalladder001.mdl''), или
* браш с текстурой лестницы (например, ''metal/metalladder001a'').
* браш с текстурой лестницы (например, ''metal/metalladder001a'').


=== Система подъёма ===
=== Система подъёма ===
Принцип работы системы подъёма зависит от игры, для которой она предназначена. Лестницы в [[Half-Life 2]] и [[Half-Life 2: Deathmatch]] создаются немного не так, как в ранних играх, они стали удобнее для дизайнеров карт и игроков, а лестницы в [[Counter-Strike: Source]] и [[Day of Defeat: Source]] реализованы также, как в старых играх.
Принцип работы системы подъёма зависит от игры, для которой она предназначена. Лестницы в {{L|Half-Life 2}} и {{L|Half-Life 2: Deathmatch}} создаются немного не так, как в ранних играх, они стали удобнее для дизайнеров карт и игроков, а лестницы в {{L|Counter-Strike: Source}} и {{L|Day of Defeat: Source}} реализованы также, как в старых играх.
Материал по созданию лестниц для Counter-Strike: Source и Day of Defeat: Source, см. [[#Ladders_for_Counter_Strike:_Source_and_Day_of_Defeat:_Source|ниже]].
Материал по созданию лестниц для Counter-Strike: Source и Day of Defeat: Source, см. [[#Ladders_for_Counter_Strike:_Source_and_Day_of_Defeat:_Source|ниже]].


== Энтити лестницы для Half-Life 2 / Half-Life 2 Deathmatch ==
== Энтити лестницы для Half-Life 2 / Half-Life 2 Deathmatch ==


Вначале нужно определиться с размером лестницы. Это можно сделать двумя способами: с помощью энтити [[func_useableladder]], или устаревшей [[func_ladderendpoint]] (которая кратко описана ниже для понимания работы старых карт).
Вначале нужно определиться с размером лестницы. Это можно сделать двумя способами: с помощью энтити {{L|func_useableladder}}, или устаревшей {{L|func_ladderendpoint}} (которая кратко описана ниже для понимания работы старых карт).


Энтитя func_useableladder разделяется на две под-энтити: начальную и конечную точки ''(см. рис. 1a)''. Их позиции можно задавать как в поле значения, так и путём перетаскивания кружка при выделении энтити ''(см. рис. 1b)''. Это делается в окне 2D-вида. Начало и конец лестницы могут быть произвольной ориентации и длины ''(см. рис. 1c)''. Просто тяните эти точки туда, где должна располагаться лестница.
Энтитя func_useableladder разделяется на две под-энтити: начальную и конечную точки ''(см. рис. 1a)''. Их позиции можно задавать как в поле значения, так и путём перетаскивания кружка при выделении энтити ''(см. рис. 1b)''. Это делается в окне 2D-вида. Начало и конец лестницы могут быть произвольной ориентации и длины ''(см. рис. 1c)''. Просто тяните эти точки туда, где должна располагаться лестница.


{| border=0 cellspacing=0 cellpadding=0
{| border=0 cellspacing=0 cellpadding=0
| [[Image:hammer_ladders1.jpg|frame|left|Рис. 1a – Точки лестницы (используются две <code>func_ladderendpoint</code>s)]]
| [[File:hammer_ladders1.jpg|frame|left|Рис. 1a – Точки лестницы (используются две <code>func_ladderendpoint</code>s)]]
| [[Image:hammer_ladders2.jpg|frame|left|Рис. 1b – Изменение ориентации]]
| [[File:hammer_ladders2.jpg|frame|left|Рис. 1b – Изменение ориентации]]
| [[Image:hammer_ladders3.jpg|frame|left|Рис. 1c – Наклон лестницы]]
| [[File:hammer_ladders3.jpg|frame|left|Рис. 1c – Наклон лестницы]]
|}
|}


Line 38: Line 32:
=== Точки схода ===
=== Точки схода ===


[[Image:hammer_ladders4.jpg|frame|left|Рис. 2 – Точки схода]]
[[File:hammer_ladders4.jpg|frame|left|Рис. 2 – Точки схода]]


Также, вы можете задать точки схода с лестницы ''(см. Рис. 2)''. Они создаются с помощью энтити [[info_ladder_dismount]]. Во время лазания игрок может сойти, нажав клавишу использования (обычно так делается, когда лестница выше двух этажей). В данном же случае игрок сходит сам, просто достигнув одной из точек.
Также, вы можете задать точки схода с лестницы ''(см. Рис. 2)''. Они создаются с помощью энтити {{L|info_ladder_dismount}}. Во время лазания игрок может сойти, нажав клавишу использования (обычно так делается, когда лестница выше двух этажей). В данном же случае игрок сходит сам, просто достигнув одной из точек.
Вы можете использовать несколько маркеров info_ladder_dismount, чтобы задавать больше направлений схода с лестницы.
Вы можете использовать несколько маркеров info_ladder_dismount, чтобы задавать больше направлений схода с лестницы.


Line 53: Line 47:


{| border=0 cellspacing=0 cellpadding=0
{| border=0 cellspacing=0 cellpadding=0
| [[Image:hammer_ladders5.jpg|frame|left|Рис. 3a – Визуализация в игре (<code>sv_showladders 1</code>)]]
| [[File:hammer_ladders5.jpg|frame|left|Рис. 3a – Визуализация в игре (<code>sv_showladders 1</code>)]]
| [[Image:hammer_ladders6.jpg|frame|left|Рис. 3b – Конечная точка застряла в полу]]
| [[File:hammer_ladders6.jpg|frame|left|Рис. 3b – Конечная точка застряла в полу]]
|}
|}


Line 65: Line 59:
== Лестницы для Counter Strike: Source, Day of Defeat: Source и Garry's Mod ==
== Лестницы для Counter Strike: Source, Day of Defeat: Source и Garry's Mod ==


Перед объектом/брашем, который должен быть лестницей, как можно ближе нарисуйте ещё один браш, но так, чтобы они не касались. Убедитесь, что ширина/высота поверхности соответствует объекту-лестнице. Покройте этот браш материалом '''tools/toolsinvisibleladder''' и преобразуйте в энтитю (CTRL+T). В диалоге Object Properties выберите [[func_ladder]]. Теперь у вас есть поверхность-лестница в передней части объекта/браша.
Перед объектом/брашем, который должен быть лестницей, как можно ближе нарисуйте ещё один браш, но так, чтобы они не касались. Убедитесь, что ширина/высота поверхности соответствует объекту-лестнице. Покройте этот браш материалом '''tools/toolsinvisibleladder''' и преобразуйте в энтитю (CTRL+T). В диалоге Object Properties выберите {{L|func_ladder}}. Теперь у вас есть поверхность-лестница в передней части объекта/браша.


{| border=0 cellspacing=0 cellpadding=0
{| border=0 cellspacing=0 cellpadding=0
| [[Image:Cssladderprop01a.png|frame|left|Рис. 4 - [[func_ladder]] с текстурой '''tools/toolsinvisibleladder''' перед лестницей [[prop_static]].]]
| [[File:Cssladderprop01a.png|frame|left|Рис. 4 - {{L|func_ladder}} с текстурой '''tools/toolsinvisibleladder''' перед лестницей {{L|prop_static}}.]]
|}
|}


Line 77: Line 71:
== Лестницы для Counter Strike: Global Offensive ==
== Лестницы для Counter Strike: Global Offensive ==
См.:
См.:
* [[Creating_Ladders_(CSGO)]]
* {{L|Creating_Ladders_(CSGO)}}


== Лестницы для Left 4 Dead & Left 4 Dead 2 ==
== Лестницы для Left 4 Dead & Left 4 Dead 2 ==
Читайте следующие руководства по созданию лестниц для Left 4 Dead & Left 4 Dead 2:
Читайте следующие руководства по созданию лестниц для Left 4 Dead & Left 4 Dead 2:
*[[L4D_Level_Design/Ladders|Creating Ladders for the Left 4 Dead series]]
*{{L|L4D_Level_Design/Ladders|Creating Ladders for the Left 4 Dead series}}
*[[L4D_Level_Design/Versus_Maps#Making_Infected_Ladders_Visible|Creating Infected only Ladders]]
*[[L4D_Level_Design/Versus_Maps#Making_Infected_Ladders_Visible|Creating Infected only Ladders]]


== Оптимизация лестниц ==
== Оптимизация лестниц ==
По-умолчанию, модели лестниц используют [[VPhysics]], чтобы обеспечить точность соприкосновения, но иногда этого не требуется. В многопользовательских и тяжёлых картах использование моделей с VPhysics отнимает драгоценные ресурсы, и чтобы избежать лагов, хорошей физикой можно пожертвовать. Вот несколько отличных способов, чтобы разгрузить ресурсы:
По-умолчанию, модели лестниц используют {{L|VPhysics}}, чтобы обеспечить точность соприкосновения, но иногда этого не требуется. В многопользовательских и тяжёлых картах использование моделей с VPhysics отнимает драгоценные ресурсы, и чтобы избежать лагов, хорошей физикой можно пожертвовать. Вот несколько отличных способов, чтобы разгрузить ресурсы:


*Если это прямая лестница для HL2 или HL2:DM, то лучший способ зависит от того, нужно ли стрелять сквозь неё. Если нет (например, лестница на стене), то просто измените значение ''Collisions'' (столкновения) на ''Use Bounding Box'' (использовать рамку-ограничитель). Если да, то выберите значение ''Not Solid'' (не твёрдый) и поместите брашевый невидимый Clip (''toolsclip''), который будет отвечать за столкновения.
*Если это прямая лестница для HL2 или HL2:DM, то лучший способ зависит от того, нужно ли стрелять сквозь неё. Если нет (например, лестница на стене), то просто измените значение ''Collisions'' (столкновения) на ''Use Bounding Box'' (использовать рамку-ограничитель). Если да, то выберите значение ''Not Solid'' (не твёрдый) и поместите брашевый невидимый Clip (''toolsclip''), который будет отвечать за столкновения.
Line 93: Line 87:
*Если это лестница для карт CS:S или DoD:S, вам нужно изменить значение ''Collisions'' на ''Not Solid'' и создать браш func_ladder поверх модели лестницы, вращая его по необходимости.
*Если это лестница для карт CS:S или DoD:S, вам нужно изменить значение ''Collisions'' на ''Not Solid'' и создать браш func_ladder поверх модели лестницы, вращая его по необходимости.


На многопользовательских картах лестницы нужно рисовать так, чтобы можно было свободно лазить параллельно поверхности, вдоль которой они проходят. Брашевые лестницы надо преобразовывать в нетвёрдый [[func_brush]], чтобы избежать временного "застревания" игроков;  модели лестниц зачастую торчат из стены, и когда игрок стоит на такой, это выглядит неправдоподобно. В этом случае лучше использовать два браша с текстурой Player Clip по краям пропа, которые будут выравнивать игрока на модели.
На многопользовательских картах лестницы нужно рисовать так, чтобы можно было свободно лазить параллельно поверхности, вдоль которой они проходят. Брашевые лестницы надо преобразовывать в нетвёрдый {{L|func_brush}}, чтобы избежать временного "застревания" игроков;  модели лестниц зачастую торчат из стены, и когда игрок стоит на такой, это выглядит неправдоподобно. В этом случае лучше использовать два браша с текстурой Player Clip по краям пропа, которые будут выравнивать игрока на модели.


Если ничего другого, то преобразуйте браш лестницы в [[func_detail]], чтобы он не разрезал листья.
Если ничего другого, то преобразуйте браш лестницы в {{L|func_detail}}, чтобы он не разрезал листья.


== Примеры ==
== Примеры ==
'''HL2/HL2:DM'''
'''HL2/HL2:DM'''
*[[ladder_simple]] – Префаб с полностью рабочей лестницей.
*{{L|ladder_simple}} – Префаб с полностью рабочей лестницей.
*[http://nudel.omega2k3.de/maps/?s=download&act=view&fileID=21 LaddersHL2.zip]{{Template:Dead link}} (6k)
*[http://nudel.omega2k3.de/maps/?s=download&act=view&fileID=21 LaddersHL2.zip]{{Dead link}} (6k)
<!-- SDK nuts has closed. When (and if) these tutorials are ported onto the VDC, please link to them instead!
<!-- SDK nuts has closed. When (and if) these tutorials are ported onto the VDC, please link to them instead!
*[http://www.sdknuts.net/akg/tutorials/wiseladder.asp HL2 Ladders]
*[http://www.sdknuts.net/akg/tutorials/wiseladder.asp HL2 Ladders]
Line 109: Line 103:


== См. также ==
== См. также ==
*[[func_useableladder]]
*{{L|func_useableladder}}
*[[func_ladderendpoint]]
*{{L|func_ladderendpoint}}
*[[info_ladder_dismount]]
*{{L|info_ladder_dismount}}
*[[func_ladder]]
*{{L|func_ladder}}


[[Category:Level Design Tutorials]]
{{ACategory|Level Design}}
{{ACategory|Tutorials}}

Latest revision as of 06:29, 12 March 2025

English (en)Deutsch (de)Español (es)한국어 (ko)Polski (pl)Русский (ru)中文 (zh)Translate (Translate)

Введение

Во всех играх Source(en) имеются лестницы (кроме Team Fortress 2(en) и Portal 2(en), где их нет), состоящие из модели или браша, и системы невидимых энтить, расположенных рядом. Эти невидимые энтити и создают видимость того, что игрок взбирается по модели/брашу лестницы.

Видимая часть лестницы

Для её создания вы можете использовать

  • энтитю prop_static(en) с моделью лестницы (например, models\props_c17\metalladder001.mdl), или
  • браш с текстурой лестницы (например, metal/metalladder001a).

Система подъёма

Принцип работы системы подъёма зависит от игры, для которой она предназначена. Лестницы в Half-Life 2(en) и Half-Life 2: Deathmatch(en) создаются немного не так, как в ранних играх, они стали удобнее для дизайнеров карт и игроков, а лестницы в Counter-Strike: Source(en) и Day of Defeat: Source(en) реализованы также, как в старых играх. Материал по созданию лестниц для Counter-Strike: Source и Day of Defeat: Source, см. ниже.

Энтити лестницы для Half-Life 2 / Half-Life 2 Deathmatch

Вначале нужно определиться с размером лестницы. Это можно сделать двумя способами: с помощью энтити func_useableladder(en), или устаревшей func_ladderendpoint(en) (которая кратко описана ниже для понимания работы старых карт).

Энтитя func_useableladder разделяется на две под-энтити: начальную и конечную точки (см. рис. 1a). Их позиции можно задавать как в поле значения, так и путём перетаскивания кружка при выделении энтити (см. рис. 1b). Это делается в окне 2D-вида. Начало и конец лестницы могут быть произвольной ориентации и длины (см. рис. 1c). Просто тяните эти точки туда, где должна располагаться лестница.

Рис. 1a – Точки лестницы (используются две func_ladderendpoints)
Рис. 1b – Изменение ориентации
Рис. 1c – Наклон лестницы

Убедитесь, что конечные точки лестницы не касаются её видимого браша, и находятся на расстоянии в паре единиц от него (а таже любого другого браша или модели), иначе часть лестницы может не работать.

Сегодня устаревшая сущность func_ladderendpoint состоит лишь из одной конечной точки. Размер лестницы создаётся путём связывания двух func_ladderendpoints, которые указываются в свойствах.

Точки схода

Рис. 2 – Точки схода

Также, вы можете задать точки схода с лестницы (см. Рис. 2). Они создаются с помощью энтити info_ladder_dismount(en). Во время лазания игрок может сойти, нажав клавишу использования (обычно так делается, когда лестница выше двух этажей). В данном же случае игрок сходит сам, просто достигнув одной из точек. Вы можете использовать несколько маркеров info_ladder_dismount, чтобы задавать больше направлений схода с лестницы.

Чтобы избежать возможной путаницы между соседними лестницами, каждая info_ladder_dismount имеет параметр, называемый LadderName, который связывает точку с конкретной лестницей.

Как и в случае с лестницей, точки схода не должны пересекаться с геометрией карты.

Полевые испытания

После того, как вы создали лестницу, то можете скомпилировать карту и протестировать её. Если хотите, то в игре можно увидеть энтити лестниц вместе с отладочной информацией, введя в консоли sv_showladders 1, а затем загрузив или перезагрузив нужную карту (введя restart). Будут показаны все начальные и конечные точки лестниц (энтити func_useableladder и func_ladderendpoint), а также точки схода (энтити info_ladder_dismount) (См. Рис. 3a), что поможет вам определить, правильно ли настроены эти энтити, пересекаются ли они с твёрдой геометрией или моделями лестниц (см. Рис. 3b), а также соединяются ли энтити func_ladderendpoint друг с другом.

Рис. 3a – Визуализация в игре (sv_showladders 1)
Рис. 3b – Конечная точка застряла в полу

Как лестница работает в игре

Самый безопасный способ взобраться по лестнице в Half-life 2 – это подойти к её невидимой зоне, и в пределах досягаемости нажать клавишу использования. Это автоматически поставит игрока на лестницу. (Если же просто ходить возле лестницы, то есть большой риск упасть.)

Чтобы сойти с лестницы, вы всегда можете спрыгнуть или нажать клавишу использования. Если у лестницы имеются info_ladder_dismounts, вы легко спешитесь на её концах.

Лестницы для Counter Strike: Source, Day of Defeat: Source и Garry's Mod

Перед объектом/брашем, который должен быть лестницей, как можно ближе нарисуйте ещё один браш, но так, чтобы они не касались. Убедитесь, что ширина/высота поверхности соответствует объекту-лестнице. Покройте этот браш материалом tools/toolsinvisibleladder и преобразуйте в энтитю (CTRL+T). В диалоге Object Properties выберите func_ladder(en). Теперь у вас есть поверхность-лестница в передней части объекта/браша.

Рис. 4 - func_ladder(en) с текстурой tools/toolsinvisibleladder перед лестницей prop_static(en).

Когда вы стоите на лестнице в CS:S, точность вашей стрельбы значительно снижается.

Подобные лестницы используются в Half-Life 1, но они покрыты текстурой AAATRIGGER вместо tools/toolsinvisibleladder.

Лестницы для Counter Strike: Global Offensive

См.:

Лестницы для Left 4 Dead & Left 4 Dead 2

Читайте следующие руководства по созданию лестниц для Left 4 Dead & Left 4 Dead 2:

Оптимизация лестниц

По-умолчанию, модели лестниц используют VPhysics(en), чтобы обеспечить точность соприкосновения, но иногда этого не требуется. В многопользовательских и тяжёлых картах использование моделей с VPhysics отнимает драгоценные ресурсы, и чтобы избежать лагов, хорошей физикой можно пожертвовать. Вот несколько отличных способов, чтобы разгрузить ресурсы:

  • Если это прямая лестница для HL2 или HL2:DM, то лучший способ зависит от того, нужно ли стрелять сквозь неё. Если нет (например, лестница на стене), то просто измените значение Collisions (столкновения) на Use Bounding Box (использовать рамку-ограничитель). Если да, то выберите значение Not Solid (не твёрдый) и поместите брашевый невидимый Clip (toolsclip), который будет отвечать за столкновения.
  • Если это наклонная лестница для HL2 или HL2:DM, рамка-ограничитель не будет поворачиваться вместе с моделью и станет мешать системе подъёма, в этом случае вам нужно сделать модель лестницы Not Solid, и рядом с ней поместить невидимый повёрнутый браш, покрытый текстурой Clip (toolsclip) или Player Clip (toolsplayerclip) (в зависимости от того, требуется ли стрелять сквозь лестницу).
  • Если это лестница для карт CS:S или DoD:S, вам нужно изменить значение Collisions на Not Solid и создать браш func_ladder поверх модели лестницы, вращая его по необходимости.

На многопользовательских картах лестницы нужно рисовать так, чтобы можно было свободно лазить параллельно поверхности, вдоль которой они проходят. Брашевые лестницы надо преобразовывать в нетвёрдый func_brush(en), чтобы избежать временного "застревания" игроков; модели лестниц зачастую торчат из стены, и когда игрок стоит на такой, это выглядит неправдоподобно. В этом случае лучше использовать два браша с текстурой Player Clip по краям пропа, которые будут выравнивать игрока на модели.

Если ничего другого, то преобразуйте браш лестницы в func_detail(en), чтобы он не разрезал листья.

Примеры

HL2/HL2:DM

CS:S/DoD:S

См. также