Working Ladders
도입
모든 Source 게임들에선 (Team Fortress 2 와 Portal 2 같이 사다리가 없는 게임을 제외하고) 플레이어가 사다리로 인식할만한 프롭이나 블럭들이 게임에 포함되어 있습니다, 그리고 보이지않는 엔티티/블럭이 실제로 오를수 있는 사다리를 구현하는 것입니다. 이것은 플레이어에게 어디만큼이 자신이 사다리를 타고 오를수 잇는 방향인지 조금의 오해를 줄수 있습니다.
사다리 모델/블럭
보이는 사다리를 만들기 위해, 당신은 prop_static 을 사다리 모델과 함께 사용해야 합니다 models/props_c17\metalladder001.mdl 나 블럭 기반의 사다리를 만들고 사다리의 텍스쳐 (metal/metalladder001a) 를 입힐수도 있습니다.
등반 시스템
Half-Life 2 나 Half-Life 2: Deathmatch 에 있는 사다리들은 전작들의 비해서 조금은 향상된 사다리를 지원합니다, 플레이어들이 이용하기도 쉽고 개발자들도 디자인할때 쉬운 디자인을 가능케합니다, 반면에 Counter-Strike: Source 와 Day of Defeat: Source 사다리들은 전작의 게임들과 유사한점이 꽤나 많습니다. Counter-Strike: Source 와 Day of Defeat: Source 사다리를 만들고 싶다면, 아래를 봐주세요.
Ladder entities for Half-Life 2 series / Half-Life 2 Deathmatch
사다리를 만들기 위해서는 사다리위에서 플레이어가 움직일수 잇는 공간을 정해야합니다. 이 크기는 두 가지의 방법으로 정의됩니다: func_useableladder 엔티티를 사용하거나, 중요도가 떨어져 곧 소멸위기에 쳐해진 func_ladderendpoint 엔티티를 사용하는것입니다.
func_useableladder 엔티티는 두가지의 보조 엔티티들로 나눌수 있습니다: 시작 지점과 끝 지점으로 나눕니다 (사진.1a). 그들의 장소는 keyvalue 칸에 쓸수 있습니다, 혹은 더욱 보편적인 방법은, 시각적인 도구를 이용하여 배치하는 것입니다, 이것의 중심부를 선택해 움직이는 것입니다 (사진. 1b). 이 도구를 사용하여 시작과 끝을 드래그하여 사다리속의 적절한 지점을 2D 시점으로 찾는 것입니다. 사다리의 시작과 끝 지점은 아마 임의적인 방향과 길이일것입니다 (사진. 1c). 간단하게 끝지점을 당신이 원하는 지점으로 끌고 가세요.
당신이 끝 지점을 만들었다면, 두개의 지점을 사다리의 블럭에 적절히 배치하세요 (사다리의 블럭이나 모델). 왜냐하면 만약 어느 4개의 면이 사다리의 면에 닿기라도 한다면, 이것은 오르지 못하는 사다리가 되버립니다.
이제 구식의 func_ladderendpoint 엔티티는 그저 한가지의 끝 지점만 포함 합니다. 사다리의 용적은 두 가지의 func_ladderendpoint 엔티티들이 연결되어야 비소로 만들어집니다. 사다리의 용적은 func_ladderendpoint 들의 연결에서의 끝 지점의 Other 값을 첫 지점으로 설정하면 됩니다. (이것은 꼭 필요한 사항이 아닙니다.)
하강장소
조금의 움직임들과 함께라면, 당신은 또한 움직임에 대한 하강 지점도 사다리로 부터 제공받아야 합니다 (사진 2) 좀더 다루기 편하고 이용하기 편한 하강 장소를 만드려면 말입니다. 이 지점들은 info_ladder_dismount 엔티티로 표시됩니다. 다른 지점과 마주보고 있다면, 플레이어는 그의 사용 버튼을 하강 장소에 사용하여 다른 지점의 하강장소로 움직일수 있습니다 (보통 사다리는 밑 바닥에서 위의 바닥으로 이동하게 합니다). 만약 그가 사다리의 끝까지 올라갔다면, 그는 간단하게 사다리 주변에 있는 하강장소로 걸어나올수 있습니다. 당신은 여러개의 info_ladder_dismount markers 지점을 사용하여 사다리의 출구의 다양성을 추구할수 있습니다.
하강장소 지점을 사용할때 너무 많아서 혼동이 된다면, 각 info_ladder_dismount 엔티티마다 적절한 LadderName 값을 적어주세요 이것은 어느 사다리에 속하는 것인지 설정해줍니다.
사다리의 크기처럼, 하강장소 지점은 반드시 방해물로 부터 자유로워야 하고 맵 기하학 구조에 의하여 그 지점에 플레이어가 끼지 않고 서있을수 있어야 합니다.
인-게임 테스트
당신이 사다리를 만들었다면, 당신은 컴파일하여 당신의 맵에서 그들을 테스트 할수있습니다. 만약 당신이 원한다면, 당신은 사다리 엔티티들을 인-게임에서 보여주어 몇몇의 디버그 정보를 얻을수 있습니다. sv_showladders 1
명령어를 콘솔창에 입력한뒤, 당신의 맵을 다시 불러오시거나 다시불러오기 하세요 (콘솔 명령어: restart
).
이것은 당신에게 모든 사다리들의 끝지점과 시작지점을 보여줄것 입니다(func_useableladder 과 func_ladderendpoint 엔티티들). 물론 하강지점도 표시해줍니다 (info_ladder_dismount 엔티티들) (사진 3a), 그리고 당신은 이 엔티티들이 적절하게 설정이 되었는지 확인도 가능합니다, 만약 사다리 엔티티들이 고체 맵 기하학 구조중 일부에 충돌하였다거나 사다리의 모델에 충돌했다거나 하지않게 해주세요 (사진 3b), 그리고 func_ladderendpoint 엔티티를 그들 각각 연결시켜 주세요.
게임에서 사다리를 이용하는 다양한 방법
Half-Life 2 에서 사다리가 작동을 안전하게 시작하려면, 보이지 않는 사다리의 접근 박스의 크기만큼 접근을 해야합니다. 사용키의 사정거리 안으로 들어올만큼 가까이 말입니다. 이것은 자동으로 당신은 사다리로 가져다 줄것입니다. (당신은 사다리로 직접 걸어갈수도 있습니다, 하지만 실수로 인해서 이것을 놓치고 손이 미끄러져서 떨어질수도 있는 것입니다.)
당신은 사다리에서 하강할때 점프로 뛰어내리거나, 사용 키를 사용하여 하강할수도 있습니다, 만약 사다리가 info_ladder_dismounts 당신은 간단하게 끝 지점으로 부터 걸어나올수 있습니다, 그리고 당신은 사용키를 누르므로써 마주보고 있는 info_ladder_dismount 는 자동적으로 더 많은 하강지점을 제어할수 있게 사다리를 만듭니다.
Counter Strike: Source, Day of Defeat: Source 와 Garry's Mod 사다리
물체나 블럭앞에 오를수 있는 무언가를 만들고 싶다면, 그것을 정말 가까이 할수는 있지만, 그것을 만지게 해서는 안됩니다. 당신은 높이와 넓이를 그 오를수 있는 물체의 크기와 같게 만들었는지 확인해야합니다. 이 블럭에 tools/toolsinvisibleladder 텍스쳐를 발라주시고, 이것을 CTRL+T 를 사용하여 func_ladder 엔티티로 만들어주세요. 당신은 이제 오를수 있는 면을 만들어 사다리의 구실을 하게 만든겁니다.
]] |
CS:S 에서 이 사다리를 이용하는 중에 사격을 한다면 정확도는 현저히 줄어듭니다.
Half-Life 1 에 이와 같은 사다리가 있는데, 그것은 tools/toolsinvisibleladder 텍스쳐 대신 AAATRIGGER 텍스쳐가 발려있습니다.
Counter Strike: Global Offensive 를 위한 사다리
물체나 블럭앞에 오를수 있게 하고자 하는 곳에 블럭을 만들어주세요, 최대한 사다리에 가깝게, 하지만 닿을수는 없게 해주세요. 당신이 높이와 넓이를 오를수 있는 물체에 맞추었다면, 'tools/toolsinvisibleladder' 텍스쳐를 발라주세요.
당신이 블럭을 func_ladder 로 절대 맞추지 않았는지 확인하세요, 그냥 블럭의 상태로 냅두셔야 오를수 있는 사다리가 됩니다.
Left 4 Dead & Left 4 Dead 2 를 위한 사다리
아래의 강의를 읽고, Left 4 Dead 의 Left 4 Dead 2 를 위한 사다리를 만들어보세요:
사다리 최적화
사다리 모델, 모든 prop_static 들은, 충돌 감지를 위해 기본적으로 VPhysics 를 이용합니다, 이것은 조금더 자세한 물리적 충돌을 제공합니다, 하지만 몇몇 경우에는 이것은 좋지 못합니다. 멀티플레이 맵에서는 VPhysics를 이용한 모델이 요구하는 다양한 리소스로 인해 부담이 큽니다, 그럼 이제 당신은 엄청난 렉 대신 좋은 물리적 효과를 희생할것입니다. 여기 좋은 해결책이 마련됬습니다 여러분! :
- 만약 당신의 사다리가 HL2 이나 HL2:DM 를 위한 것이라면, 그리고 사다리가 수직으로 놓였다면, 좋은 해결책은 아무나 사다리 너머로 총을 쏠수있게 만드세요. 만약 그렇지 않다면 (사다리가 벽에 기대고 있는 경우) 당신은 간단하게 Collisions 값에서 Use Bounding Box값을 체크해주세요. 만약 그렇다면 당신은 Not Solid 로 체크해주시고 그곳에 보이지 않는 블럭 (toolsclip) 을두어서 사다리 대신 충돌을 감지할 무언가를 만들어야합니다.
- 만약 당신이 HL2 나 HL2:DM 에서 기울거진 사다리를 만들고 있다면, Hammer 에서의 프롭을 감싸는 사각형 칸은 프롭과 함께 돌지 않습니다, 이것은 등반 시스템을 가로막습니다, 이것을 만드는 더 좋은 방법은, Not Solid 항목을 체크하는 것입니다, 그리고 보이지 않는 블럭을 기울여서 사다리의 주변에 배치하세요.
- 만약 사다리가 CS:S 나 DoD:S 맵을 위한 사다리라면, 당신은 Collisions 값을 Not Solid 로 체크하고 func_ladder 블럭을 사다리 모델에 덮어 씌울수 있습니다, 회전이 필요하다면 하셔도 무방합니다.
이 모든 경우중 어느것도 속하지 않는다면, 당신은 func_detail 엔티티를 사용해 불필요한 블럭 공간 누수를 막는것이 좋습니다.
예제
HL2/HL2:DM
- LaddersHL2.zip (6k)
- ladder_simple - 완전한 사다리가 만들어져 있습니다.
CS:S/DoD:S
- LaddersCSS.zip (7k)