1. 개요2. 골드 소스용 해머 ((구) World Craft)
2.1. File2.2. Edit2.3. Tools2.4. Window2.5. Help2.6.
아이콘들 2.7. 오브젝트(브러쉬) 생성 창2.8.
컴파일
3.
소스 엔진용 해머2.8.1. 에러 메시지
2.9. 주 엔티티들2.10.
프리팹 팩토리2.11. 기타 보조 프로그램3.1. 아웃풋, 인풋(Output, Input)3.2. 디스플레스먼트(Displacements)3.3. 페런트(Parent)3.4.
프롭(Prop)3.5. 인스턴스 (func_instance)3.6. 포탈2 오소링 툴(Authoring Tools)
4. 툴(특수 목적의) 텍스처들5. 관련 사이트1. 개요
본 항목은 골드 소스에서 소스 엔진 때까지의 항목을 서술한다.
2. 골드 소스용 해머 ((구) World Craft)
설명은 위쪽 및 왼쪽 카테고리서부터, 중요하지 않은 기능은 중앙 그음으로 표기.
2.1. File
- New: 새 맵을 만든다.
- Open: 기존에 제작된 맵을 불러온다.[1]
- Save: 현재 상태로 저장.
- Save As: 다른 이름으로 저장.
- Export : 해당 확장자로 변환&저장.
- Run: 컴파일 (단축키는 F9, 자세한건 아래 '컴파일' 참조.)
2.2. Edit
- Undo: 되돌리기 (Ctrl+Z)
- Redo: (되돌리기 한 상태에서) 앞으로 되돌리기. (Ctrl+Y)
- Cut: (선택된 부분을) 잘라내기. (Ctrl+X)
- Copy: (선택된 부분을) 복사. (Ctrl+C)
- Delete: (선택된 부분을) 삭제. (Del)
- Clear selection: 붉게 선택된 부분을 해제. (Shift+Q)
- Select all: 맵상의 전체 오브젝트들을 선택.[2]
- Properties: 해당 엔티티(오브젝트)의 속성 창을 띄움. (Alt+Enter)
2.2.1. Map
- Snap to grid: 브러쉬나 엔티티들을 그리드(눈금)에 맞춤. (Shift+W)
- Show grid: 그리드를 에디터 상에 표시. (Shift+R)
- Grid Setting: 그리드 단위 세팅. (단축키는 p 옆에 있는 [ 두개.)
- Go to brush number: 해당 번호의 브러쉬로 가기.[3] (Ctrl+Shift+G)
- Show infomation: 맵에 대한 정보.[4]
- Check for Problem: 현 맵에 감지된 문제거리들을 표시.[5]
- Map properties: 맵 속성.[6]
- Load Pointfile: 포인트 파일[7]
- Unload Pointfile: 불러온 포인트파일 해제.
2.2.2. View
- Screen Elelment
- Object Bar: 새로 생성되는 브러쉬 설정에 관한 창. 자세한 건 아래 오브젝트 생성 창 참고.
- Maptools Bar: 왼편에 위에서 아래로 늘어선 각종 아이콘이 위치한 창을 가리킨다.
- Filter Control: 브러쉬나 엔티티를 Ctrl+G로 그룹화한 Vis Group을 보여준다.
- Texture Bar: 텍스처 창[8]
- Status Bar: 상태 창.
- 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: 서로 타겟팅된 맵상의 엔티티들을 직선으로 연결되었는지 표시함.[9]
- Hide items: 아이템(정확히 말하면 NPC나 조명 관련된 엔티티까지) 숨김.
- Hide Paths: (기차 오브젝트나 NPC등이 이동하는) 구간 엔티티를 숨김.
- Hide Selected Objects: (선택된 브러쉬나 엔티티 등을) 숨김.[10]
- Show Hidden Objects: 위 기능에 의해 숨겨졌던 것들을 다시 보여줌.
2.3. 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.4. Window
- New window: 기존 작업 창과 평행되는 새 창을 연다.
- Cascade: 창을 축소한다.
- Tile: 창을 펼친다.[14]
- Messages: 작업물을 불러오거나 컴파일 시 출력된 사항 등을 표시하는 메시지 창을 띄운다. (Alt+F3)
2.5. Help
도움말 항목. 온라인 링크도 걸려 있지만, 버전 따라 짤린 경우도 있다.2.6. 아이콘들 [15]
- 위 표시/숨김
-
3D 그리드 - 그리드 규모 축소
- 그리드 규모 늘림
- 에디터에 표시된 4개의 창을 따로따로 윈도 크기로 만듬.
-
늘린 창의 상황을 저장
- 선택된 사물을 숨김.
- 숨긴 사물을 표시.
- 그룹화된 그룹을 모두 표시
- 잘라내기
- 복사
- 붙이기
-
코든 기능 사용
- 드래그한 영역에 일부라도 걸쳐있는 오브젝트 모두를 자동 선택시킬 지, 사물의 중앙부까지 드래그에 포함된 오브젝트만 선택시킬지의 유무.[18]
- 드래그한 만큼 자동 선택되는 기능의 설정.
- 텍스처 락
- 텍스처 알레지먼트[19]
- 컴파일
- 선택 기능.
- (마우스 좌/우 클릭으로) 확대/축소.
- 카메라. (3D 창에선 클릭한 상태로 방향 전환 및 마우스 스크롤로 이동이, 2D 창에선 카메라 위치가 점으로 표시되어 이걸 드래그해 3D 화면 위치를 조정할 수 있으며 단축키는 Shift+C)
- 엔티티 추가 (3D 화면에선 벽이나 바닥에 총 쏘듯 생성시킬 수 있으며, 2D에선 그리드 위치 등을 선택하고 우클릭으로 생성시킬 수 있다.)
- 브러쉬 생성 툴.
- 텍스처 창 띄우기.
- 텍스처 창에 선택된 텍스처를 선택된 브러쉬에 전부 칠함. (다만 텍스처의 크기, 위치 등은 그대로인 채 칠해진 텍스처 종류만 바뀌는 것이다.)
- 엔티티 설명과 비슷하게 3D 창에서 데칼을 마우스 클릭으로 생성시킨다.
- 클리핑 툴 (브러쉬 선택 후 이를 누르면 브러쉬 테두리가 하얗게 되고, 각 창에서 깎아낼 부분을 조정 후 엔터로 깎아내기가 가능하다.)
- 버텍스 툴 (선택된 브러쉬의 꼭지점이나 변 위치 등을 조절. 단축키는 Shift+V)
-
구간 툴
2.7. 오브젝트(브러쉬) 생성 창
유의해야할 점은 이 기능을 쓰기에 앞서 브러쉬 생성 기능(Shift+B)을 선택&드래그 해 생성 영역을 지정하고서야 활성화 된다.
- toWorld: 생성시 기본 값
- toEntity: 선택된 브러쉬를 func화 함.
- Categories: 신규 생성 혹은 프리팹에서 선택하는 창.[20]
- Block: 사각형 브러쉬 생성.
- Wedge: 삼각형 브러쉬 생성.
- Cylinder: 원형 브러쉬를 생성, 참고로 Faces 값은 꼭지점 수.
- Spike: 송곳을 생성한다. 실린더처럼 꼭지점 수를 조절할 수 있다.
-
Arch:
아치를 생성한다.
- Preview: 생성될 브러쉬 형태를 미리 본다. (다만 설정 값을 변경하면 실시간으로 뜨는게 아니라 프리뷰 버튼으로 '새로 고침' 해줘야 한다. 게다가 이 미리보기에선 생성 전 선택한 너비에 맞춰 형태가 재조정되는 건 미반영 되기에 유의.)
- Wall width: 벽의 두께.
- Number of: 아치를 구성하는 브러쉬의 수.
- Arc: 각도. (참고로 Circle 버튼을 누르면 값이 360으로 맞춰지니 참고.)
- Start Angle: (아치가) 시작되는 각도. 다만 프리뷰 창에선 이 설정이 적용되지 않을 수 있음.
- Add Height: (아치의) 높이[21]
2.7.1. 텍스처 창
- Scale: (선택된 브러쉬의) 텍스처의 크기를 설정한다. (1편에선 기본 값은 1, 2편에선 0.25.)
- Shift: 텍스처의 위치를 설정한다. (참고로 경사지거나 특정 방향으로 텍스처 각도가 조절된 브러쉬 면을 선택 후 Shift 키를 누른 상태로 다른 브러쉬 면을 우클릭 시 선택된 브러쉬 텍스처에 맞춰 텍스처 각도가 조절되며, Shift + alt를 누른 상태에서 우클릭하면 텍스처 늘려짐까지 적용된다.)
- L: 텍스처의 왼쪽 끝이 브러쉬의 왼쪽 끝에 맞춰지게끔 조정.
- R: 텍스처의 오른 끝이 브러쉬의 오른 끝에 맞춰지게끔 조정.
- Fit: 텍스처를 브러쉬의 크기에 맞게 조정.
- T: 텍스처의 위쪽이 브러쉬의 위쪽에 맞춰지게끔 조정.
- B: 텍스처의 밑 부분이 브러쉬의 밑 부분에 맞춰지게끔 조정.
- C: 텍스처의 중앙이 브러쉬의 중앙에 오게끔 조정.
- World: 브러쉬에 맞게 텍스처를 조정. 때문에 텍스처 일부가 늘어나는건 물론, 간판의 글귀 역시 브러쉬 상황 따라 뒤집히기도 한다.
- Face: 브러쉬의 형상이나 위치 상관없이 정 위치나 방향 등을 유지한다.
- Hide mask: 3D 창에서 현재 수정중인 텍스처가 붉게 표시되느냐 등을 설정한다.
- Apply: (텍스처 선택 창에서 다른 텍스처를 선택하고) 적용한다.
- Browse: 다른 텍스처를 한 화면에 놓고 검색한다.[22]
- Replace: 위에 언급된 Replace textures(특정 텍스처를 선택된 텍스처로 전부 바꿈) 와 기능이 같다.
-
Mode
2.8. 컴파일
에디터에서 작업한 레벨을 게임 상에서 구동이 가능하게 가공하는 작업이며, 맵 규모(크기와 복잡성) 및 사양 따라 시간이 2분에서 17시간까지 걸릴 수 있다.
- Additonal game parameters: 추가 변수 입력 란. $exedir 등의 명령어를 입력하나 일반적으로 크게 쓸 일은 없다.
- Run CSG: 1차 가공.
- Run BSP: BSP 확장자로 변환.
- Run VIS: 최적화 작업. 따라서 어떤 의미론 컴파일 시간의 대부분을 차지한다.
- Run RAD: 조명을 추가한다.
- Don't run the game: 컴파일 끝나자마자 게임 실행 안함[23]
-
Save visible object only: 명백한(?) 것만 저장. 다만 문제는 그 기준에 대해서다.
2.8.1. 에러 메시지
- Bad Surface Extents : 사각형 이상의 꼭지점을 가진 브러쉬 면이 평평하지 않고 심하게 들쭉날쭉하면 뜬다. 원인이 되는 브러쉬를 반듯하게 하거나 삼각형으로 재조형 하는 수밖에 없다.
- Brush outside world : 브러쉬 하나 이상이 해머 편집 가능 공간 밖에 위치하거나 걸쳐있어 중단했다는 뜻으로, 밖으로 튀어나간 브러쉬를 없애거나 공간 경계로부터 64칸 안쪽 이상 밀어넣어주면 해결.
- LEAK in hull, Leaf portal saw into leaf : 가장 흔한 에러로, 맵은 우주선마냥 바깥 공간과 철저히 밀폐된 상태여야 하는데 어딘가에 그 구멍이 발견되어 컴파일을 중단했다는 의미다. 방법은 pointfile 등을 써가며 맵 전체에 있을 구멍을 찾든가, 트루먼 쇼의 거대 돔 마냥 맵 바깥을 거대한 네모 상자로 둘러싸든가. (이 경우 발적화 확정)
- Mixed face contents : 후술할 특수 텍스처 한 종류만으로 브러쉬를 도배하지 않고 다른 텍스처랑 섞여있을 경우 나오는 메시지다.
- MAX_MAP_PLANES : 컴파일러는 맵당 넣을 수 있는 브러쉬 숫자와 복잡성, 면적 등에 한계[24]를 두는데, 이를 초과해 CPU/메모리에 부하를 줄 경우 해당 사유로 중단한다.[25] 방법은 잉여 브러쉬와 공간을 삭감하는 수밖에.
- MAX_PATCHES : RAD가 한 맵당 처리 가능한 라이트맵 메모리[26]를 초과했다는 의미로, 가로/세로 길이 중 하나라도 512~528[27] 픽셀을 초과한 텍스처가 쓰이지 않았나 확인한 뒤 잉여 텍스처와 브러쉬는 최대한 삭감하면서 안 보이는 사각지대 텍스처들도 스케일을 높게 해서 뭉개거나 null 텍스처로 대체해야 한다. 또한 상술한 LEAK 해결법으로 맵 전체를 거대 상자로 둘러싸서 메모리가 거기에도 낭비된 것이 원인이 될 수도 있다.
- Too many light styles on a face : 햇빛 등의 자연광을 제외한 이런저런 조명들이 잡다할 정도로 많을 경우 뜬다. 이 역시 불필요한 것부터 삭감하는 수밖에 없다.
2.9. 주 엔티티들
2.9.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: 맵에 임의적인 mdl 모델을 지정해 삽입하는 엔티티. monster_generic[28]과 함께 후속작의 프롭 비슷한 용도로 쓰였지만[29] 폴아웃3 사례와 엇비슷하게 NPC와 프롭의 중간 성질을 지니고 있어 때리면 출혈이 날 수 있으며, 실행중인 애니메이션 모션도 처음부터 다시 시작한다.[30] 게다가 조명 렌더링도 중심부 조명값을 mdl 모델 전체에 적용하는 원리라 큰 모델로 지정하고 어두운 곳에 배치 후 손전등을 비추면 상당히 부자연스러운 명암을 보여준다.
- 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: (트리거 등에 의해) 기존 엔티티의 그래픽적 효과[31]를 변경시키는 엔티티.
- 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: 높낮이가 다양하고 엄폐물이 많은 복잡한 지형에서 AI의 경로를 제시하는 일종의 등대이자 웨이포인트. 어떻게 배치하느냐에 따라 잉여가 될수도, 기가 막힐 정도로 잘 쫓아오는게 갈린다.
- info_player_deathmatch: 데스매치용 플레이어 생성 지점. 카운터 스트라이크에선 테러리스트 플레이어 생성 지점이다.
- info_player_start: 싱글 등에서 플레이어의 시작 지점. 카운터 스트라이크에선 대 테러리스트 플레이어 생성 지점.
- info_target: 광선이나 텔레포트 등의 타겟팅[32] 전용 엔티티.
- info_teleport_destination: 텔레포트 타겟팅 전용 엔티티.
- infodecal: 데칼[33] 엔티티. 이름을 기재하면 트리거 타겟팅시에만 보여짐.
- 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.9.2. func 브러쉬
- func_breakable: 부서지는 상자나 벽 용도로 쓰인다.
- Name: 엔티티의 이름. 트리거에 의해 부서지는 용도로 쓸 시 체크.
- Global Entity Name: 2개 이상의 맵에서 엔티티의 상태[34] 등을 동일하게 유지하게끔 기재하는 란.
- 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: multisource로 잠글때 기재.
- Move Sound: 위잉~위잉 하는 문 작동음.
- Stop Sound: 철컹~ 하는 문 정지시의 소리.
- Delay before close: 문이 열리고 도로 닫히는데 걸리는 시간(초). 참고로 -1 같은 음수를 기재하면 플랙의 토글을 체크하지 않는 한 다시 닫히지 않는다.[35]
- 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: multisource로 잠글때 기재.
- 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.9.3. 트리거 포인트 엔티티
- trigger_auto: 자동으로 타겟팅된 엔티티를 작동시킨다.
- Target: 작동시킬 엔티티 이름.
- Delay before trigger: 타겟한 트리거가 작동되기까지의 지연 시간.
- Kill Target: 작동과 동시에 제거할 엔티티 이름.
- Global State to Read: 이 란에 입력시 이전 맵의 Env_Global이 기록한 전체 부호들 중 일치하는 것이 있어야만 작동.
- Trigger State: 시작시 꺼짐, 혹은 켜졌냐, 토글 등을 설정.
- 플랙
- Remove on Fire: 한번 작동하고 나면 제거.
- trigger_camera: 카메라 엔티티. 주로 게임 중간의 컷씬 등을 연출하는데 쓰인다.
- 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.9.4. 트리거 브러쉬
- trigger_autosave: 플레이어가 해당 엔티티를 지나면 자동 저장이 되는 체크 포인트 엔티티. Master로 잠글 수 있다.
- trigger_changelevel: 싱글플레이어 게임이나 스벤코옵 같은 멀티 코옵 MOD에서 다음 맵을 불러올때 쓰는 엔티티. 통상적으로 플레이어가 여길 지나면 작동되며, 불러온 맵에서도 지나온 기존 맵을 (형식적으로라도) 체인지 레벨 시키는 엔티티들이 없다면 튕길 수 있다.
- trigger_counter: 자신을 일정량 타겟팅하면 특정 타겟을 작동시킴. 하프라이프 본편에선 어니 매그너슨의 전자레인지가 좋은 예.
- Target: 조건 만족시 타겟시킬 엔티티 이름.
- Name: 엔티티의 이름.
- Killtarget: 작동과 동시에 죽일(영구 제거할) 엔티티 이름.
- Master: 이걸로 잠궈놓으면 아무리 해당 엔티티를 타겟팅해도 타겟팅 수를 세지 않는다.
- Delay before Trigger: 타겟팅된 엔티티 작동까지의 지연 시간.
- Count before activation: 어느 정도 타겟팅 돼야[37] 작동시킬지를 적는 곳.
- 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과 연동되며, changelevel이 작동시 이 트리거 범위 내에 플레이어가 없으면 changelevel에 의한 다른 맵 로딩이 취소된다. 작명은 info_landmark와 동일하게 지어야 하며 승강기, 이중문에서 쓰인다.
2.10. 프리팹 팩토리
에디터 내에서 브러쉬 일부를 책상이나 의자 형태로 조형[38]한 것과 환경 엔티티[39], NPC나 스크립트 엔티티가 포함된 트리거 등을 개별 혹은 복수 선택 후 임의의 이름으로 에디터 내 DB에 저장 및 이러한 저장물을 현재의 맵에 복붙[40]하는 기능이다. 다만 Tools 항목에서 열 수 있는 프리팹 팩토리 창은 기본적으로 프리팹 관리 용도이며, 맵에 직접 복붙하기 위해서는 View > Screen Elelment > Object Bar 창을 켠 상태에서 Insert original prefab 버튼을 눌러야 한다.
그리고 이러한 프리팹들은 프리팹 팩토리 창에서 추가 혹은 설정 변경이 가능한데, 각 창의 기능들은 다음과 같다.
- Select a: 프리팹 분류란
- Add Library: 새 분류를 추가.
- Remove: 해당 분류를 삭제
- Edit: 해당 분류의 이름과 설명을 편집.
- Object in: 해당 분류에 소속된 프리팹들.
- Add object: map 파일을 통째로 프리팹 DB에 추가한다.
- Remove: 삭제
- Edit: 해당 프리팹의 이름과 설명을 변경
- Export object: 해당 프리팹을 map 파일로 저장.
일단 프리팹 개념을 최초 도입한 에디터이긴 했으나, 초창기 때는 이런저런 브러쉬 조형물들을 복붙하는 용도였다가[41] 점차 그 외의 요소들까지 복붙하는 개념으로 확장되었다. 게다가 유니티 엔진 같은 후발주자들의 프리팹과 달리 골드소스 엔진과 연동되지 않고,[42] 해머 내에서도 원본- 동기화[43] 관계가 아닌 단순 복붙 기능이라 일괄 수정은 제한된다. 그리고 동일 이름과 구조의 트리거가 포함된 프리팹을 한 맵에 두 개 이상 복붙시 중첩에 의한 오작동 여지가 높아지므로 중첩되지 않게 개명하거나[44] 중앙 트리거를 만들어 이것의 일괄 제어[45]를 받게 수정하는 등 트리거 오작동 여지를 줄일 필요가 있다.
그리고 소스판 해머에서는 mdl 프롭에 입지를 상당량 넘겨줬지만 모듈화로 하나씩 조립해야 하는 프롭들 및 배치나 설정이 까다로운 것들[46]에 한해 계속 쓰이고 있다.
2.11. 기타 보조 프로그램
2.11.1. J.A.C.K
2:00부터 접합시 중첩되지 않을 각도로 프리팹 통로 외곽을 잘라낸 뒤 3:03에 Paste special로 도넛 형태로 복붙해 냄.
16:20에 (해머 에디터의 한계로) 모서리 처리에 애먹다가 17:23부터 J.A.C.K으로 바위들을 순식간에 뽑아낸다.
2016년 퀘이크 시리즈 레벨까지 아우르는 J.A.C.K이라는 비공식 에디터가 나왔는데, 밸브 공식 해머에선 제한되거나 불가능했던 각종 원형이나 도넛 구조 등 복잡한 지형지물을 손쉽게 만들 수 있지만 이 역시 각종 툴과 기능들에 대해 시행착오를 거쳐야 제대로 쓸 수 있다. 그래도 전술한 장점들 때문에 Half-Life: Echoes #, Field Intensity # 등 메이저 모더들이 애용하고 있다.
2.11.2. Nem's mega 3D terrain generator
Nem's tool 페이지
마우스로 특정 지형을 선택해 높낮이를 조형할 수 있음을 강점으로 내세웠으나, 정작 해머용 파일로 변환하고 보니 컴파일이 허용할 수 있는 수치 밖의 내용물로만 나와서 이런저런 에러[47] 원인들을 다 잘라내야 겨우 실행이 가능할 정도라 입소문은 커녕 금세 잊혀졌다.
그나마 이런 기능은 소스엔진의 디스플레스먼트로 이어지게 된다.
2.11.3. Bsp edit
컴파일된 맵의 엔티티 편집기. 텍스트로만 지원된다. #2.11.4. Newbspguy
TWHL의 간략 설명서
BSP 디컴파일 없이 3D창에서 엔티티와 지형지물들을 엿보거나 편집할 수 있는 툴. 64비트용이며, 지형지물의 경우 텍스처까지는 무난하나, 브러쉬 폴리곤을 임의로 수정시 형상이 잘 깨져서 원하는 이상향과 타협점을 찾기까지 최소 수차례 노가다를 해야 한다.
2.11.5. Winbsp
컴파일된 bsp 파일을 map 파일로 엉망진창[48] 디컴파일 해주는 툴로, 트리거 구조를 뜯어보거나 브러쉬 조형 모작 등에 유용. 다만 트리거가 그물같이 너무 복잡하거나 텍스처가 내장된 BSP는 불가능하다.3. 소스 엔진용 해머
골드 소스와 크게 바뀐것 없이 신규 엔진에 걸맞은 기타 자잘한 기능들이 추가되어 이 항목에선 새로 추가된 기능 위주로 설명한다.
3.1. 아웃풋, 인풋(Output, Input)
소스엔진부터 각 엔티티들은 골드 소스의 multi_manager 기능을 내장하게 되어 다수의 타겟팅을 설정한 시간대로, 그리고 추가 기능[49]도 시키게 할 수 있게 되었으며, 이를 아웃풋으로 칭하고 있다.
반대로 타 엔티티로부터 타겟팅된 목록은 인풋으로 별칭되며, 만약 타겟팅이 안되었다면 화살표 대신 금지 아이콘으로 뜬다.
3.2. 디스플레스먼트(Displacements)
[50]
선택한 브러쉬를 폴리곤 다수의 한쪽 면[51]만 있는 상태로 만들고, 각 꼭지점들의 상하좌우 위치를 바꿔 조형한다. 또한 Paint 기능으로 일부분을 다른 텍스처로 바꿀 수 있으며, 면을 복수 선택한 상태에서 카브 기능으로 완만하게 만들 수도 있다. 다만 일반적인 브러쉬 상태가 아니기에 func_ 속성 부여는 안되며, 또 이것 너머를 다른 브러쉬로 막지 않는 한 컴파일시 Leak 에러를 일으키기도 한다.
3.3. 페런트(Parent)
해당 대상에게 이 항목이 있고, 여기에 특정 이름을 적으면 이 상태로 해당 이름을 가진 대상에 접합 및 종속[52] 설정이 되며 다단계 접합도 가능하다.[53] 다만 페런트 가능 이동식(다이나믹)이 아닌 고정식(스테틱) 프롭 등을 페런트 지정하면 튕길 수 있다.
3.4. 프롭(Prop)
3D mdl 오브젝트[54]에 충돌 박스, 고유 특성[55] 애니메이션 등이 하나 이상 덧붙여진 3D 소품 모델들을 소스 엔진에서 칭하는 용어. 밸브 위키
- prop_detail - 그림자 효과 등이 제한된 탓에 메모리를 적게 차지하는 스테틱 종류. 그 특성상 빠른 테스트를 위한 가설물이나 잠깐 스쳐지나가는 배경물 용도로만 쓰인다.
- prop_static - 게임상에서 단단히 고정된 종류로, 보편적인 렌더링은 적용받고 있다.
- prop_physics - 물리 엔진의 적용을 받는 이동식 프롭. 존재 자체만으로 연산을 차지하며, 경첩이나 줄 등으로 떨어지지 않게 메어놓거나 플랙으로 에디터 상의 위치에 일시[56]나 영구적으로 고정시킬 수 있다. 또한 목재나 폭발성 프롭들은 일정량 데미지를 입으면 부서질 수 있다.
- prop_ragdoll - 이미 죽어있는 각종 시체에 쓰임. 다만 NPC mdl 종류를 지정하면 그 NPC 고유의 설정 없이 외형만을 불러오는 식이라 고유의 타격 효과 대신 고기나 나무 부딪치는 소리만 난다.
- prop_dynamic - 작동 애니메이션이 들어있는 스테틱 종류. 일정량 데미지를 받으면 부서지게 만들 수도 있음.
여담으로 소스 이전 골드소스에선 단순 조형은 브러쉬 프리팹, 이보다 복잡한 조형은 별도의 mdl 모델을 만들고 cycler 혹은 monster_generic 등에 mdl 경로를 입력해 게임에 삽입했었다. 그러나 후자의 경우 포인트 엔티티에서 전술했듯 골드소스에선 mdl 모델에 각종 속성들[57]이 첨부, 적용되지 않아 프롭보다는 배경 오브젝트 형상만 넣는 엔티티에 불과하다.[58]
이런 상황에서 소스의 프롭 개념이 골드 소스 커뮤니티에 역도입되고부턴 저러한 것들도 프롭으로 칭하기 시작했으나, 엄밀히 말해 편의상 그렇게 부를 뿐 프롭 용도가 아닌 엔티티들을 짜집기해 소스의 프롭 흉내를 내는 것이라 Half-Life: Echoes와 같은 양날의 검 사례도 벌어졌다.
또, 이 개념은 언리얼, 유니티 같은 타사 사용자들에게도 전해져 3D 모델 오브젝트를 뜻하는 은어나 분류로 쓰이기도 한다.
3.5. 인스턴스 (func_instance)
밸브 위키 설명
에일리언 스웜 시기부터 공식 추가된 원본-동기화 기능의 프리팹 엔티티로, 원본의 데이터를 현 위치에 덩어리[59] 단위로 복붙한다.
그리고 (소스용) 프리팹 팩토리처럼 인스턴스 내 트리거들도 복붙할 때마다 원본 이름 뒤에 각기 다른 번호들이 붙어 각 인스턴스끼리 트리거가 중첩이나 간섭되지 않게 해놨기에 각각의 인스턴스들이 타겟팅 후 알아서 작동되게 만들려면 우선 원본에 func_instance_io_proxy #라는 신관 엔티티를 만들고 여기에서부터 트리거 작동이 시작되게 만들어야 한다.[60] 이렇게 해야 인스턴스 이름(Fix up name) 란에 호출 부호를 적고 타겟팅 시 정상 작동한다.[61]
또한 func_instance_parms은 원본에 추가시 특정 인스턴스를 원본의 변종으로 만들 수 있는 엔티티로, 최대 10가지의 변경점[62]을 적용시킬 수 있다. # 하지만 포탈 시리즈처럼 규격화된 버튼, 큐브, 패널 등을 수십, 수백번 등장시키는 맵을 만드는 게 아니라면 나름 복잡한 parm 명령어와 그것들의 효과들을 하나 하나 터득해가며 우려먹기보단 그런 변종의 인스턴스를 따로 만들거나 1회성이라면 프리팹 원본을 해당 맵에 복붙 후 직접 수정하는 게 나을수도 있다.
참고로 덩어리 선택시 프로퍼티 하단에 뜨는 Edit instance 버튼은 원본 맵을 불러오는 기능이고, 이렇게 불러온 원본 맵을 수정시 해당 맵에 넣어진 다른 동일 덩어리들도 일괄 수정되며, 또 사용 목적도 프리팹 팩토리와 겹쳐서 이것의 변종 혹은 발전형으로 취급되고 있다. 다만 이미 컴파일된 맵 내의 인스턴스들엔 원본-동기화가 적용되지 않아[63] 일관을 신경쓴다면 재컴파일이 필요할 수 있다.
3.6. 포탈2 오소링 툴(Authoring Tools)
포탈2 맵을 만들 수 있게 고유 엔티티나 불러올 수 있는 프롭 등이 설정된 해머로, 툴 메뉴에선 해머 월드 에디터로 별칭하고 있지만 정작 에디터 이름은 (포탈2 용으로 설정된) 해머(..)[64]기초 메뉴 설명(한국어)
그밖에도 게임 메뉴 창에서 규격화된 각종 지형지물과 프리팹들을 간편하게 조합해 실험실 하나를 만들 수 있는 별도의 맵 에디터가 존재한다. 하지만 규격화된 것들만 넣을 수 있는 한계로 그 외의 세밀한 편집은 불가능하다.
4. 툴(특수 목적의) 텍스처들
골드와 소스 공통으로 별도의 값을 지정하지 않아도 브러쉬 전면에 칠하는 것만으로도 자체 속성이 적용되는 텍스처들이다. func_water를 제외한 대다수 텍스처들은 단독으로 혹은 복수 선택해 func 설정시 컴파일 거부가 될 수 있다.- 골드 소스
- !(+이름) - 물 전용 텍스처. func_water가 자동 적용되나 컴파일 시 햇빛이 수면에서 가로막혀 수중에 따로 광원이 있지 않는 한 어두컴컴하다. 이는 얕은 물일지라도 예외없어서 mdl 모델 중심부가 수면 밑으로 내려가면 모델 전체가 까매진다.[65] 다만 에디터 상에서 이 브러쉬를 func_water 설정시 햇빛이 밑바닥까지 처리되어 더는 물에 닿는 것만으로도 까매지지 않으나 두개의 물 브러쉬를 복수 선택 후 func_water 설정하면 튕김을 야기한다.
- {(+이름) - 반투명용 텍스처로 그냥 컴파일하면 파란색 부분이 까맣게 나온다. 다만 func 사물 설정 후 렌더링 란에서 soild 선택 후 255 값을 매기면 파란색 부분이 투명 처리가 된다. 대표적 사용예시로 사다리와 난간, 철조망 등이 있다.
- +0~9(+이름) - 숫자 순서대로 재생되는 애니메이션 텍스처로, 최대 10장면까지 반복 재생된다.
- +a(+이름) - 위 애니메이션 텍스처가 타겟팅 등으로 정지시 보여질 텍스처. 존재하지 않으면 타겟팅 받아도 계속 재생.
- AAATRIGGER - 게이브로 추정되는 사람 얼굴이 박힌 텍스처 혹은 분홍색 람다 텍스처 중 하나로 표시되는 트리거 인지용 텍스처. 컴파일 과정에서 조명이 이상하게 처리되는 원인이 될 수 있으며, 이 경우 일반 텍스처로 다 대체해 버리면 된다.(단순 인지용이라 이걸로 칠하든 말든 정상 작동된다.)
- Clip - 플레이어 및 헤드크랩같은 NPC를 막는 일종의 보이지 않는 벽. 일반 브러쉬와 함께 선택 후 func 사물로 만들 수 있지만 Clip 브러쉬만으론 func 설정은 안 된다.
- Hint - 기어박스가 하프라이프: 어포징 포스 개발 도중 디자이너가 컴파일러에 맡기지 않고 직접 최적화를 할 수 있게 자체 개량한 맵 컴파일러[66]에 추가한 텍스처다. 이 텍스처를 칠한 브러쉬를 ㄷ자 통로 중간을 완전히 차단하듯 위치시키면 반대쪽의 안 보이는 지형지물이 생략되게 해주는 원리였으나, 복잡한 지형지물에서만 효과를 보고 이조차도 컴퓨터 성능이 좋아짐에 따라 프레임 변동에도 별 영향을 못 주면서 잉여가 되었다.
- Null - 소스엔진의 Nodraw와 동일하게 이걸 칠한 브러쉬 면을 투명하게 처리한다. (Zoner's 최신 버전에만 적용.)
- Origin - 주로 회전하는 브러쉬 계열 엔티티의 회전 중심.[67]
- Scroll(+이름) - func_conveyor에서 스크롤링되는 텍스처. 컨베이어 설정이 아니면 정지된 일반 텍스처에 불과하다.
- Sky - 스카이 박스 텍스처.
- 기타
- ~(+이름) - 조명용 텍스처임을 알 수 있게 붙이는 일종의 태그.[68]
- BLACK - 어두워서 밑이 보이지 않는 곳 등에 쓰이며, 이외의 기능은 없다.
- WHITE - 밝은 곳 등에 쓰이며 rad 편집으로 텍스처 라이트닝을 적용시킬지는 각자의 몫.
- 소스 엔진. 게임마다 기능이 조금씩 다르므로 밸브 위키 참고.
- Areaportal - func_areaportal 용. 골드 소스의 hint를 구획별로 나눈 개념이다.
- Blockbullets - (발사된) 탄환을 차단한다.
- Blocklight - 안쪽으로 조명 처리를 하지 않는다.
- Clip - 골드 소스의 그것과 동일.
- Fog - func_smokevolume과 병행해 사용됨.
- Invisible - 게임에 따라 클립 대용으로 쓰이기도 하는 애매한 텍스처.
- Ladder - 골드 소스의 func_ladder가 자동 적용됨. 글로벌 오펜시브 즈음해 부활.[69]
- Npc clip - NPC의 진입을 선택적으로 차단한다.
- Nodraw - 해당 텍스처를 칠한 면의 텍스처를 안 보이게(= 표현되지 않게) 만든다. 또한 Displacement 적용된 지형에 이걸 바르면 Nodraw 텍스처가 그대로 게임상에 나온다.
- Player clip - 플레이어의 진입을 선택적으로 차단한다.
- Skybox - 스카이 박스[70]용 스카이 텍스처.
- Trigger - 트리거 인지용 텍스처.
5. 관련 사이트
- https://developer.valvesoftware.com/wiki/Main_Page: 밸브 위키. 다만 위키 특성상 밸브 관계자보다 모더나 맵쟁이 유저들이 수정한 것도 상당하다.
- http://cafe.naver.com/cssmap: 한국 관련 카페들 중 가장 크다. 한국에선 주류 엔진이 아니다 보니 취업보단 취미나 레벨 지식을 쌓으려는 목적으로 접근하는 이들만 있다.
[1]
다만 확장자가 하나로 통합되지 않고 rmf, map 등으로 이루어져 있으니 안 뜨면 찾고자 하는 파일 형식을 바꾸든가 *.* 등을 치면 된다. 참고로 rmf 파일은 그룹으로 지정된 것과 목록들이 저장되지만 그만큼 용량을 잡아먹고, map 파일은 그것들 빼고 저장되어 용량을 덜 먹는다.
[2]
다만 규모가 크고 복잡한 맵일수록 잠시 멈추는 현상도 있다.
[3]
에디터 특성상 생성된 순서나 위치 등을 기준으로 번호를 임의로 붙인다.
[4]
브러쉬나 엔티티,
텍스처 등을 포함한 것.
[5]
브러쉬(깨짐이나 편집 영역 밖에서 감지시), 플레이어 시작점 없음, 타겟팅 에러 등등.
[6]
오브젝트의 최대 표시 거리라든지 스카이 내용 등등.
[7]
컴파일 시 생성되는 파일이며, 불러오면 컴파일러가 어딜 헤집고 돌아다녔냐 등을 경로로 표시하나 버전이나 그래픽 카드 문제로 보여지지 않는 경우도 있으며, (경로가 올바르다면) 게임 콘솔 창에서 pointfile 등으로도 불러와 확인이 가능하다.
[8]
없어도 Shift+A로 화면에 띄울 수 있다.
[9]
참고로 트리거를 복잡하게 작성시 외진 구석이나 별도의 트리거 공간을 만들고 현재 작성중인 트리거들을 모아 해당 기능을 켜고 언리얼 블루프린트 마냥 작동 순서나 조건 변수 종류별로 나열해 눈으로 쉽게 파악하는 꼼수가 있다. 물론 단순히 각 요소들을 켜고 끄고, 타겟팅 대상을 바꾸거나 죽이는 것들만 있는 초창기 에디터인 만큼
기계식 계산기 만지작 거린다 생각하면 편하다.
[10]
다만 클립 브러쉬 등은 경우에 따라 숨겨놔도 다시 보여진다.
[11]
다만 해당 브러쉬가 깎일 브러쉬보다 면적이 작거나 어중간하게 겹침, 사각형 이외의 도형으로 했다면 십중팔구 아래 이미지처럼 깨진 유리창 같은 상태가 되며,
애퍼처 사이언스? 이 상태로 컴파일&테스트하면 깨진 브러쉬의 금이 게임상에서 그대로 보이는 건 물론이요,
이 꼴도 난다. 아무튼 은근히 많은 사용자들이 간과하고 있는 사실. 해결법은 Undo 혹은 그 브러쉬 형태에 맞게 브러쉬를 하나하나 새로 생성, 재작업하는 수밖에 없다.
[12]
참고로 이미 지정된 그룹에 다른 요소나 타 그룹을 복수 선택해 하나의 그룹으로 묶을 수 있으며, 이 그룹 역시 또다른 그룹의 일부로 묶을 수 있다. 다만 그룹 지정까지 저장되는 건 Rmf 확장자에서만 가능하고, Map 파일에선 그룹 지정까지는 저장되지 않는다.
[13]
다만 텍스처 값(예컨데 0.45 같이 소숫점일수록)에 따라 위치 등이 미묘하게 바뀌기도 한다.
[14]
이 상태에서도 에디터와 창이 분리된 관계로 해당 창을 임의로 이동시킬 수 있으며, 더블 클릭으로 에디터에 펼침&고정시킬 수 있다.
[15]
위에 언급한 기능 상당수가 여기에도 있지만 개중엔 여기에만 있는 기능도 있으니 참고.
[16]
Tools 항목의 카브와 동일.
[17]
그룹화를 유지하되 그걸 구성하는 사물 위치를 조정할 수 있다. 여담으로 Move to world와 단축키가 같지만 이 기능과는 미묘한 차이가 있다.
[18]
전자의 경우 지형지물을 대량으로 편집할 때 유용하고, 후자는 여러 오브젝트들이 뒤엉킨 공간에서 몇몇만 딱 집어 선택할 때 유용. 참고로 이 아이콘을 못 알아보더라도 옵션 란에서도 설정이 가능하다.
[19]
브러쉬를 생성 혹은 복사할 때마다 브러쉬의 면들을 world에서 face로 자동 조정.
[20]
만약 프리팹을 여기 이 기능으로 추가한다면 해당 영역에 맞게 늘여지거나 쭈글어든 상태로 나온다.
[21]
다만 드래그된 영역에 맞춰 생성되기에 의도치 않은
찐빠가 생길 수 있다.
[22]
화면 하단에서 텍스처들의 크기 조정 및 이름이나 해당 맵에서 사용되는 텍스처를 선택적으로 검색이 가능하다.
[23]
기본적으로 컴파일이 끝나면 게임이 자동적으로 실행되게끔 되어 있는데, 원치 않거나 이 기능의 작동이 원활하지 않을 시 체크하자.
[24]
골드 소스에선 32767, 소스에선 65536개의 평면이 한계다.
[25]
쉽게 말해 드로우콜 제한 같은 게 걸려있다고 생각하면 된다.
[26]
즉, 64x64 단위의 패치들이 65535개.
[27]
만약 한쪽이 이 길이일 경우 다른 쪽 길이는 496 이하여야 한다.
[28]
하프라이프에서 최소한의 AI와
체력 1의 배경용 NPC로, 작중에선
지게차나 자동 로더 역할로 쓰였으며 어포징 포스에선 모든 게 통과되는 Not solid, AI를 비활성화 하는 Prisoner 플랙들을 걸고 공구함 등 프롭 용도로 썼었다. 다만 충돌 박스(?)가 사람 NPC 크기 고정이라 이보다 큰 프롭으로 지정하면
주변부는 그대로 통과하며 체력 문제로 어포징 포스와 같은 플랙을 걸고 func_wall 틀어막기 노가다를 해야 한다.
[29]
게다가 오스프리 같은 대형 mdl에 한해 충돌박스가 적용되기도 하나, 폴리곤에 맞춰 충돌박스가 딱딱 일치한 게 아닌데다 프로펠러 같은 것들은 그냥 통과되고 그 외 mdl들엔 이조차도 적용되지 않아 큰 기대는 하지 않는 게 좋다.
[30]
대표적 사용 예는 원작의
대공명 현상 때 수초간 조우하는
반투명 원생생물(Protozoan).
[31]
텍스처 투명 값이라든지 등등.
[32]
타겟팅이란 func나 trigger 엔티티 Target 항목에 임의의
호출 부호(말 그대로 a 같은 단문이나
아무말로 길게 써도 맵 어딘가에 그 이름을 가진 엔티티가 있으면 유효하다. 다만 너무 길면 에러 원인이 되니 유의.)를 적는 것으로 View란의 Show Connections으로 육안으로 상호 연결 확인이 가능하며, 비타겟시 Check for Problem에서 문제 목록에 뜨니 참고하면 된다.
[33]
벽이나 바닥의 혈흔이나 얼룩, 타이어 그을림 등.
[34]
쉽게 요약하면 기차를 타고 다음 맵을 불러올때 기차 속도나 선로에서의 위치 등을 다음 맵의 동명의 글로벌 이름을 가진 엔티티가 계승.
[35]
토글 체크에 이게 양수 값인 상태의 문이 무언가에 부딪치면 후진을, 음수 상태라면 무언가가 제거될 때까지 그 상태를 유지한다.
[36]
여담으로 후술할 trigger_transition도 이 엔티티와 동명이어야 한다.
[37]
예컨데 버튼(func_button)의 타깃을 이 카운터 엔티티 이름으로 지정한 뒤 이 카운터 엔티티로 와서 이 항목을 3으로 쓰면, 정확히 버튼을 3번 눌러야 이게 작동된다.
[38]
지금의 프롭 같은 개념이지만 세밀한 조형까지는 불가능한 한계가 있어 어디까지나 대용일 뿐이다.
[39]
예컨데
울림(env_sound) 및 SPEAKER 등.
[40]
Texture Lock 설정 상태에서 이걸 쓰면 이동된 위치에 따라 브러쉬 각 면들의 텍스처 위치 값도 임의로 조정되는데, 안 보이는 면까지 이게 적용된다.
[41]
기본 제공되는 프리팹부터가 상자, 책상, 옛날 컴퓨터 같은 것들만 있었다.
[42]
유니티 등에 익숙한 사용자들이 혼동하거나
일반화 하는 것 중 하나로, 후술할 인스턴스도 마찬가지다.
[43]
원본 파일을 수정하면 이를 참고로 하는 오브젝트들이 일제히 동기화되는 기능으로, 해머에선 후술할 인스턴스부터 적용된다.
[44]
그나마 소스용 이후부턴 복붙할 때마다 원본 이름 끝에 숫자별로 다르게 붙어 수고를 덜었다.
[45]
간단한 예로, 특정 복제 트리거가 작동하면 나머지 복제 트리거들은 일시적이거나 영구적으로 비활성화 되는 식.
[46]
예컨데
콤바인 발전기와 역장, LADDER 텍스처 이전의 사다리 등.
[47]
특히 브러쉬 양이 쓰잘데기 없이 많아지고, 그 중 일부가 편집 가능 범위 밖을 벗어나는 것 등이 있다.
[48]
컴파일 과정에서 프리팹 그룹이고 뭐고 임의대로 다 합쳐지는데 이걸 마구
뚜따해 버리니 브러쉬고 뭐고 다 깨져나오는 것.
[49]
해당 엔티티를 잠그거나 삭제, 페런트 등.
[50]
해당 영상은 비공식 에디터인 해머++에서 촬영된 것이다.
[51]
혹은 면을 다수 선택해 두 면 이상 바꿀수도 있다.
[52]
즉, 모체가 없어지면 여기 얹어진 자식들도 함께 없어짐.
[53]
쉽게 말해 3D 모델의 관절같이 된다고 생각하면 된다.
[54]
작게는 부스러기, 크게는 자동차나 건물 한 채까지 다양하다.
[55]
무게, 폭발물이나 분출 등 특수 기능 등.
[56]
일정량 데미지를 받거나 플레이어가 들거나 차버리면 떨어지는 식.
[57]
재질, 파괴가능 여부, 충돌박스 등.
[58]
즉, 저 엔티티들만 딸랑 넣으면 십중팔구 프롭 형상에 맞춰 부딪치기는 커녕
Big Rigs: Over the Road Racing 같은 상황이 벌어진다.
[59]
표현상 그룹이 적합할 것 같지만 에디터 내의 언그룹 기능으로 그룹 해제 후 직접 편집은 불가능하다.
[60]
즉, 특정 인스턴스를 작동시키려면 그 안에 포함된 신관 엔티티 이름으로 정하면 된다.
[61]
다만 인스턴스 안에 인스턴스를 넣는 행위는 오류 발생 가능성이 있어 가급적 지양해야 한다.
[62]
이를테면
팔레트 스왑이나 작동음이나 중심 축 등.
[63]
이 역시 프리팹 팩토리와 마찬가지로 여전히 해머 내에서만 연동되는 기능이다.
[64]
이는 오소링 툴이 있는 타 게임들도 엇비슷하다.
[65]
이에 대해선 상술한 cycler 참고.
[66]
이후 Zoner's half-life tools 라는 이름으로 공개된다.
[67]
Origin이 칠해진 브러쉬 중앙을 기준으로. 따라서 직사각형이든 정사각형이든 상관없지만 중심을 잘 보이는 이유로 디자이너 사이에서 정사각형을 애용하는 편이고 경우에 따라선 시야를 가린답시고 아예 2x2 크기로 축소시키는 경우도 있는데 이 경우에도 작동에는 문제 없다.
[68]
다만 이것만 붙인다고 텍스처 라이트닝이 자동으로 되지는 않으며, light.rad나 맵 이름.rad에서 텍스처 별 조명의 색, 강도, 범위 등을 따로 기제해야 한다.
[69]
하프라이프2 부터 한동안은 사다리 포인트 엔티티를 사다리 위 아래로 각각 정 중앙에 정확한 높낮이로 배치해야 의도대로 오르내리는 방식이 쓰였었다.
[70]
다만 배경 텍스처와 조명만 적용되던 골드 소스와 달리 맵 구석에 배경용으로 따로 있는 미니어처 세트 트리거가 적용되면 이것도 함께 보여준다.