해머(하프라이프)
1. 개요
하프 라이프의 엔진인 골드 소스 및 소스 엔진 계열의 레벨 디자인 에디터.[1] 여담으로 원래 이름은 World Craft 지만 몇년 뒤 이름이 월드 오브 워크래프트와 묘하게 겹친다는 판단에선지, 스팀 서비스 개시와 맞물려 이름을 해머로 바꿔버렸고, 이 설정은 기타 자잘한 기능이 추가된 2편의 해머로도 이어진다.
기본적으로 브러쉬를 하나씩 추가하고 덧붙여 구조&지형을 만든 다음 프롭과 NPC 등을 덧붙이는 구조이니만큼, 쭉쭉 늘려 나가는 맥스와도 호환이 되는 UDK 같은 것과 비교하면 전혀 다른 인터페이스와 제작 방식이다. 그래서인지 그런걸 만지다 이걸 쓰는 이들은 이 툴의 불편함을 호소하며 쓸만한게 아니라 주장하지만, 이미 쓰던 사람들은 잘만 쓰고 역으로 UDK 사용에 불편함을 토로하기도 한다.
여담이지만 위와 같은 이유에서인지 밸브도 이런 제작 방식을 고수하며,[2] 가장 기본적인 데스메치 기능만 딸랑 갖추어진 UDK나 유니티3D와 대비적으로 상용화된 게임의 그래픽적 효과나 AI 관련 오픈 소스와 관련 에셋들이 상당해 MOD 제작이나 테스트에 용이하지만 소스 엔진 자체가 역설적이게도 하는 사람만 하는 워낙 매니악한 엔진인지라 국내에선 만약 이걸로 게임 제작사에 취업한다 치면 거의 가필패 취급이다.
또한 2016년 퀘이크 시리즈 레벨까지 아우르는 J.A.C.K이라는 비공식 에디터가 나왔는데, 각종 원형이나 도넛 구조 등 복잡한 지형지물을 비교적 손쉽게 만들 수 있지만 이 역시 각종 툴과 기능들에 대해 시행착오를 거쳐야 제대로 쓸 수 있다.
1.1. 관련 카페
- https://developer.valvesoftware.com/wiki/Main_Page (밸브 위키. 다만 밸브보단 모더나 맵쟁이 출신 일반 유저들 비중이 많다.)
- http://cafe.naver.com/cssmap (국내 관련 카페들 중 가장 크다. 비록 가필패 취급을 당하는 국내지만 위의 이점 때문에 제작 활동이 꽤 활발하다.)
[1] 다만 포탈2는 이 에디터를 쓰지 않고 포탈2 전용 에디터인 '오소링 툴'을 쓴다.(사용법이나 기본 인터페이스는 해머에디터와 크게 다르지 않다.)[2] 어차피 쓰던 엔진과 툴을 자체적으로 개량해 쓰면 (이미 사용법은 알고 있으니) 전혀 다른 사용&제작 방식의 툴을 굳이 돈을 들여가며 도입하는것도 모자라, 사용법까지 시간을 들여 제작자들에게 가르치거나 숙달시킬 필요가 없음 (차라리 그럴 시간에 창의적이거나 획기적인 기술이나 아이디어를 연마하지)+엔진과 툴은 어디까지나 게임의 밑바탕이란 생각 (하긴 포탈2도 이런 식으로도 잘 만드니)+엔진이나 툴 제작자에게 계속 라이센스까지 지불하며 의존할 일이 없음 등.
2. 에디터의 기능 및 활용 방법
2.1. 골드 소스용 해머 (World Craft)
[image]
'''설명은 위쪽 및 왼쪽 카테고리서부터, 중요하지 않은 기능은 중앙 그음으로 표기.'''
2.1.1. File
- New : 새 맵을 만든다.
- Open : 기존에 제작된 맵을 불러온다.[3]
- Save : 현재 상태로 저장.
- Save As : 다른 이름으로 저장.
- Export ... : 해당 확장자로 변환&저장.
- Run : 컴파일 (단축키는 F9, 자세한건 아래 '컴파일' 참조.)
2.1.2. Edit
- Undo : 되돌리기 (Ctrl+Z)
- Redo : (되돌리기 한 상태에서) 앞으로 되돌리기. (Ctrl+Y)
- Cut : (선택된 부분을) 잘라내기. (Ctrl+X)
- Copy : (선택된 부분을) 복사. (Ctrl+C)
- Delete : (선택된 부분을) 삭제. (Del)
- Clear selection : 붉게 선택된 부분을 해제. (Shift+Q)
- Select all : 맵상의 전체 오브젝트들을 선택.[4]
- Properties : 해당 엔티티(오브젝트)의 속성 창을 띄움. (Alt+Enter)
2.1.3. Map
- Snap to grid : 브러쉬나 엔티티들을 그리드(눈금)에 맞춤. (Shift+W)
- Show grid : 그리드를 에디터 상에 표시. (Shift+R)
- Grid Setting : 그리드 단위 세팅. (단축키는 p 옆에 있는 [ 두개.)
- Go to brush number : 해당 번호의 브러쉬로 가기.[5] (Ctrl+Shift+G)
- Show infomation : 맵에 대한 정보.[6]
- Map properties : 맵 속성.[7]
- Load Pointfile : 포인트 파일[8]
- Unload Pointfile : 불러온 포인트파일 해제.
2.1.4. View
- Screen Elelment
- 2D X/Y : (마우스로 최근 클릭한 창을) 위 아래(가 정면으로 보이는) 창으로 바꾼다.
- 2D Y/Z : (마우스로 최근 클릭한 창을) 동쪽과 서쪽 창으로 바꾼다.
- 2D X/Z : (마우스로 최근 클릭한 창을) 북쪽과 남쪽 창으로 바꾼다.
- 3D Wireframe : (마우스로 최근 클릭한 창을) 브러쉬나 엔티티 등이 각양각색의 선과 사각형으로 비춰지는 3D 창으로 바꾼다.
- 3D Filled Polygons : (마우스로 최근 클릭한 창을) 폴리곤이 입혀진 3D 창으로 바꾼다.
- 3D Textured Polygons : (마우스로 최근 클릭한 창을) 텍스처가 입혀진 3D 창으로 바꾼다.
- Autosize 4 Views : 네 창의 크기를 균일하게 조정. (Ctrl+A)
- Center View on Selection : 2D 창들을 (맵에 존재하는 브러쉬&엔티티들의) 중앙 위치에 맞춤.
- Show Connections : (트리거 등으로 Target 시켜) 서로 연결된 맵상의 엔티티들을 선으로 연결.
- Hide items : 아이템(정확히 말하면 NPC나 조명 관련된 엔티티까지) 숨김.
- Hide Paths : (기차 오브젝트나 NPC등이 이동하는) 구간 엔티티를 숨김.
- Hide Selected Objects : (선택된 브러쉬나 엔티티 등을) 숨김.[10]
- Show Hidden Objects : 위 기능에 의해 숨겨졌던 것들을 다시 보여줌.
2.1.5. Tools
- Carve : (다른 브러쉬와 겹친 상태에서) 특정 브러쉬를 선택하고 이 기능을 쓰면 선택된 브러쉬는 그대로 유지하되, 겹친 부분을 깎는다.[11] (Shift+Ctrl+C)
- Make Hollow : 브러쉬를 속이 빈 상자처럼 만든다. (Shift+H)
- Group : 복수 선택된 브러쉬나 엔티티를 싸잡아 그룹화 한다.[12] (Ctrl+G)
- Ungroup : 선택된 그룹을 해체. (Ctrl+U)
- Tie to entity : 브러쉬를 func로 시작하는 오브젝트로 변환. (Ctrl+T)
- Move to world : 위 기능에 의해 func화된 브러쉬를 일반 브러쉬로 되돌림. (Ctrl+W)
- Texture applications : 이동 가능한 텍스처 창을 생성한다. (Shift+A)
- Replace textures : 맵상의 특정 텍스처를 특정 텍스처로 다 바꿈.
- Texture Lock : 브러쉬를 임의대로 이동해도 거기에 입혀진 텍스처는 그대로 유지된다.[13] (Shift+L)
- Snap selected to grid : 선택된 사물을 그리드에 맞춤. (Ctrl+B)
- Transform : 선택된 브러쉬의 방향(Rotate), 규모(Scale), 위치(Move) 등을 지정된 값에 따라 변형한다. (Ctrl+M)
- Prefab Factory : 미리 저장된 의자나 책상 등을 이 기능으로 불러올 수 있다. 지금의 프롭과 개념은 비슷하지만 엔티티까지 포함한다는 점에서 차이가 있다.
- Crate Prefab (Ctrl+R) : 프리팹을 새로 만든다.
- Options : 에디터 설정 창.
2.1.6. Window
- New window : 기존 작업 창과 평행되는 새 창을 연다.
- Cascade : 창을 축소한다.
- Tile : 창을 펼친다.[14]
- Messages : 작업물을 불러오거나 컴파일 시 출력된 사항 등을 표시하는 메시지 창을 띄운다. (Alt+F3)
2.1.7. Help
도움말 항목. 온라인 링크도 걸려 있지만, 버전 따라 짤린 경우도 있다.
2.1.8. 아이콘들 (위에 언급한 기능 상당수가 여기에도 있지만 개중엔 여기에만 있는 기능도 있으니 참고.)
[image]
- 위 표시/숨김
- 그리드 규모 축소
- 그리드 규모 늘림
- 에디터에 표시된 4개의 창을 따로따로 윈도 크기로 만듬.
- Carve
- 선택된 사물들을 그룹화함.
- 선택된 그룹을 해체.
- 그룹 무시 활성/해제.[15]
- 선택된 사물을 숨김.
- 숨긴 사물을 표시.
- 그룹화된 그룹을 모두 표시
- 잘라내기
- 복사
- 붙이기
- 드래그한 영역에 살짝 걸친 사물들까지 선택하냐, 사물의 중앙까지 드래그해야 선택되냐의 유무.
- 드래그한 만큼 자동 선택되는 기능의 설정.
- 텍스처 락
- 텍스처 알레지먼트[16]
- 컴파일
- 선택 기능.
- (마우스 좌/우 클릭으로) 확대/축소.
- 카메라. (3D 창에선 클릭한 상태로 방향 전환 및 마우스 스크롤로 이동이, 2D 창에선 카메라 위치가 점으로 표시되어 이걸 드래그해 3D 화면 위치를 조정할 수 있으며 단축키는 Shift+C)
- 엔티티 추가 (3D 화면에선 벽이나 바닥에 총 쏘듯 생성시킬 수 있으며, 2D에선 그리드 위치 등을 선택하고 우클릭으로 생성시킬 수 있다.)
- 브러쉬 생성 툴.
- 텍스처 창 띄우기.
- 텍스처 창에 선택된 텍스처를 선택된 브러쉬에 전부 칠함. (다만 텍스처의 크기, 위치 등은 그대로인체 칠해진 텍스처 종류만 바뀌는 것이다.)
- 엔티티 설명과 비슷하게 3D 창에서 데칼을 마우스 클릭으로 생성시킨다.
- 버텍스 툴 (선택된 브러쉬의 꼭지점이나 변 위치 등을 조절. 단축키는 Shift+V)
2.1.9. 오브젝트(브러쉬) 생성 창
[image]
'''유의해야할 점은 이 기능을 쓰기에 앞서 브러쉬 생성 기능(Shift+B)을 선택&드래그 한 다음에 활성화 된다.'''
- toWorld : 생성시 기본 값
- toEntity : 선택된 브러쉬를 func화 함.
- Categories : 신규 생성 혹은 프리펩에서 선택하는 창.[17]
- Block : 사각형 브러쉬 생성.
- Wedge : 삼각형 브러쉬 생성.
- Cylinder : 원형 브러쉬를 생성, 참고로 Faces 값은 꼭지점 수.
- Spike : 송곳을 생성한다. 실린더처럼 꼭지점 수를 조절할 수 있다.
- Arch : 아치를 생성한다.
- Preview : 생성될 브러쉬 형태를 미리 본다. (다만 설정 값을 변경하면 실시간으로 뜨는게 아니라 프리뷰 버튼으로 '새로 고침' 해줘야 한다.)
- Wall width : 벽의 두께.
- Number of : 아치를 구성하는 브러쉬의 수.
- Arc : 각도. (참고로 Circle 버튼을 누르면 값이 360으로 맞춰지니 참고.)
- Start Angle : (아치가) 시작되는 각도.
- Add Height : (아치의) 높이[18]
2.1.10. 텍스처 창
[image]
- Scale : (선택된 브러쉬의) 텍스처의 크기를 설정한다. (1편에선 기본 값은 1, 2편에선 0.25.)
- Shift : 텍스처의 위치를 설정한다.
- L : 텍스처의 왼쪽 끝이 브러쉬의 왼쪽 끝에 맞춰지게끔 조정.
- R : 텍스처의 오른 끝이 브러쉬의 오른 끝에 맞춰지게끔 조정.
- Fit : 텍스처를 브러쉬의 크기에 맞게 조정.
- T : 텍스처의 위쪽이 브러쉬의 위쪽에 맞춰지게끔 조정.
- B : 텍스처의 밑 부분이 브러쉬의 밑 부분에 맞춰지게끔 조정.
- C : 텍스처의 중앙이 브러쉬의 중앙에 오게끔 조정.
- World : 브러쉬에 맞게 텍스처를 조정. 때문에 텍스처 일부가 늘어나는건 물론, 간판의 글귀 역시 브러쉬 상황 따라 뒤집히기도 한다.
- Face : 브러쉬의 형상이나 위치 상관없이 정 위치나 방향 등을 유지한다.
- Hide mask : 3D 창에서 현재 수정중인 텍스처가 붉게 표시되느냐 등을 설정한다.
- Apply : (텍스처 선택 창에서 다른 텍스처를 선택하고) 적용한다.
- Browse : 다른 텍스처를 한 화면에 놓고 검색한다.[19]
- Replace : 위에 언급된 Replace textures(특정 텍스처를 선택된 텍스처로 전부 바꿈) 와 기능이 같다.
2.1.11. 컴파일
[image]
에디터에서 작업한 레벨을 게임 상에서 구동이 가능하게 가공하는 작업이며, 맵 규모(크기와 복잡성) 및 사양 따라 시간이 2분에서 17시간(...)까지 걸릴 수 있다.
- Additonal game parameters : 추가 변수 입력 란. $exedir 등의 명령어를 입력하나 일반적으로 크게 쓸 일은 없다.
- Run CSG : 1차 가공.
- Run BSP : BSP 확장자로 변환.
- Run VIS : 최적화 작업. 따라서 어떤 의미론 컴파일 시간의 대부분을 차지한다.
- Run RAD : 조명을 추가한다.
- Don't run the game : 컴파일 끝나자마자 게임 실행 안함[20]
2.1.12. 주 엔티티들
2.1.12.1. 포인트 엔티티
- ambient_generic: 소리 엔티티.
- Name: 이름. ambience(배경음) 소리라면 지정하지 않아도 들리지만 트리거에 의해 임의 작동하는 소리들의 경우 기재 필수.
- Wav Name: (하프라이프 Sounds 폴더 내) 경로를 지정하는 란.
- Volume: 소리의 크기 10이 최대다.
- Dynamic Present: 소리 변조 효과.
- Start Volume: 시작시 소리 크기
- Fade in/out : 소리를 페이드 인, 아웃 시킬 시간.
- Pitch: 소리의 높낮이.
- Start Pitch: 시작시 소리의 높낮이.
- 플랙
- Play Everywhere: 맵 어디에 있든 다 들리는거. 다만 플레이어가 소리 위치를 등지고 있거나 할 땐 덜 들릴 수 있음.
- Radius: 소리가 들릴 수 있는 범위. Small~Large 중에서 택.
- Start Silent: 시작시 들리지 않게 하기. 주로 버튼에 의해 작동되는 기기음들에 사용되며 1회성 소리들의 경우 이걸 하지 않아도 됨.
- Is NOT Looped: 소리가 반복적으로 들리지 않게 하기.(1회용으로 쓰기)
- cycler: 맵에 임의적인 모델 등을 삽입하는 엔티티.
- env_beam: 맵에 광선 효과를 준다. (자주 쓰이는 값 이외엔 누락했으니 참조.)
- Name: 이름. 트리거에 의한 작용을 주려면 기제 필수.
- Start Entity: 광선이 시작될 엔티티. (해당 엔티티 이름을 적든 상관없음.)
- Ending Entity: 광선이 끝날 엔티티.
- Render FX: 추가 효과.
- Brightness: 광선의 밝기. 1~255까지 설정할 수 있으며 이 설정을 높게 잡는다고 주변이 밝아진다거나 하는건 없으니 참고.
- Beam Color: RGB 중에서 원하는 색을 지정할 수 있다.
- Radius: 광선의 범위. 시작과 끝이 정해진 경우 이걸 높게 잡아도 크게 두드러지진 않으나, 방사되는 광선의 경우, 그 효과가 눈에 띄게 보여진다.
- Life: 광선의 지속시간. 0으로 하면 트리거에 의해 중단될 때까지 무한.
- Width of Beam: 광선의 굵기.
- Amount of Noise: 노이즈(흔들리는 현상) 값.
- Sprite Name: 광선에 쓰일 빔 형식의 스프라이트 이름을 기재하는 곳.
- Texture Scroll Rate: 위 스프라이트를 얼만큼 스크롤링 시키느냐를 지정하는 항목.
- Damege / Second: 초당 데미지.
- 플랙
- Start On: 기본적으로 켜져 있는(작동) 상태.
- Toggle: 껏다 켰다 할수 있는 상태.
- Random Strike: 무작위로 광선들을 방사시킴.
- Ring: 시작과 끝 지점을 원형으로 둘러 지나감. 하지만 시간이 경과되면 이 효과는 사라진다.
- Start, End Spark 광선의 시작이나 끝에 스파크를 생성.
- Decal End: 광선의 끝에 데칼을 생성.
- Shade Start, End: 광선의 시작이나 끝을 흐리게 만듬.
- env_explosion: 폭발 엔티티.
- Name: 엔티티 이름.
- Magnitude: 폭발 위력. (반경과 데미지)
- env_glow: 조명 같은 광원에서 발산되는 오오라(?)등을 표현한다.
- Name: 엔티티 이름
- Render Fx : 그래픽적 효과. 하지만 해당 엔티티에 이걸 설정한다 해서 꼭 적용되지는 않는다.
- Render Mode : 렌더 모드. 골드 소스의 대다수 스프라이트는 Additive용이니 거기에 맞춰두자.
- Fx Amount : 투명값. 0~255까지 설정 가능.
- Fx Color : 별도의 RGB값을 지정, 스프라이트의 색을 조정.
- Sprite Name: 해당 엔티티에 쓰일 스프라이트 경로.
- Scale: 스프라이트의 크기.
- env_render: (트리거 등에 의해) 기존 엔티티의 그래픽적 효과[21] 를 변경시키는 엔티티.
- env_shake: 플레이어에게 진동(흔들림)을 주는 효과. 다만 플레이어 상태가 체공시간일 시 효과가 적용되지 않을 수 있다.
- Name: 이름.
- Amplitude: 진폭.
- Effect Radius: 엔티티가 일대에 주는 효과 범위.
- Duration: 지속 시간.
- 0.1jerk, 255rumble: 진동의 세기.
- env_sound: 플레이어가 해당 엔티티의 적용 구간을 지나면 발걸음이나 총소리의 메아리 같은 부수적인 효과를 주는 엔티티. 참고로 소스용 해머에선 이 엔티티의 적용 범위가 맵에 표시되게끔 바뀌었다.
- env_spark: 엔티티의 중심에서 주기적으로 스파크를 튀긴다.
- env_sprite: 이름 그대로 스프라이트.
- Name: 엔티티 이름
- Render Fx : 그래픽적 효과. 하지만 해당 엔티티에 이걸 설정한다 해서 꼭 적용되지는 않는다.
- Render Mode : 렌더 모드. 골드 소스의 대다수 스프라이트는 Additive용이니 거기에 맞춰두자.
- Fx Amount : 투명값. 0~255까지 설정 가능.
- Fx Color : 별도의 RGB값을 지정, 스프라이트의 색을 조정.
- Framerate: (애니메이션 스프라이트의) 프레임 속도를 설정.
- Sprite Name: 해당 엔티티에 쓰일 스프라이트 경로.
- Scale: 스프라이트의 크기.
- 플랙
- Start On: 시작시 보임.
- Play Once: 한번만 재생.
- info_landmark: 후술할 Trigger_Changelevel과 연동되는 엔티티. 보통 체인지 레벨 근처(로딩 지역)에 위치시킨다.
- Info_Node: 높낮이가 다양하고 엄폐물이 많은 복잡한 지형에서 A.I의 경로를 제시하는 일종의 등대이자 웨이포인트. 어떻게 배치하느냐에 따라 잉여가 될수도, 기가 막힐 정도로 잘 쫓아오는게 갈린다.
- info_player_deathmatch: 데스매치용 플레이어 생성 지점. 카스에선 테러리스트 플레이어 생성 지점이다.
- info_player_start: 싱글 등에서 플레이어의 시작 지점. 카스에선 대 테러리스트 플레이어 생성 지점.
- info_target: 광선이나 텔레포트 등의 타겟팅 전용 엔티티.
- info_teleport_destination: 텔레포트 타겟팅 전용 엔티티.
- infodecal: 데칼[22] 엔티티. 이름을 기재하면 트리거에 의해서만 보여짐.
- light: 맵에서의 조명을 설정한다.
- Name: 이름. 트리거에 의해 작동시킬시 기재 필수. 다만 이렇게 작동시키면 아래 조명 깜박임 같은 부수적인 효과를 설정해도 하나마나다.
- Brightness: 빛의 밝기.
- Appearance: 조명이 어두웠다 밝아졌다, 깜박였다 하는 효과를 설정한다.
- Custom Appearance: 특정 코드를 입력하면 그에 맞는 효과를 줌.
- 플랙
- Initially Dark: 시작시 꺼진 상태.
- light_environment: 햇빛(Sky 텍스처)에 의한 조명 처리.
- Pitch Yaw Roll (X Y Z): 햇빛이 비출 방향.
- Pitch: 비추는 각도.
- Brightness: 밝기.
- light_spot: 스포트 라이트를 주는 조명 엔티티.
- Name: 이름.
- Pitch Yaw Roll (X Y Z): 비출 방향.
- Inner (bright) Angle: 안쪽 조명 방향.
- Outer (bright) Angle: 바깥쪽 조명 방향.
- Pitch: 비추는 각도.
- Brightness: 밝기.
- Is Sky: 햇빛 효과를 주느냐의 유무. 체크하면 위 environment 엔티티의 효과를 준다.
- Appearance: 위 light 엔티티에서처럼 부수적인 효과를 주지만 그것과 같이 경우에 따라 적용되지 않을 수 있음.
- 플랙
- Initially Dark: 시작시 꺼진 상태.
- multi_manager: 다수의 엔티티를 시간에 따라 복합적으로 처리해야 할 시 써야 할 엔티티. 엔티티의 이름을 먼저 적고 엔티티 창 우측 SmartEdit 버튼을 눌러보면 Targetname(해당 엔티티 이름) 말곤 아무것도 없는데, 밑에 add 버튼을 누른 다음 Key 값(특정 엔티티의 이름)과 Value(작동할 시간. 단위는 초.)를 적을 수 있다.
- multisource: 해당 엔티티의 이름을 Master 항목에 적은 엔티티들을 잠그거나 사용 가능하게 푸는 일종의 자물쇠. 참고로 해당 엔티티를 타겟팅한 하나 이상의 엔티티들이 모두 언락돼야 잠금 조건이 풀린다.
- path_corner: 본디 승강기 용도나 간혹 일부 NPC의 순찰 경로로도 쓰인다.
- Name: 이름.
- Next stop target: 다음 경로.
- Fire on Pass: 무언가가 이 경로를 지날시 해당 이름을 가진 트리거가 작동.
- Wait here (secs): 일정 시간(초) 동안 해당 구간에 머무름.
- New Train Speed: 이 경로를 지나는 무언가의 진행 속도를 설정.
- New Train rot. Speed: 이 경로를 지나는 무언가의 회전 속도를 설정.
- 플랙
- Wait for retrigger: 해당 엔티티를 지난 무언가를 트리거가 다시 타겟시킬 때까지 정지.
- Teleport: 해당 구간을 텔레포트로 지남.
- Fire Once: 위 Fire on Pass로 트리거 작동시 여러 번이 아닌 한번만 되게 설정.
- path_track: 기차의 경로로 자주 쓰이는 엔티티.
- Name: 이름.
- Next stop target: 다음 경로.
- Fire on Pass: 무언가가 이 경로를 지날시 해당 이름을 가진 트리거가 작동.
- Branch Path: 선로의 분기점 엔티티 이름. 트리거가 해당 track 엔티티의 이름을 지정하면 자동으로 경로가 바뀌는 식.
- Fire on dead end: 기차가 경로의 끝에 멈췄을때 작동. 하프라이프 본편에선 기차가 전용 승강기에 올랐을때 위/아래로 작동하는 용도로 쓰인다.
- New Train Speed: 이 경로를 지나는 기차의 속도를 설정.
- 플랙
- Disabled: 시작시 지날 수 없게 차단된 상태.
- Fire Once: 위 Fire on Pass로 트리거 작동시 여러 번이 아닌 한번만 되게 설정.
- Branch Reverse: 분기를 반대로.
- Disable Train: 플레이어가 기차를 조작할 수 없게 만듬.
- player_weaponstrip: 작동시 장비 압수한다.
- speaker: 전장의 총격이나 포격 소리를 간헐적으로 들리게 해준다.
2.1.12.2. func 엔티티
- func_breakable: 부서지는 상자나 벽 용도로 쓰인다.
- Name: 엔티티의 이름. 트리거에 의해 부서지는 용도로 쓸 시 체크.
- Global Entity Name: 2개 이상의 맵에서 엔티티의 상태[23] 등을 동일하게 유지하게끔 기재하는 란.
- Target on break: 파괴시 해당 이름을 가진 엔티티 작동.
- Strength: 엔티티의 체력.
- Material Type: 해당 엔티티의 속성. 다만 Unbrekable Glass는 체력 유무에 상관없이 일반 무기론 파괴가 안되니 참고.
- Gibs Direction: 파편이 쏟아질 방향.
- Delay before fire: 트리거가 작동될 때까지 지연 시간.
- Gib Model: 파편에 쓰일 커스텀 모델 경로.
- Spawn On break: 엔티티가 부서지면 생성되는 아이템 종류.
- Explode Magnitude: 엔티티가 부서지면 폭발하는 강도.
- 플랙
- func_button: 맵 상에서의 버튼.
- Global Entity Name: 위에서처럼 2개 맵에서의 상태 등을 동일하게 유지하는데 쓰인다. 이 경우 이중 문이나 승강기 안에서 맵을 바꿀 시 자주 쓰인다.
- Name: 엔티티의 이름. 일반적으로 잘 쓰이진 않으나 트리거에 의해 임의로 작동시킬 시 기재.
- Taget: 버튼을 누르면 작동할 엔티티의 이름.
- Speed: 사용시 버튼의 이동 속도.
- Health: 빠루나 총기 등으로 해당 엔티티를 때려야 작동되게끔 만든다.
- Lip: 버튼이 지정된 방향으로 덜 들어가는 값.
- Master: 여기에 위 multisource 엔티티의 이름을 기재했다면 해당 엔티티가 트리거로 잠금 해제를 하지 않는 한 계속 잠금 상태로 만들 수 있다.
- Sound: 버튼의 작동음 설정.
- Delay before reset: Target시킨 엔티티가 작동될 때까지의 지연 시간.
- Locked Sound: 잠겼을 때의 소리.
- Unlocked Sound: 잠김 풀렸을 때 소리.
- 플랙
- Don't Move: 버튼이 움직이지 않고 고정.
- Toggle: 빠른 껏다 켰다 가능.
- Spark: 스파크 튀김.
- Tought Active: 접촉으로 작동.
- func_conveyor: 컨베이어 벨트. 통상적으로 위쪽 브러쉬가 밀어내는 작용을, scroll로 시작하는 이름의 텍스처를 입히면 작용하는 면이든 상관없이 스크롤링 된다.
- func_door: 맵 상에서의 버튼.
- Name: 엔티티의 이름. 이름이나 Master로 묶이지 않았다면 접촉과 동시에 작동.
- Render Fx : 그래픽적 효과. 위에서 언급했던 내용들은 일부 생략.
- Render Mode : 렌더 모드.
- Fx Amount : 투명값.
- Fx Color : 색 조정.
- Global Entity Name: 전술했듯 체인지 레벨 엔티티 작동 이후에도 문의 위치 등을 다음 맵에서도 유지시킨다.
- Pitch Yaw Roll (X Y Z): 문의 이동 방향.
- KillTarget: 작동시 (문이 열리면) 영구 제거시킬 엔티티의 이름.
- Speed: 문의 이동 속도.
- Master: 멀티 소스로 잠글때 기재.
- Move Sound: 위잉~위잉 하는 문 작동음.
- Stop Sound: 철컹~ 하는 문 정지시의 소리.
- Delay before close: 문이 열리고 도로 닫히는데 걸리는 시간(초). 참고로 -1 같은 음수를 기재하면 플랙의 토글을 체크하지 않는 한 다시 닫히지 않는다.[24]
- Lip: 문의 진행 방향으로 덜 들어가는 값. 여기에선 덜 닫힌 문을 표현할 때 사용된다.
- Damage inflected when blocked: 문이 작동할때 끼였을 시의 데미지.
- Taget: 문이 열리면 작동할 엔티티의 이름.
- Delay before fire: Target시킨 엔티티가 작동할 때까지의 지연시간.
- Fire on close: 한번 열린 문이 닫혔을 시 작동할 엔티티 이름.
- Health: 위 버튼 엔티티처럼 맞아야 작동시킬지에 대한 유무.
- Locked Sound: 잠겼을 때의 소리.
- Unlocked Sound: 잠김 풀렸을 때 소리.
- 플랙
- Start Open: 이미 열린 상태.
- Passable: 플레이어나 NPC가 통과 가능한 상태로 만든다.
- Toggle: 트리거로 '열렸다 닫혔다' 상태로 만듬.
- Use Only: 위 버튼처럼 사용키를 써야 작동되게끔 만듬.
- Monster Can't: NPC가 해당 문을 열지 못하게 만듬. 하지만 보르티곤트 같은 일부 NPC들은 이걸 씹고 잘만 돌아다닌다.
- func_door_rotating: 회전하는 문. 참고로 전 면이 Origin으로 칠해진 브러쉬랑 한 세트여야 하며 위 Door과 큰 차이는 없으니 일부 생략.
- Distance(Dec): 회전 각도를 설정한다. 회전 방향은 플레이어가 문을 열 때 정면이나 반대냐에 따라 결정된다.
- 플랙
- Start Open: 이미 열린 상태.
- Reverse Dir: 반대 방향으로 회전. 비단 이걸 체크하지 않아도 위 회전 각도 정하는 란에서 음수로 지정해도 반대로 회전한다.
- Passable: 플레이어나 NPC가 통과 가능한 상태로 만든다.
- One-Way: 한 방향으로만 회전하게끔 만든다.
- Toggle: 트리거로 '열렸다 닫혔다' 상태로 만듬.
- X/Y Axis: 기존 Z(평면) 축에서 X, Y 축으로 회전시킬지를 정한다.
- Use Only: 사용키를 써야 작동되게끔 만듬.
- Monster Can't: NPC가 해당 문을 열지 못하게 만듬.
- func_friction: 플레이어가 이거에 접촉시 미끄러지게 만드는 엔티티.
- func_healthcharger: HP 충전기.
- func_illusionary: 기본적으로 통과 가능한 엔티티.
- Contents: 기본적인 '빈' 상태냐, 방에 텍스처 라이트닝으로 조명을 주는 효과로 쓸 지를 설정.
- func_ladder: 이 엔티티에 접촉한 플레이어가 사다리(벽)을 탈 수 있게 설정한다.
- func_monsterclip: NPC 전용 보이지 않는 벽.
- func_pushable: 밀 수 있는 상자.
- Name: 엔티티의 이름. 트리거로 부술 일이 없는 한 기재할 일 없음.
- Global Entity Name: 위에서와 마찬가지로 양쪽의 맵을 오갈때 기재한 상자에 한해 위치 등을 유지시킬 수 있게 해줌.
- Target on break: 파괴시 해당 이름을 가진 엔티티 작동.
- Strength: 엔티티의 체력.
- Material Type: 해당 엔티티의 속성. 다만 Unbrekable Glass는 체력 유무에 상관없이 일반 무기론 파괴가 안되니 참고.
- Gibs Direction: 파편이 쏟아질 방향.
- Delay before fire: 트리거가 작동될 때까지 지연 시간.
- Gib Model: 파편에 쓰일 커스텀 모델 경로.
- Spawn On break: 엔티티가 부서지면 생성되는 아이템 종류.
- Explode Magnitude: 엔티티가 부서지면 폭발하는 강도.
- Hull Size: 상자의 크기. 기본 덩어리냐, 플레이어 크기에 맞추느냐 등등을 설정.
- Friction: 밀었을 때 상자가 얼만큼 미끄러지느냐의 값.
- Buoyancy: 부력.
- 플랙
- Brekable: 파괴 가능.
- func_recharge: 보조 체력 충전기.
- func_rot_button: 회전식 레버.
- Name: 엔티티의 이름. 트리거로 임의적으로 작동시킬때 기제.
- Global Entity Name: 레버 상태를 복수의 맵에서 유지.
- Targetted object: 작동시킬 엔티티 이름.
- Change Target Name: 바꿀 엔티티 이름.
- Master: 멀티 소스로 잠글때 기재.
- Speed: 회전 속도.
- Health: 맞아야만 작동시 기재.
- Sounds: 작동음.
- Delay before reset: 작동한 다음 역회전해 원래대로 돌아오기까지의 시간.
- Delay before fire: Target시킨 엔티티가 작동할 때까지의 지연시간.
- Distance(Dec): 회전 각도.
- 플랙
- Not Solid: 레버 자체를 통과 가능케 만듬.
- Reverse Dir: 반대 방향으로 회전.
- Toggle: 자동 역회전해 원래대로 되돌아 가지 않고 사용 키로만 '열렸다 닫혔다' 상태로 만듬.
- X/Y Axis: 기존 Z(평면) 축에서 X, Y 축으로 회전시킬지를 정한다.
- func_rotating: 회전만 하는 엔티티. 주로 선풍기의 날개나 돌아가는 기기의 회전부 등을 표현할때 쓰인다.
- Roation Speed: 회전 속도.
- Volume: 작동시 소리 크기.
- Friction: 트리거 등으로 작동이나 끌 때 얼만큼 미끄러지느냐.
- Fan Sounds: 작동음.
- WAV name: 위 작동음 대신 커스텀 소리를 넣을때 기재.
- Damage inflected when blocked: 작동시 무언가와 충돌했을 때 주는 데미지.
- 플랙
- Start ON: 시작시 작동 상태.
- Reverse Directro: 반대로 회전.
- X/Y Axis: 기존 Z(평면) 축에서 X, Y 축으로 회전시킬지를 정한다.
- Acc/Dcc: 회전 값 이내에서 가속이나 감속을 한다.
- Fan Pain: 플레이어가 접촉시 충격(데미지)을 준다.
- Not Solid: 통과 가능케 만듬.
- Small~Large Radius: 소리가 들리는 범위.
- func_wall: 일반적인 벽.
- func_wall_toggle: 트리거에 의한 출현과 소멸이 가능한 엔티티.
- 플랙
- Start Invisible: 시작시 소멸 상태.
- 플랙
- func_water: 물 엔티티. 대부분 설정은 전술한 Func_door를 기반으로 하니 대다수 설정은 해당 엔티티를 참고.
2.1.12.3. 트리거 엔티티
- trigger_auto: 자동으로 타겟팅된 엔티티를 작동시킨다.
- Target: 작동시킬 엔티티 이름.
- Delay before trigger: 타겟한 트리거가 작동되기까지의 지연 시간.
- Kill Target: 작동과 동시에 제거할 엔티티 이름.
- Global State to Read: Enb_Global의 값을 읽어들여 작동시킬지에 대한 유무.
- Trigger State: 시작시 꺼짐, 혹은 켜졌냐, 토글 등을 설정.
- 플랙
- Remove on Fire: 한번 작동하고 나면 제거.
- trigger_camera: 카메라 엔티티. 주로 게임 중간의 컷씬 등을 연출하는데 쓰인다.
- Target: 카메라가 처다 볼 대상.
- Name: 카메라 엔티티 이름.
- Hold Time: 카메라 작용의 지속 시간.
- Path Coner: 전술한 Path_coner를 따라 이동한다. 없다면 공란으로 해두자.
- Initial Speed: 이동 속도.
- 플랙
- Start At Player: 플레이어로부터 시작.
- Follow Player: 플레이러를 따라감.
- Freeze Player: 엔티티 작동 시점에 플레이어를 정지시킴.
- trigger_changetarget: 특정 엔티티의 타겟 대상을 다른 걸로 바꿈.
- Target: 바꿀 타겟.
- Delay before trigger: 타겟한 트리거가 작동되기까지의 지연 시간.
- Kill Target: 작동과 동시에 제거할 엔티티 이름.
- Name: 엔티티 이름.
- New Target: 변경할 새 타겟 이름.
- trigger_relay: 의미는 A라는 트리거가 이걸 타겟팅하면 B라는 트리거로 연결해주는 역할...이지만 실상은 그냥 잡역부 엔티티.
- Name: 엔티티 이름.
- Target: 전달할 엔티티 이름.
- Delay before trigger: 타겟한 트리거가 작동되기까지의 지연 시간.
- Kill Target: 작동과 동시에 제거할 엔티티 이름.
- 플랙
- Remove on Fire: 한번 작동하고 나면 제거.
2.1.12.4. 트리거 브러쉬
- trigger_autosave: 플레이어가 해당 엔티티를 지나면 자동 저장이 되는 체크 포인트 엔티티. Master로 잠글 수 있다.
- trigger_changelevel: 싱글플레이어 게임이나 스벤코옵 같은 멀티 코옵 MOD에서 다음 맵을 불러올때 쓰는 엔티티. 통상적으로 플레이어가 여길 지나면 작동되며, 불러온 맵에서도 지나온 기존 맵을 (형식적으로라도) 체인지 레벨 시키는 엔티티들이 없다면 튕길 수 있다.
- trigger_counter: 자신을 일정량 타겟팅하면 특정 타겟을 작동시킴. 하프라이프 본편에선 어니 매그너슨의 전자레인지가 좋은 예.
- Target: 조건 만족시 타겟시킬 엔티티 이름.
- Name: 엔티티의 이름.
- Killtarget: 작동과 동시에 죽일(영구 제거할) 엔티티 이름.
- Master: 이걸로 잠궈놓으면 아무리 해당 엔티티를 타겟팅해도 타겟팅 수를 세지 않는다.
- Delay before Trigger: 타겟팅된 엔티티 작동까지의 지연 시간.
- Count before activation: 어느 정도 타겟팅 돼야[26] 작동시킬지를 적는 곳.
- trigger_endsection: 싱글 등에서 게임을 끝낼 때 쓰는 엔티티. 다만 섹션 란에 일정 코드를 입력해야 한다.
- trigger_gravity: 플레이어의 중력 값을 조절한다.
- Gravity: 0~1 사이의 소수로 중력 값을 설정.
- trigger_hurt: 접촉한 플레이어나 NPC에게 데미지를 준다.
- Name: 엔티티의 이름.
- Master: 잠금 시킬지에 대한 유무.
- Damage: 데미지 량.
- Damage Type: 데미지 종류.
- 플랙
- Target Once: 한번만 타겟시킴.
- Start Off: 시작시 비활성화.
- No clients: 플레이어는 여기에 영향을 받지 않음.
- trigger_multiple: 해당 트리거가 맵에 차지하고 있는 면적에 무언가가 진입하면 트리거를 작동. 다만 한번 쓰고 버리는 Once와 달리 일정 시간이 지나면 다시 작동한다.
- Target: 타겟시킬 엔티티 이름.
- Name: 엔티티의 이름.
- Kill Target: 작동과 동시에 영구 제거할 엔티티 이름.
- Master: 잠금 시킬지의 유무.
- Delay Before Reset: 작동후 재사용이 가능하기까지의 시간.
- 플랙
- Monsters: NPC가 여길 지나도 작동하게끔 설정.
- No Clients: 플레이어가 여길 지나도 작동하지 않음.
- Pushables: 밀 수 있는 상자 등이 지나면 작동.
- trigger_once: 위 multiple과 달리 한번 쓰고 버리는 1회성 트리거. 재사용 가능 항목의 유무를 제외하면 위 multiple과 내용은 동일.
- trigger_push: 말 그대로 해당 트리거 엔티티의 면적에 닿은 모든걸 특정 방향으로 밀어낸다.
- Master: 잠금 유무.
- Speed of push: 밀어내는 강도.
- 플랙
- Once Only: 한번만 작용.
- Start Off: 시작 시 꺼짐.
- Pushables: 밀어내는 상자도 영향을 받음.
- trigger_teleport: 해당 트리거 엔티티에 닿은 플레이어나 NPC 등을 타겟팅된 지점으로 텔레포트 시킴.
- Target: 텔레포트 시킬 엔티티의 이름. 주로 info_target이나 info_teleport_destination 등이 쓰인다.
- Name: 엔티티의 이름.
- Master: 텔레포트 기능에 대한 잠금 유무.
- 플랙
- Monsters: NPC도 텔레포트 되게끔 설정.
- No Clients: 플레이어는 텔레포트가 안됨.
- Pushables: 밀 수 있는 상자도 텔레포트 됨.
- trigger_transition: 위 trigger_changelevel과 연동해 해당 트리거 내부에 플레이어가 없는 경우 다음 맵 로딩이 취소된다. 작명은 info_landmark와 동일하며 승강기, 이중 문에서 쓰인다.
2.2. 소스 엔진용 해머
[image]
골드 소스와 크게 바뀐것 없이 신규 엔진에 걸맞는 기타 자잘한 기능들이 추가되어 이 항목에선 새로 추가된 기능 위주로 설명한다.
2.3. 하프라이프 알릭스 해머
사실상 소스2 해머로 하프라이프 알릭스 워크샵 툴에 내장된 에디터이다. 알릭스 용 해머이기에 결과물을 VR로만 테스트할 수 있다는게 단점이다. 도타2도 이와 동일한 에디터가 있다.
2.4. 툴(특수 목적의) 텍스처들
별도의 값을 지정하지 않아도 브러쉬 전면에 칠하는 것만으로도 자체 속성이 적용되는 텍스처들이다.
- 골드 소스
- 소스 엔진
- Areaportal - Func_areaportal 용.
- Blockbullets - (발사된) 탄환을 차단한다.
- Clip - 전작의 그것과 동일.
- Fog - func_smokevolume과 병행해 사용됨.
- Npc clip - NPC의 진입을 선택적으로 차단한다.
- Nodraw - 해당 텍스처가 칠해진 면을 선택적으로 안 보이게 만든다. 다만 Displacement 적용된 텍스처에 이걸 바를시 Nodraw 텍스처가 그대로 게임상에 나온다.(...)
- Player clip - 플레이어의 진입을 선택적으로 차단한다.
- Skybox - 스카이 박스[30] 용 스카이 텍스처.
[3] 다만 확장자가 하나로 통합되지 않고 rmf, map 등으로 이루어져 있으니 안 뜨면 찾고자 하는 파일 형식을 바꾸든가 *.* 등을 치면 된다.[4] 다만 규모가 크고 복잡한 맵일수록 잠시 멈추는 현상도 있다.[5] 에디터 특성상 생성된 순서나 위치 등을 기준으로 번호를 임의로 붙인다.[6] 브러쉬나 엔티티, 텍스처 등을 포함한 것.[7] 오브젝트의 최대 표시 거리라든지 스카이 내용 등등.[8] 컴파일 시 생성되는 파일이며, 불러오면 컴파일러가 어딜 헤집고 돌아다녔냐 등을 경로로 표시하나 버전이나 그래픽 카드 문제로 보여지지 않는 경우도 있으며, (경로가 올바르다면) 게임 콘솔 창에서 pointfile 등으로도 불러와 확인이 가능하다.[9] 없어도 Shift+A로 화면에 띄울 수 있다.[10] 다만 클립 브러쉬 등은 경우에 따라 숨겨놔도 다시 보여진다.[11] 다만 Carve 적용할 브러쉬가 깎을 브러쉬보다 면적이 작거나 어중간하게 겹침, 사각형 이외의 도형으로 했다면 십중팔구 아래 이미지처럼 깨진 상태가 되며, 이 상태로 컴파일&테스트하면 깨진 브러쉬의 금이 게임상에서 그대로 보이는 건 물론이요, 이 꼴도 난다. 아무튼 은근히 많은 사용자들이 간과하고 있는 사실. 해결법은 Undo 혹은 그 브러쉬 형태에 맞게 브러쉬를 하나하나 새로 생성, 재작업하는 수밖에 없다. [image][12] 이때 그룹과 그룹을 섞어 한 그룹으로 묶는것도 가능하며, 이 상태로 저장해도 유지되는건 Rmf 확장자에서만 가능하고 Map 파일에선 저장과 동시에 자동 해제된다.[13] 다만 텍스처 값(예컨데 0.45 같이 소숫점일수록)에 따라 위치 등이 미묘하게 바뀌기도 한다.[14] 이 상태에서도 에디터와 창이 분리된 관계로 해당 창을 임의로 이동시킬 수 있으며, 더블 클릭으로 에디터에 펼침&고정시킬 수 있다.[15] 그룹화를 유지하되 그걸 구성하는 사물 위치를 조정할 수 있다. 여담으로 Move to world와 단축키가 같지만 이 기능과는 미묘한 차이가 있다.[16] 브러쉬를 생성 혹은 복사할 때마다 브러쉬의 면들을 world에서 face로 자동 조정.[17] 만약 프리펩을 여기 이 기능으로 추가한다면 해당 영역에 맞게 늘여지거나 쭈글어든 상태로 나온다.[18] 다만 드래그된 영역에서 생성되므로 어떤 의미론 잉여.(...)[19] 화면 하단에서 텍스처들의 크기 조정 및 이름이나 해당 맵에서 사용되는 텍스처를 선택적으로 검색이 가능하다.[20] 기본적으로 컴파일이 끝나면 게임이 자동적으로 실행되게끔 되어 있는데, 원치 않거나 이 기능의 작동이 원할하지 않을 시 체크하자.[21] 텍스쳐 투명 값이라든지 등등.[22] 벽이나 바닥의 혈흔이나 얼룩, 타이어 그을림 등.[23] 쉽게 요약하면 기차를 타고 다음 맵을 불러올때 기차 속도나 선로에서의 위치 등을 다음 맵의 동명의 글로벌 이름을 가진 엔티티가 계승.[24] 여담으로 토글 체크에 이게 양수 값인 상태의 문이 무언가에 부딪치면 후진을, 음수 상태라면 무언가가 제거될 때까지 그 상태를 유지한다.[25] 여담으로 후술할 trigger_transition도 이 엔티티와 동명이어야 한다.[26] 예컨데 버튼(func_button)의 타깃을 이 카운터 엔티티 이름으로 지정한 뒤 이 카운터 엔티티로 와서 이 항목을 3으로 쓰면, 정확히 버튼을 3번 눌러야 이게 작동된다.[27] 이후 Zoner's half-life tools 라는 이름으로 공개된다.[28] 다만 Zoner's 최신 버전에만 적용된다.[29] Origin이 칠해진 브러쉬 중앙을 기준으로. 따라서 직사각형이든 정사각형이든 상관없지만 중심을 잘 보이는 이유로 디자이너 사이에서 정사각형을 애용하는 편이고 경우에 따라선 시야를 가린답시고 아예 2x2 크기로 축소시키는 경우도 있는데 이 경우에도 작동에는 문제 없다.[30] 다만 배경 텍스처와 조명만 적용되던 전작과 달리 맵 구석에 배경용으로 따로 있는 미니어처 세트 트리거가 적용되면 이것도 함께 보여준다.