모든 구성원을 위한 언리얼 엔진 기초 튜토리얼

모든 구성원을 위한 언리얼 엔진 기초 튜토리얼

목차
1. 일단 따라해보자 - 레벨 제작의 기초 2
튜토리얼 1 - 여러분의 첫 번째 방(room) 만들기 2
튜토리얼 2 - 직접 만든 레벨에 두 번째 방 추가하기 7
튜토리얼 3 - 각 방들 연결하기 11
튜토리얼 4 - 레벨에 조명 넣기 13
튜토리얼 5 - 레벨 테스트 하기 16
튜토리얼 6 - 월드 지오메트리에 머터리얼(Material) 추가하기 18
튜토리얼 7 – 레벨에 스태틱 메쉬(Static Meshes) 배치하기 21
튜토리얼 8 – 출입구메쉬(Doorway Mesh) 추가하기 30
튜토리얼 9 – 출입구 메쉬(Doorway Mesh) 주변에 빛 강조하기 31
튜토리얼 10 – 레벨에 증기 이미터(Steam Emitter) 배치하기 33
튜토리얼 11 – 인터팩터(InterpActor - Mover)와 트리거 추가하기 35
튜토리얼 12 – 첫 번째 키즈멧(Kismet) 시퀀스 만들기 41
튜토리얼 13 – 매터니(Matinee)로 인터팩터(InterpActor) 설정하기 44
튜토리얼 14 – 물리 값이 적용된 오브젝트(Physics Objects) 만들기 50
튜토리얼 15 – 피지컬 머터리얼(Physical Material) 만들어서 적용시키기 52
튜토리얼 16 – 레벨에 높이를 가진 안개(Height Fog) 추가하기 56

1. 일단 따라해보자 - 레벨 제작의 기초
이 튜토리얼은 Mastering Unreal Technology의 내용 중 Chapter 3 - Up and Running A Hands-On Level Creation Primer의 내용을 UDK에 맞춰서 수정 및 보완한 문서입니다-
이 문서를 UDK에 맞춰서 제작하게 된 것은 그 동안 언리얼3엔진의 업데이트를 통해서 변한 엔진의 내용과 처음 언리얼3엔진을 접하는 게임개발자를 위해서 만들어졌습니다-

일단 여러분들은 언리얼3엔진이 어떤 일을 할 수 있을 지 대단히 궁금할 것입니다- 다음의 튜토리얼은 엔리얼3엔진에서 사용하는 대부분의 기능을 조금씩 맛보기로 알려줍니다-
언리얼 엔진을 이용한 게임 디자인은 여러분의 상상력의 범위에 의해서만 제한을 받는 흥미로운 세계입니다. 처음 언리얼 기술을 이용해서 게임을 만들고자 결심한 그 순간부터 여러분의 손끝에 부여된 힘은 절대적인 것입니다. 게임 디자이너가 해야 할 일은 무한의 가능성을 가진 이 분야를 축약해서 원하는 게임으로 만들어내는 것입니다. 하지만, 이 바닥의 일을 업으로 삼고 있는 사람으로써 해줄 수 있는 말은, 어디부터 시작해야 한다고 말하기는 어렵다는 것입니다. 굳이 “정확하게” 얘기해야 한다면, 여러분은 수 없이 많은 다양한 분야에서 수 없이 많은 기술이 필요할 것입니다. 그리고 이런 이유로 인해서, 통상적인 입문의 과정에서부터 UDK의 수 많은 측면을 직접 접하고 익힐 수 있게 이번 챕터를 구성하게 되었습니다.

이 챕터에서 여러분이 따라 해야 할 각각의 행동에 대해서 깊이 있는 설명을 제공하지는 않지만, 언리얼 에디터(UDK) 상에서 그저 보고 따라 하는 식의 빠른 진행을 통해 이 책을 읽어나가면서 진행하게 될 수 많은 액션들에 익숙해지게끔 하고자 합니다. 이 챕터는 또한, UDK 의 이전 버전을 사용해본 경험이 있는 사람들로 하여금 언리얼 엔진 3.0이 배포되면서 변경된 사항들을 파악할 수 있게끔 도움을 줄 것입니다.

중간쯤에서 단순히 튜토리얼만을 선택해서 보기 보다는 이 번 챕터의 처음부터 끝까지 보고 따라 하기를 특히 권해 드립니다. 이번 챕터가 UDK와 책 전체를 통해서 찾아볼 수 있는 수 많은 컨셉에 대한 설명을 가능하면 쉽게 알 수 있도록 훑어보는 식으로 구성되었다는 점을 상기해주시기 바랍니다.

주의: 이번 챕터에 있는 튜토리얼들은 독자가 UDK의 유저 인터페이스에 대해서 이해하고 있다는 전제하에 구성된 것입니다. UDK의 유저 인터페이스에 대한 상세 정보는 부록으로 있는 UDK 유저 매뉴얼을 참고하시기 바랍니다. 하지만, 걱정은 하지 않으셔도 됩니다- 여러분 주위의 사람에게 물어보면 친절히 대답해 줄 거에요- ^^

Editor 버튼 단축키 요약입니다-

http://udn.epicgames.com/Three/EditorButtonsKR.html

참고 하세요- ^^

튜토리얼 1 - 여러분의 첫 번째 방(room) 만들기
1. UDK를 실행하세요-


UDK 의 유저 인터페이스.

1. UDK 가 실행된 후Generic Browser 가 열리면 우측 상단에 있는 닫기 버튼으로 닫은 후, 메인 메뉴 바에서 File > New 를 선택합니다.

메인 메뉴 바에 있는 New 옵션.

2. New Level 창이 뜨면 Additive(덧붙이기)나 Subtractive(깎아 내기)를 선택할 수 있으며, 이 때 Subtractive 선택 후 OK 버튼 클릭. 이를 통해서 산속의 중앙에 있는 것 같은 깎아 낼 수 있는 solid volume 을 만들 수 있습니다.

New Level 창.

4. Toolbox 안의 좌측 편에 정육면체 모양의 버튼을 볼 수 있습니다. 이 아이콘을 마우스 우 클릭하면 다양한 차원 속성을 가지고 있는 윈도우 창이 화면 중앙에 나타나게 됩니다.

Brush Builder – 정육면체 속성 창.

5. X 와 Y 속성(길이와 넓이 – 세로와 가로)의 값으로 1024를 입력하고, Z(높이) 값으로 512를 입력. 도움이 필요하면 그림 3.5를 참조하십시오.

Build 버튼을 클릭 한 후, 작업이 끝나면 Close 버튼 클릭. 붉은 윤곽선 브러쉬(Red Builder Brush)의 크기가 여러분이 지정한 값으로 변경되어 있을 것입니다. 하지만 특정 뷰포트(viewport)에서 완전히 사라졌다고 놀라지 마십시오. 카메라를 뷰포트 주변으로 조정하면 Red Builder Brush를 다시 볼 수 있을 것입니다!

그림에서 보이는 대로 정육면체의 속성 값을 입력한다.

주의: 입력해야 하는 값 이외의 다른 속성들은 그냥 기본 값으로 놔둬야 합니다!

6. 화면의 좌측 편에 있는 Toolbox 에서 CSG빼기(CSG: Subtract) 버튼 을 클릭합니다. Red Builder Brush의 형태와 위치를 사용하는 subtractive 브러쉬가 만들어 질 것입니다. 이 subtractive 브러쉬는 고체 덩어리로 구성된 지형을 “파내는데” 사용됩니다. 하지만 아직 레벨 상에 광원 배치를 하지 않았기 때문에 아무 것도 볼 수 없을 것입니다.
한 가지 주의 할 점은 CSG빼기(CSG: Subtract) 버튼 을 한 번 누를 때마다 CSG박스가 하나 생성됩니다- 대부분의 사람들(저 역시-)은 제대로 되었는지를 몰라서 버튼을 여러 번의 클릭하는 것을 매우 많이 보았습니다- ^^;

7. perspective 뷰포트 상단에 있는 툴 바에서 Unlit 버튼 을 클릭합니다. 이것은 광원을 계산하지 않고 현재 레벨을 그대로 보여줍니다. 지금 레벨에는 빛이 없기 때문에 이 방법이 현재까지는 무언가를 보거나 작업하는데 있어서 가장 쉬운 방법입니다! perspective 뷰포트 주변을 이리저리 둘러보면서 여러분의 방을 구경해보시기 바랍니다.

여기서 뷰포트 상에서 이동하는 방법과 인터페이스의 설명을 덧붙이자면
-마우스 좌 클릭 상태에서 드래그하면 화면의 앞뒤이동과 회전이 가능합니다.
또는 마우스 우 클릭 상태에서 W,A,S,D를 누르면 차례대로 앞과 뒤 그리고 양 옆을 이동할 수 있습니다- 이동의 감도는 마우스 우 클릭 상태에서 마우스 휠을 올렸다 내렸다해서 조절 할 수 있습니다-

마우스 우 클릭 상태에서 W,A,S,D 이동이 가장 편하게 움직일 수 있을 것 입니다-

-우 클릭 상태에서 드래그하면 카메라를 회전시킬 수 있습니다.

-위, 아래, 좌, 우로 움직이려면 양쪽 마우스 버튼을 모두 누른 상태에서 드래그하면 됩니다.


첫 번째 공간에 대한 현재까지의 진행 상황.

축하합니다! 여러분은 방금 언리얼 레벨에 첫 번째 방을 만들게 되었습니다! 하지만 현재는 그다지 볼 건 없을 겁니다. 다음 튜토리얼에서 또 다른 방을 추가하고 좀 더 흥미로운 단계로 진행하도록 하겠습니다!

이제 여러분은 레벨에서 어떻게 공간을 깎아 내는지 알게 되었습니다. 앞으로도 비슷한 방법을 통해 쉽게 공간들을 더 추가할 수 있을 것입니다. 하지만, 이들 공간들은 방들을 추가하고 레벨의 지오메트리가 깔끔하고 효율적이기 위해서는 각 공간의 정확한 위치와 각 브러쉬들이 정확하게 맞춰져 있어야 함을 꼭 주의하시기 바랍니다.

튜토리얼 2 - 직접 만든 레벨에 두 번째 방 추가하기
1. Toolbox에서 원통(Cylinder) 버튼에 우 클릭. Cylinder 속성 창에서 Z 값으로 1024를 입력하고, 다른 값은 기본값으로 놔둡니다. Build 버튼을 클릭해서 작업이 완료되면 Close 버튼을 클릭합니다. 이 작업을 통해 Red Builder Brush가 긴 육각형으로 바뀌게 됩니다.

원통 brush 를 만들기 위해서 위에 오는 설정 사용.

2. 육각형의 공간에 대해서 subtractive brush를 사용하기 전에, Red Builder Brush를 적당하게 위치시켜야만 합니다. 이 작업은 메인 툴 바에 있는 이행모드(Translation Widget) 을 사용해서 진행할 수 있습니다. 이 아이콘은 아마 3ds 맥스나 마야 같은 다른 3D 프로그램에서도 translation manipulator 기능으로 유사한 모양이 있었을 것입니다.

Red Builder Brush에 좌 클릭해서 선택하면, 브러쉬만 밝은 빨간색으로 하이라이트 되는 게 아니라 그 안에 Translation Widget도 나타나게 될 것입니다.

Translation Widget.

3. 에디터 안에서의 모든 움직임을 정확하게 하기 위해서는 오브젝트가 몇 칸이나 이동할지(혹은 순간 이동)를 결정하는 Drag Grid 설정을 확인해야 합니다. Drag Grid 설정은 인터페이스의 하단부에 있는 콘솔 바의 우측 하단부 근처에서 찾을 수 있습니다 . 체크 박스들이 모두 체크되어 있는지 확인한 후, Drag Grid가 16으로 지정되어 있는지 확인하십시오. 만약 값을 바꿔야 한다면 drag grid 값 바로 옆에 있는 검은색 화살표 버튼을 클릭해서 나오는 메뉴에 16을 입력하면 됩니다.

Drag Grid 설정 메뉴.

주의: 일반적으로 Drag Grid 를 띄워 놓는 편이 좋습니다. 이 Drag Grid는 브러쉬를 끝에서 끝까지 이동시킬 수 있게 해주기 때문에 BSP 지오메트리를 깔끔하게 유지하는데 있어서 가장 중요하기 때문입니다.

4. 이번 단계를 위해서, Top 뷰포트(사분 면의 좌측 상단)가 선택되어 있는지 확인하시기 바랍니다. 화면을 축소하면(Zoom out) 현재의 Red Builder Brush의 전체 모습을 볼 수 있습니다. 브러쉬를 선택하면 안에 있는 Translation Widget 을 볼 수 있을 것입니다. Widget 에 있는 빨간 화살표(X 축)를 클릭 후 드래그해서 Red Builder Brush의 가장 아래쪽 벽이 육면체(cube)의 위쪽에서 2 grid 떨어질 때까지 위쪽으로 이동시킵니다.

여러분의 Drag Grid 값이 16이기 때문에 2 grid분의 공간이라면 육면체와 육각형 사이는 32 units(16 x 2)만큼 떨어진 셈이 됩니다. 이 점은 현 시점에서 중요합니다.

육면체와 육각 기둥이 Top 뷰포트에 정확하게 위치하게 됐다.

팁: 육면체와 육각 기둥 사이에 어느 정도의 거리(units)가 떨어져 있는지 잘 모르겠다면, 마우스 가운데 버튼을 사용해서 grid를 따라서 드래그하면 측정 툴을 볼 수 있습니다.

5. 다음, Side 뷰포트(사분 면의 우측 상단)를 보십시오. 기둥(cylindrical) 브러쉬의 아래쪽이 육면체(cube) 브러쉬의 아래쪽보다 낮다는 것을 알 수 있을 것입니다. 이 부분을 수정하지 않으면, 레벨의 바닥 면이 전체적으로 틀어지게 되어, 해당 레벨에 유저가 들어섰을 때 육각 기둥 모양의 공간의 뻥 뚫린 구멍에 빠져버리게 됩니다!

Side 뷰포트 상태에서 Translation Widget 의 파란색 화살표를 사용해서 기둥의 Red Builder Brush를 Z 축 방향으로 옮기십시오. 이렇게 하면 기둥 형태 공간과 육면체 형태의 공간의 양쪽 바닥이 평행하게 됩니다.

양쪽 공간의 바닥 면이 서로 평행하게 되었음에 주목할 것.

6. 일단 육각형 모양이 육각형과 육면체의 벽 사이에 정확하게 32 units 의 거리를 두고 있음을 확인했다면, CSG빼기(CSG: Subtract) 버튼 을 클릭해서 두 번째 공간을 깎아 내면 됩니다.

7. Top 뷰포트에서 Translation Widget을 사용해서 Red Builder Brush를 옮겨 놓으면 뷰포트 상에서 공간을 보는데 좀 더 편할 것입니다. 현재 두 개의 공간 사이를 플레이어가 오갈 수 있는 길이 없음을 주목하시기 바랍니다.

현재 2개의 공간(room)이 있지만, 자세히 보면 둘이 서로 연결되지 않았음을 알 수 있다.

8. 메인 메뉴 바의 파일(File) 메뉴에서 현 레벨 저장(Save Current Level) 을 선택해서 현재 레벨을 PrimerMap_01로 저장합니다.

이제 지금까지 작업한 레벨에 2개의 공간이 존재하게 되었습니다. 하지만 현 시점에서 이들 공간은 서로 연결되지 있지 않습니다. 다음 튜토리얼에서 이 2개의 공간을 연결할 수 있는 출입구를 만들어서 이 문제를 해결해보도록 하겠습니다.

튜토리얼 3 - 각 방들 연결하기
1. 지난 튜토리얼에서 저장한 PrimerMap_01을 엽니다. 이제부터 2개의 공간을 연결할 수 있는 출입구를 설치해보도록 하겠습니다.

2. 정육면체(Cube) 버튼 에 우 클릭 후, 속성에 다음에 오는 값을 입력한 뒤에 Build 버튼, 그리고 Close 버튼을 클릭합니다.

X: 32
Y: 256
Z: 256

팁: builder brush 속성 창에서 각 입력 창 사이는 키보드의 아래 커서키를 사용해서 이동할 수 있습니다.

3. Top 뷰포트에서 Translation Widget 을 사용해서 Red Builder Brush를 육면체와 육각 기둥 사이에 정확하게 위치시킵니다. Red Builder Brush가 정 중앙에 위치해서 그 양 끝 선이 양쪽 두 개의 공간에 붙어 있는지, 그리고 아래에 오는 그림처럼 서로 평행하게 정렬되어 있어서(반드시 Top 뷰포트에서 확인해야 합니다) 육면체 brush의 양 끝이 정확하게 맞아떨어지는지 확인합니다.

출입구를 만들기 위한 Red Builder Brush의 정확한 정렬 상태.

4. 이제 Top 뷰포트 상에서 Red Builder Brush가 정확하게 정렬되었습니다. Side 뷰포트 상에서도 정렬을 시켜야 하며, 만약 정렬되지 않았을 경우, 제작할 출입구의 아래쪽이 공중에 떠 있게 될 것입니다! Font 뷰포트(사분 면의 우측 하단)에서 Translation Widget을 사용해서 Red Builder Brush를 아래쪽이 다른 두 공간의 바닥 면과 일치하도록 움직여 줍니다.

5. 일단 Red Builder Brush의 위치를 확인했다면, CSG빼기(CSG: Subtract) 버튼을 클릭한 후 두 공간 사이에 출입구를 뚫으면 됩니다. 출입구는 뷰포트 상에서 공간 내부를 카메라를 조작해서 직접 확인이 가능합니다.


드디어 2개의 공간을 출입구로 연결했다!

원래의 목적에 따라 이 레벨을 복잡하게 만들어왔지만, 실제로 여러분이 이 레벨에서 현 상태로 플레이를 해고자 테스트를 해보면, 아무 것도 보이는 게 없다는 것을 알게 될 것입니다! 그 이유는 이 레벨에 아무런 광원 처리가 없기 때문입니다. 다음 튜토리얼에서는 광원을 추가해서 이 문제를 해결해보도록 하겠습니다.

튜토리얼 4 - 레벨에 조명 넣기

1. 지난 튜토리얼에서 저장한 PrimerMap_01을 엽니다.

2. 광원을 만드는 방법에는 여러 가지가 있습니다. 이번 경우에는, 간단한 단축키를 이용해보도록 하겠습니다. [L]키를 누른 상태에서 사각형 박스 형태의 공간을 마우스 왼쪽 클릭을 해보시기 바랍니다. 이를 통해서 공간 가운데에 광원을 추가할 수 있습니다.

3. 당장은 빛을 볼 수 없지만, Perspective 뷰포트 툴 바에서 Lit 버튼 을 클릭하면 여러분이 추가한 광원이 어떻게 보이는지 알 수 있을 것입니다.

광원 추가의 결과를 알 수 있다.

4. 광원을 선택한 후, [F4]키를 눌러서 광원(light) 속성 창을 엽니다. 이 속성 창은 몇 가지의 추가 카테고리로 나뉘어지게 되는데, 우선 Light 카테고리를 선택합니다.
아래쪽에 보면 LightComponet라는 항목이 있을 것입니다. 그 항목을 클릭하면 광원의 표현과 움직임을 제어할 수 있는 수 많은 리스트의 속성들을 볼 수 있습니다.

광원(Light) 속성 창.

5. LightComponent 항목에서 찾은 설정 리스트 중에서, 다음에 오는 속성값들을 설정해줍니다:

Brightness: 0.25 로 설정
CastDynamicShadows: 체크 박스 체크
LightShadowMode: 드롭 다운 메뉴를 이용해서 LigthShadow_Modulate 로 설정
LightingChannels: 속성 이름 좌측의 검은색 화살표 아이콘을 클릭해서 리스트를 확장시킨 후, Dynamic box 를 체크

속성 값에 대한 설정이 끝났다면 속성 창을 닫습니다.

6. 이제 방금 작업한 광원을 복사해서 육각 기둥 형태의 공간을 밝혀보도록 하겠습니다. 광원을 선택한 후, Top 뷰포트에서 [ALT]키를 누른 상태에서 Translation Widget으로 X 축을 따라 광원이 육각 기둥 형태의 공간 중앙에 위치하도록 위쪽으로 이동시킵니다. 대상을 이동시키는 동안 [ALT]키를 누르고 있으면 해당 오브젝트를 복사할 수 있습니다.

7. 새로 복사된 광원을 선택한 후, [F4]키를 눌러서 속성 창을 엽니다. 만약 필요할 경우, Light 카테고리를 선택한 후, PointLightComponet 항목에서 Radius 속성을 768로 설정합니다.


이제 양쪽 공간 모두 불이 들어왔다.

8. 메인 메뉴 바에서 File > 현 레벨 저장(Save Current Level)을 선택해서 지금까지의 변경 사항을 저장하는 것을 잊지 마십시오!

이제 양쪽 공간 모두에 불이 들어왔습니다! 이제부터, 쉽게 테스트도 할 수 있고, 그 안쪽이 어떻게 생겼는지 직접 들어가서 볼 수도 있습니다. 다음 튜토리얼에서 할 일이 바로 그 테스트입니다!

튜토리얼 5 - 레벨 테스트 하기
1. 지난 튜토리얼에서 저장한 PrimerMap_01을 엽니다.

2. 작업한 레벨 안으로 실제로 들어가기 전에 Build 과정을 거쳐야 합니다. Building은 Unreal 레벨을 에디트 하는 과정에서 가장 중요한 작업 중 하나입니다. 이 과정을 통해서 UDK로 실제 플레이 가능한 환경 안에 있는 지오메트리, 광원 그리고 다른 모든 아이템들을 컴파일 할 수 있습니다. 일반적으로, 레벨을 테스트하기 전에 여러분이 변경한 사항이 있다면 항상 다시 Build 과정을 거쳐야 할 것입니다.

이를 위해서는 그저 모두 빌드하기(Build All) 버튼 (메인 툴 바에 위치해 있습니다)을 클릭하기만 하면, 작업한 모든 것들이 한번에 만들어지게 됩니다. 만약 작업된 레벨이 간단하다면, 그에 상응해서 Build 시간도 그만큼 빨라지게 됩니다. 어떤 작업이라도 작업 완료 후 Build를 하지 않으면 변경 사항이 적용된 상태를 확인할 수 없음을 기억하시기 바랍니다!

Building Map 창은 현재 Build의 진행 상태를 보여준다.

3. 일단 Build가 끝나면, 이젠 레벨을 테스트해볼 차례입니다. 테스트를 진행하는 데는 2가지 방법이 있습니다. 첫 번째는 레벨 상에서 시작 위치로 마음 먹은 곳에 PlayerStart 액터(actor)를 배치하는 것이고, 두 번째는 그냥 레벨 어딘가 쯤에(아무래도 바닥이 좋겠죠) 마우스 우 클릭하면 UDK는 이쯤에서 직접 플레이 하면서 테스트하고자 한다는 뜻으로 이해하게 됩니다. 일단 첫 테스트를 위해서 두 번째 방법을 사용해보도록 하겠습니다.

육면체 공간의 바닥에 마우스 우 클릭을 해서 여기서부터 재생합니다(여기서부터 재생합니다(Play From Here)) 를 선택하면 에디터 안에 생성되는 게임 플레이(In Editor Game – 앞으로 말이 너무 길어지면 이 영문으로 기재하겠습니다) 창이 나오게 됩니다. 이 창에서는 실제로 게임을 플레이 하는 것처럼 여러분이 작업한 레벨을 마음대로 돌아다닐 수 있습니다. 다시 에디터로 되돌아올 때는 [ESC]키를 누르면 됩니다.

주의: 바닥에 우 클릭 후 [CTRL]키를 누르고 있는 상태에서 여기서부터 재생합니다(Play From Here) 옵션을 선택하면 캐릭터에 고정된 시선이 아닌, 자유롭게 시점을 돌려볼 수 있는 관람자(Spectator) 시점에서 테스트를 할 수 있습니다.

4. 이번에는 PlayerStart 액터를 사용해서 레벨을 테스트해봅시다. 플레이어로 하여금 특정 위치를 해당 레벨의 시작 포인트로 삼고자 할 때 이 기능은 특히 중요합니다. 바닥 어딘가를 우 클릭한 후, 액터추가(Add Actor) => Add PlayerStart를 선택합니다.


Translation Widget을 이용해서 여러분이 원하는 위치로 PlayerStart 아이콘을 배치할 수 있습니다. PlayStart 아이콘에 있는 작은 화살표가 보이시나요? 이 화살표를 통해서 플레이어가 해당 레벨에 들어왔을 때 어떤 방향을 보게 될지를 정할 수 있습니다. Rotation Widget 을 이용해서 이 화살표를 이리저리 움직여서 여러분이 원하는 방향을 플레이어가 보게끔 조정해보십시오

PlayerStart 액터가 레벨 상에 위치했다.

5. 이제 메인 메뉴 바에 있는 Build 메뉴에서 Play Level을 선택해보십시오. PlayerStart 액터를 추가하지 않고 이 작업을 먼저 하면 에러 메시지가 출력될 것입니다.

작업한 레벨에 대한 테스트를 끝냈으면 [ESC]를 눌러서 에디터로 돌아옵니다. 지금까지 작업한 레벨을 저장하는 것을 잊지 마십시오!

지금까지 우리는 레벨의 지오메트리(CSG)를 만들고, 광원을 배치해서 우리가 둘러볼 수 있도록 만들었습니다. 하지만 현재 우리가 볼 수 있는 것은 밋밋한 기본 머터리얼 뿐입니다. 다음에 오는 몇 개의 튜토리얼들을 통해 벽, 바닥 그리고 천장에 여러 머터리얼을 추가함으로써, 주변 환경을 바꾸는 작업을 시작할 것입니다.

튜토리얼 6 - 월드 지오메트리에 머터리얼(Material) 추가하기
1. 지난 튜토리얼에서 저장한 PrimerMap_01을 엽니다.

2. 레벨에 머터리얼을 추가하기 전에 레벨 제작에 필요한 모든 머터리얼과 메쉬를 담고 있는 패키지를 열 필요가 있습니다. 메인 메뉴 바에서 보기(View) > 브라우저 창(Browser Windows) > 콘텐츠 브라우저 를 선택해서 콘텐츠 브라우저를 엽니다.

View 메뉴로 들어가면 콘텐츠 브라우저를 찾을 수 있다.

3. 패키지를 열면 콘텐츠 브라우저 좌측 하단부에 있는 Packages 리스트 안에 다른 리스트들이 나열되어 있는 것을 알 수 있을 것입니다. UDKGame의 패키지를 선택한 후 상단의 창에 있는
Materials 그룹을 선택합니다. 이를 통해서 콘텐츠 브라우저가 UDKGame 패키지 안에 있는 머터리얼들만 보여주도록 설정할 수 있습니다. 그 이후 상단의 검색 창(혹은 Ctrl + Alt + F)에 wall을 입력하여, wall에 쓰일 머테리얼 중 ‘M_NEC_Walls_BSP_Brick1’을 선택합니다-

콘텐츠 브라우저가 패키지내의 머터리얼들만 보여주도록 설정됐다.
그 후에 Material을 선택하면 Material만 보여진다-

4. Perspective 뷰포트에서 시점을 조종해서 육면체 공간으로 들어갑니다. 이 공간의 벽을 마우스 좌측 버튼으로 클릭하면 선택된 벽이 파란색으로 변하게 됩니다. 이는 해당 표면(Surface)가 선택되었음을 나타냅니다.

[CTRL]키를 누르고 있는 상태에서 육면체 공간의 바닥을 제외한 출입구의 모든 표면을 포함한, 벽들 그리고 천장을 클릭해서 선택합니다. 선택한 벽은 파랗게 보일 것 입니다-

선택한 벽은 파랗게 보입니다
-
5. 콘텐츠 브라우저로 돌아와서, ‘M_NEC_Walls_BSP_Brick1’ 머터리얼을 선택한채로 뷰포트 상에서Shift버튼과 마우스 왼쪽 버튼을 누르면, 현재 선택된 모든 표면(Surface)들에 머터리얼을 적용시키게 됩니다. 이제 Perspective 뷰포트 상에서 선택된 아무 벽이나 클릭해서 선택 상태를 해제하면 머터리얼이 적용된 결과값을 확인할 수 있습니다.

첫 번째 머터리얼이 육면체 공간에 적용되었다.

6. 같은 방법으로 육면체 공간의 바닥을 선택한 후, 콘텐츠 브라우저에서 ‘M_LT_Floors_BSP_Master’ 를 선택해서 해당 머터리얼을 바닥에 적용시킵니다.
마찬가지로, 이 머터리얼을 출입구의 바닥에도 적용시킵니다.

7. 이제 육각 기둥 형태의 공간으로 가봅시다. 이전과 마찬가지로 벽과 천장을 모두 선택합니다. 간단하게 하려면, 아무 벽이나 하나 선택한 후, [SHIFT]+[B]를 눌러주면 해당 브러쉬에 상응하는 모든 표면이 선택됩니다. 이제, [CTRL]키를 누른 상태에서 바닥을 클릭해서, 선택 상태를 해제하고 벽과 천장만 선택된 상태로 놔둡니다.

표면들이 선택되었다면, 콘텐츠 브라우저로 가서 ‘M_UN_Cave_BSP_Big_Wall’ 머터리얼을
검색하고머테리얼을 선택한 후, 뷰포트 상에 커서를 두고 Shift버튼를 누른 채 마우스 왼버튼을
클릭해서 선택한 표면에 선택한 머테리얼을 적용시킵니다.

8. 지금까지 알게 된 기술을 이용해서 육각 기둥 형태의 공간의 바닥에 ‘M_HU_Floors_BSP_Gray_Tiles’ 머터리얼을 적용시킵니다.

육각 기둥 형태의 공간에 머터리얼이 적용된 모습.

9. 자유롭게 테스트해보십시오. 단, 작업이 끝난 후 반드시 저장해야만 합니다!

드디어 우리가 만든 레벨이 제 모습을 갖춰가고 있습니다! 벽도 제자리에 위치했고, 불빛도 제대로 작동하고 있습니다. 그리고, 벽에 뭔가가 “칠해져” 있긴 하지만, 그래도 보이게 전체적으로 꽤 괜찮습니다. 이제 뭔가 특성을 부여하기 위해서 어떤 오브젝트들을 배치해야 합니다. 다음 튜토리얼에서 3ds 맥스나 마야 등의 외부 3D 프로그램으로 만들어진 모델들인 스태틱 메쉬(static mesh)들로 우리가 작업한 레벨을 채워보도록 하겠습니다. 단, 이 작업을 위한 메쉬들은 이미 만들어져 있는 것들을 활용하도록 하겠습니다. 스태틱 메쉬의 제작을 좀 더 자세히 알고 싶다면 챕터 5: 스태틱 메쉬(Static Mesh)편을 보시면 됩니다.

튜토리얼 7 – 레벨에 스태틱 메쉬(Static Meshes) 배치하기
1. 지난 튜토리얼에서 저장한 PrimerMap_01을 엽니다.

2. 콘텐츠 브라우저 를 시작합니다.

콘텐츠 브라우저의 좌측에 있는 패키지 리스트에서 UDKGame 패키지=>Content=>Environments 그룹을 볼 수 있을 것입니다.

3. UDKGame 패키지의 Environments 그룹을 선택하고, 필터에서 Static Meshes를 선택하면, 브라우저 안에 모든 종류의 스태틱 메쉬들이 출력되는 것을 볼 수 있을 것입니다. 우리는 이 중에서 하나를 배치할 텐데, 이 중 ‘S_HU_Deco_Pipes_SM_PipeSetB02’ 메쉬를 선택합니다. 앞에서 설명 했듯이 이름으로 검색하면 훨씬 빠르게 자신이 선택하려는 메쉬를 찾을 수 있습니다- 메쉬를 레벨에 배치하려면 반드시 브라우저에서 선택을 해줘야만 합니다.

메쉬 카테고리가 선택된 상태에서는 콘텐츠 브라우저에 패키지 안의 스태틱 메쉬만 표시된다.

4. Perspective 뷰포트에서 시점을 조종해서 사각박스 형태의 공간으로 이동합니다. 벽 근처의 바닥(어떤 벽이든 상관없지만, 나중에 가면 공간의 중앙을 향하도록 특정 오브젝트들을 회전시킬 필요도 있을 것입니다)에 마우스 오른쪽 클릭을 해서 액터 추가(Add Actor) > Add StaticMesh: StaticMesh PrimerLevel.Meshes.sm_pipe_straight 를 선택합니다.
이를 통해서 여러분이 마우스 오른쪽 버튼으로 클릭한 위치에 사전에 선택된 스태틱 메쉬를 배치할 수 있습니다.

반드시 콘텐츠 브라우저 창에서 배치하려는 스태틱 메쉬를 선택한 상태여야 합니다-

Top 뷰포트 상에서 메쉬가 벽으로부터 32 units(2 grid에 해당하는 공간) 정도 떨어져 있는지 확인하십시오. 만약 필요할 경우, Translation Widget으로 메쉬를 이동시키면 됩니다.

주의: 마우스 오른쪽 버튼 클릭을 통해서 나오는 메뉴의 액터 추가(Add StaticMesh): 뒤에 오는 옵션은 여러분이 콘텐츠 브라우저에서 현재 선택한 스태틱 메쉬에 따라 바뀌게 됩니다.

바닥에서부터 수직으로 서 있는 파이프 형태의 첫 스태틱 메쉬.

팁: 만약 다른 창에서 스태틱 메쉬가 보이지 않는다면 [W]키를 눌러보십시요- [W]키는 스태틱 메쉬 보기를 켜고 끄는 단축키 입니다-

5. 다음, 콘텐츠 브라우저에서 ‘S_HU_Deco_Pipes_SM_PipeSetB03’ 메쉬를 선택합니다. 이 메쉬를 배치하기 위해서 시점을 옮겨서 방금 추가한 파이프 형태의 스태틱 메쉬의 꼭대기가 보이도록 합니다. 파이프 모양의 메쉬 제일 끝 단에 우 클릭 후, 액터 추가(Add Actor) > Add StaticMesh: StaticMesh HU_Deco_Pipes.SM.Mesh.S_HU_Deco_Pipe_SM_PipeSetB03 를 선택합니다. 이를 통해 파이프 모양의 메쉬 끝에 밸브(Valve) 모양의 메쉬를 추가하게 됩니다.

필요할 경우, Top 뷰포트(사분 면의 우측 상단)에서 이음새 모양의 메쉬를 옮겨서 파이프 모양의 메쉬에 정확하게 배치될 수 있도록 합니다. 이음새(joint) 메쉬가 파이프의 끝을 포함하도록 수직으로 제대로 배치됐는지 Side 나 Front 뷰포트를 통해서 확인할 수 있을 것입니다.

수직으로 세워진 파이프 메쉬 위에 밸브 메쉬가 먹어들어가도록 배치합니다-

6. 콘텐츠 브라우저에서 S_HU_Deco_Pipes_SM_PipeSetB01 스태틱 메쉬를 선택해서 액터 추가(Add Actor) > Add StaticMesh: StaticMesh S_HU_Deco_Pipes.SM.Mesh. S_HU_Deco_Pipes_SM_PipeSetB01 메뉴로 해당 스태틱 메쉬를 맵에 추가합니다.
s
팁:콘텐츠 브라우저에서 자신이 배치할 메쉬를 선택한 상태에서 [S]키를 누른 상태로 마우스 왼클릭을 하면 자신의 커서가 있는 곳에 매쉬가 배치됩니다-

이 메쉬는 밸브 메쉬 바로 위에 나타날 테지만, 여러분은 이 메쉬를 밸브의 한 쪽 면을 향하도록 배치해야 하기 때문에 메쉬의 방향을 돌릴 필요가 있습니다. 이 작업을 위해서 툴 바에 있는 Rotation Widget 을 클릭한 후, 연두색의 회전 축(Y 축)을 드래그해서 해당 메쉬가 밸브의 한 쪽을 향하도록 조정해줍니다.

주의: [CTRL]키를 누른 상태로 3개의 메쉬 모두를 선택하면 한 개 유닛을 돌리는 것처럼 동시에 모두를 돌릴 수 있습니다.

팁: [스페이스 바]를 누를 때마다 Translation, Rotation, 그리고 Scale widget으로 바뀝니다!

회전을 시키고 나서 밸브의 한 면에 우리가 추가한 파이프를 옮겨야 하지만 현재의 그리드로는 정확하게 배치 할 수 없습니다- 그러므로 우리는 UDK의 그리드 단위를 옮겨서 정확한 위치에 파이트를 놓아야 합니다-
UDK의 우측 하단의 그리드 단위를 바꾸는 곳에서 그리드를 1로 바꾸어 줍니다-

그리드의 단위를 바꿔서 좀 더 미세한 위치 조정을 할 수 있도록 해야합니다-

그리드를 바꾼 후에 파이프를 선택하여 TopView와 SideView를 참고하여 밸브의 한 쪽면에 정확하게 배치합니다-
이 후에는 다음의 작업을 위해서 다시 그리드를 꼭 바꿔줘야 합니다-

그리고 3개의 메쉬를 Ctrl키를 누른채로 하나씩 선택하여 3개의 메쉬를 모두 선택한 다음 Rotation Widget 을 클릭한 후, 파란색의 회전 축(Z축)을 드래그해서 튀어나온 밸브의 한 쪽이 실내의 중앙을 향하도록 조정해줍니다.

그림과 같이 배치하여야 하며, 그리드가 다시 16UU로 바뀌었는지 확인하셔야 합니다-

이제 다른 스태틱 메쉬들을 추가하여 각자 사각박스 안을 꾸며 보시기 바랍니다-

이것 저것 자신의 취향대로 스태틱 메쉬를 배치 해 보시길 바랍니다-

7. 라이트 매스 박스를 만들어 봅시다-
[B]키를 눌러서 레드 블러쉬를 확인합니다-
그리고 다음의 값을 참고하여 우리가 만든 모든 방을 덮을 만한 레드블러시를 만듭니다-

X - 2200
Y - 1200
Z - 1200

이 박스를 이용해서 우리가 만든 레벨 전체를 덮도록 이동한후에 볼륨추가 => LightmassImportanceVolume로 라이트 매스(LightMass)박스를 만들어 줍니다-

그림과 같이 LightMass 박스를 배치합니다- 이제 라이트의 계산이 가능하게 되었습니다-
만약 이러한 과정없이 Build All 버튼 을 클릭하면, 지금까지 추가한 파이프 메쉬에는 그림자가 나타나지 않게 될 것입니다.
이는 그림자가 표면과 표면간의 연산을 기반으로 하기 때문으로 파이프 메쉬 뒤쪽의 벽의 표면에 나타나는 그림자의 해상도가 충분할 정도로 명확하지 않기 때문입니다. 기본적으로, 그림자는 우리가 임의로 만들 수 없을 정도로 엄청나게 산란되게 마련입니다. 이를 수정하기 위해서 우선 파이프 메쉬 뒤쪽 벽을 클릭해서 선택한 후(선택된 벽은 파란색으로 바뀝니다), [F5]키를 눌러서 표면(Surface) 속성 창을 불러옵니다.

[F5]키를 눌렀을 때 나타나는 표면(Surface) 속성 창.

8. 표면(Surface) 속성 창에서 조명(Light) 그룹을 보면, 조명 해상도(Lightmap Resolution)의 우측에 드롭다운 메뉴가 있습니다. 이 메뉴를 클릭해서 값을 8.0으로 설정하면 파이프 메쉬 뒤의 그림자를 명확하게 만들어서 결과적으로 눈에 보이게끔 만들 수 있습니다. 이 작업이 끝난 후, Build All 버튼 을 클릭해서 결과를 확인해보시기 바랍니다.

조명해상도(Lightmap Resoultion) 속성은 보는 바와 같이 직관적으로 되어 있습니다. 숫자를 낮게 잡을수록 그림자는 점점 더 선명해집니다. 이 숫자들은 그림자의 한 점을 계산하는데 필요한 언리얼 unit 의 숫자로 생각하면 될 것입니다. 따라서 이 숫자가 작아질수록 그림자는 더욱 촘촘하게 채워지는 것입니다. 동시에, 그림자의 점을 작게 잡을수록 인접한 그림자를 만드는데 더 많은 점들을 필요로 하게 됩니다. 이 말은 조명해상도(Lightmap Resoultion) 의 값을 낮게 잡을수록 더욱 강력한 연산 처리 능력을 필요로 하며, 결국 해당 레벨의 속도가 느려지게 된다는 뜻입니다. 너무 많은 표면에 이와 같은 작업을 하지 않도록 주의하십시오!


파이프 뒤편의 그림자가 보여지게 되었음에 주목할 것.

첫 스태틱 메쉬를 레벨에 배치했지만, 아직도 가야 할 길이 멉니다. 실제 레벨에서는 보통 여기저기에 스태틱 메쉬를 배치하게 마련입니다. 흔히 레벨의 기본적인 레이아웃과 프로포션은 월드 지오메트에 의해서 만들어진다고 생각하지만, 실제의 풍부한 세부 묘사와 레벨을 채우는 각종 오브젝트들은 스태틱 메쉬로 모두 만들어지게 됩니다. 당연히 여러분이 레벨 하나를 제작할 때는 수백 개의 스태틱 메쉬를 이용해서 작업을 끝낼 수 있을 것입니다. 게다가, 스태틱 메쉬의 연산 방식에 의해서 동일한 메쉬의 다중 인스턴스는 한 개의 인스턴스보다 아주 약간의 연산 능력을 더 필요로 합니다. 이 말은 곧, 여러분의 컴퓨터에 과다한 부하를 주지 않고도 많은 수의 메쉬를 복사해서 배치할 수 있다는 뜻입니다.

아직 작업을 위해서 사용해볼 약간의 메쉬가 더 남아 있는 관계로, 다음 튜토리얼에서 가까이 접근하면 자동으로 열리는 출입구를 비롯해서 몇 개의 메쉬를 레벨에 배치해보도록 하겠습니다.

튜토리얼 8 – 출입구메쉬(Doorway Mesh) 추가하기
1. 지난 튜토리얼에 이어서, 마지막으로 저장한 PrimerMap_01 파일을 엽니다. 이번에는 두 개의 공간을 나누는 출입구의 주위를 감싸는 출입구 메쉬를 추가해보도록 하겠습니다.

2. 콘텐츠 브라우저를 열어서 UDKGame 패키지를 선택한 후 더욱 쉽게 스태틱 메쉬를 찾을 수 있도록 콘텐츠 브라우저 창에서 스태틱 메쉬를 체크한 후 ‘S_LT_Doors_SM_DoorWay04’ 라는 이름의 스태틱 메쉬를 선택해줍니다.

3. Perspective 뷰포트에서 두 개의 공간 중간에 있는 출입구의 중앙 바닥 부분을 마우스 우 클릭합니다. 우 클릭 시 나오는 메뉴에서 액터 추가(Add Actor) > Add StaticMesh: StaticMesh LT_Door.SM.Mesh.S_LT_Doors_SM_Door04 를 선택합니다. 어느 정도의 정렬이 필요하겠지만, 이 작업을 통해서 출입구에 출입구 메쉬를 추가했습니다. Translation Widget를 사용해서 Front 뷰포트 상에서 출입구 메쉬가 출입구에 정확하게 일치할 수 있도록 이동시켜줍니다. Perspective 뷰포트에서 정렬 상태를 확인해보는 것을 잊지 마십시오.
그리고, 현재의 출입구를 정확하게 공간에 맞추기 위해서 UDK에디터의 우측 하단의 창에 X축의 스케일을 1.07, Z축의 스케일을 1.5로 입력해서 출입구 주변 메쉬의 스케일을 변경해줍니다-

표신된 부분의 참고하여 출입구 주변 메쉬의 크기를 조절해 정확한 위치에 배치합니다-

주의: 만약 공간을 Top 뷰포트에서 봤을 때 위아래가 아닌 측면으로 움직이도록 서로 다른 방향으로 만들었다면, Rotation Widget을 사용해서 출입구 메쉬를 90도 회전시켜서 출입구와 일치하도록 해줘야 할 것입니다.

4. Build All 버튼 을 클릭해서 여러분이 작업한 빛과 그림자가 표현되도록 합니다.

5. 저장한 뒤 여러분의 맵을 테스트합니다.

주의: 아직은 실제로 열고 닫히는 문을 출입구에 배치하지는 않았습니다. 스태틱 메쉬로 이 문을 배치했다고 신나서 그냥 건너뛰려 하지 마시기 바랍니다! 열고 닫히는 문은 애니메이션 연출이 가능한 다른 형태의 액터(actor)를 사용해서 나중에 만들게 될 것입니다.!

이제 간단한 레벨에 모든 스태틱 메쉬들을 배치했습니다. 다음은, 출입구에 간단한 빛의 강조를 통해서 그 주변으로 빛이 방출되도록 만들어보겠습니다. 현재, 출입구 메쉬에는 단순히 푸른 빛으로 빛나는 효과만이 머터리얼로 적용되어 있습니다. 하지만 지금의 레벨 상에서 실제로 빛을 발산하는 요소는 없습니다. 만약 우리가 이러한 요소들로 하여금 마치 빛이 발산되는 듯하게 만들려면 광원의 강조를 통한 전략적인 배치로 “눈속임’을 할 필요가 있습니다.

튜토리얼 9 – 출입구 메쉬(Doorway Mesh) 주변에 빛 강조하기
1. 지난 튜토리얼에 이어서, 마지막으로 저장한 PrimerMap_01 파일을 엽니다. 이번에는 두 개의 공간을 나누는 출입구의 주위를 감싸는 출입구 메쉬를 추가해보도록 하겠습니다.

2. Perspective 뷰포트에서 출입구 메쉬를 가까이서 볼 수 있게끔 시점을 조절해줍니다. 다음, [L]키를 누르고 있는 상태에서 출입구 메쉬의 상단 중앙에 있는 푸른색 조명이 들어온 곳을 왼쪽 클릭해줍니다. 이 작업을 통해서 선택된 모양의 표면에 새로운 광원을 배치할 수 있습니다.

푸른 등의 표면에 조명(Light)이 배치되었다.

3. Translation Widget을 사용해서 광원을 출입구에서 몇 unit 정도 떨어지게 움직입니다. 아주 정확하게 할 필요는 없고, 그저 광원 아이콘이 표면(surface) 바로 위에 위치하지만 않게 이동시켜놓으면 됩니다. 하지만, 그렇다고 해서 멀리 빼서 광원 이펙트 자체가 사라지면 안됩니다. 약 32 unit 정도면 충분할 것입니다.

4. 광원(light)을 선택한 후, [F4]키를 눌러서 속성 창을 엽니다. Light 탭을 연 후, LightComponent 카테고리에서 다음과 같이 설정해줍니다:

-Brightness: 0.5
-CastDynamicShadows: 체크 박스 체크
-LightColor:
A: 0
B: 255
G: 180
R: 128
Light Source Radius : 128
-Radius: 256
5. [ALT]키를 누르고 있는 상태에서 Translation Widget을 사용해서 광원의 복사본을 반대쪽에서 이동시켜 그 반대쪽의 푸른 등 앞에도 광원을 배치해줍니다.


광원 2개가 설치되었다-

6. Build All 버튼을 클릭해서 새로운 광원에 의한 조명을 연산한 후, 테스트해보고 그 결과를 저장합니다.

광원 강조(Accent lighting)는 실제 환경과 유사한 레벨에서 중요한 요소입니다. 빛의 발산 효과를 제공하는 머터리얼 발산(Material emission)은 레벨 상의 적당한 위치에 사용하면 시각적으로 뛰어난 효과를 보여주는 강력한 기능이지만, 실제 조명을 만들어내는 광원의 추가는 여러분이 작업한 레벨에 사실성의 극대화를 꾀할 수 있습니다. 다음에 진행될 몇몇 튜토리얼을 통해서 파티클(Particle)을 기반으로 한 증기(steam) 형태의 특수 효과를 기존의 레벨에 추가하는 작업을 진행해보도록 하겠습니다!

파티클(Particles)이란 증기, 연기, 불, 먼지, 심지어 파면까지 다양한 효과를 만들 때 사용할 수 있는 최소 단위입니다! 언리얼에서 파티클을 설정하는 것은 아주 간단할 수도, 혹은 극도로 복잡할 수도 있습니다. 하지만, 현재의 기초 단계에서는 향후의 챕터 16: 파티클 시스템(Particle Systems)으로 특수 효과 만들기 에서 다루게 될 때까지 깊이 있는 내용은 자제하고 아주 간단한 부분들만 다루도록 하겠습니다.

튜토리얼 10 – 레벨에 증기 이미터(Steam Emitter) 배치하기
1. 지난 튜토리얼에 이어서, 마지막으로 저장한 PrimerMap_01 파일을 엽니다.

2. 콘텐츠 브라우저에서 UDKGame 패키지가 가지고 있는 Emitter를 보기 위해서 필터창의 Paricle System을 체크합니다-
미리 보기(preview) 창에서 ‘P_VH_Cicada_GroundEffect’ 를 볼 수 있을 것입니다. 반드시 해당 이미터가 선택된 상태를 확인해야만 합니다.

3. Perspective 뷰포트에서 현재 방 쪽으로 향해 있는 (구부러진) 파이프 메쉬의 끝 단에 마우스 오른쪽 클릭을 합니다. 메뉴에서 액터 추가(Add Actor) > Add Emitter: P_VH_Cicada_GroundEffect 를 선택해서 이미터를 배치해줍니다.


4. 이번에는 퓨포트 상에서 이미터(emitter)를 볼 수 없을 것입니다. 이 문제는 뷰포트의 툴 바 가장 왼쪽에 있는 Real Time 버튼 을 클릭해서 해결할 수 있습니다.

이미터 아이콘은 다섯 개의 점이 서로 바짝 붙은 형태로 표시된다-

5. 결과물을 저장하고 테스트를 해봅니다-
현재까지 기본적인 레벨을 이용해서 작업해왔지만, 이 작업을 끝내기 전에 추가해야 할, 수 없이 많은 요소들이 아직 남아 있습니다. 다음 단계는 출입구에서 실제로 열리고 닫히는 문을 추가해보도록 하겠습니다. 이 작업을 위해서 매터니(Matinee – 이전 버전의 언리얼을 사용해본 사람들이라면 게임 내 동영상과 스크립트화된 시퀀스를 만드는데 사용되는 툴이라고 알고 있을 것입니다)와 언리얼 엔진 3.0에 추가된 시각화된 이벤트 스크립트 시스템인 키즈멧(Kismet)을 사용해보도록 하겠습니다.

튜토리얼 11 – 인터팩터(InterpActor - Mover)와 트리거 추가하기
1. 지난 튜토리얼에 이어서, 마지막으로 저장한 PrimerMap_01 파일을 엽니다.

2. 레벨에 움직이는 오브젝트를 추가하기 위한 첫 단계로, 그에 상응하는 메쉬를 추가해야 합니다. 하지만, 움직이지 않는 스태틱 메쉬로 추가하기 보다는 매터니(Matinee) 시스템에서 특정 애니메이션을 사용해서 움직이는 “보간(補間) 액터(interpolation actor – 일반적으로 “mover”라고 하는)를 추가해보도록 하겠습니다.

콘텐츠 브라우저에서 UDKGame 패키지를 선택해서 하위 메뉴를 불러온 후, Static Meshes 그룹을 체크합니다.

UDKGame 패키지에 있는 Door이란 이름을 가진 모든 메쉬가 표시된다.

3. S_LT_Doors_SM_DoorWay04 메쉬를 선택한 후, Perspective 뷰포트에서 출입구나 그 근처의 바닥에 마우스 오른쪽클릭 후, 액터 추가(Add Actor) > Add InterpActor: StaticMesh LT_Doors.SM.Mesh.S_LT_Doors_SM_DoorWay04 를 선택해줍니다. 이 작업을 통해서 스태틱 메쉬가 아닌 InterpActor 역할을 하는 메쉬를 추가할 수 있습니다.

4. Top, Front, 그리고 Side 뷰포트에서 Translation Widget을 사용해서 문 메쉬가 출입구에 정확하게 일치하도록 맞춰줍니다. 만약 필요하다면, Rotation Widget으로 문을 90도 회전시킵니다- 또, 문 주변의 메쉬를 배치할 때 처럼 우측 하단의 X축의 스케일을 1.07 Z축의 Scale을 1.5로 조정 합니다.

출입구의 메쉬가 정확한 위치에 배치되었다.

5. 추가된 문이 아무 문제없이 작동될 수 있도록 몇 가지 설정을 해줄 필요가 있습니다. 뷰포트에서 문의 무버(mover)를 선택한 후, [F4]키를 눌러서 다음에 오는 대로 설정을 하십시오:

-DynamicSMActor 탭을 엽니다.
- 다시 StaticMeshComponent 카테고리를 엽니다. Light 탭 아래에 오는 CastDynamicShadow 를 false (체크 박스 해제)로 놓습니다. 이를 통해서 문이 열려 있을 때 벽을 통해서 문의 그림자가 비춰 보이는 것을 막아줍니다.

- Collision 탭을 엽니다.
-플레이어가 문을 통과해서 지나갈 수 없도록 드롭 다운 리스트 상에서 CollisionType 이 COLLIDE_BlockAll 로 설정되어 있는지 확인합니다.
-속성 창을 닫습니다.

위의 그림과 같이 설정합니다-

6. 이번에는 문을 여는데 사용할 “스위치”를 추가해야만 합니다. 언리얼에서는 이런 스위치를 트리거(Trigger)라고 합니다. 광원(light)와 마찬가지로 액터 추가(Add Actor) 메뉴를 통해서 사용할 수 있습니다.

문 메쉬의 가운데에 마우스 오른쪽 클릭을 한 후, 액터 추가(Add Actor) > Add Trigger 를 선택해서 레벨에 새로운 트리거를 추가해줍니다.


그림 3.46 – 방의 한 가운데에 트리거가 추가된 것을 볼 수 있다.

7. 트리거를 선택한 상태에서 [F4]키를 눌러서 트리거의 속성 창을 엽니다. Trigger 탭의 하위 메뉴에서 CylinderComponent 카테고리를 선택합니다.

CollisionHeight 와 CollisionRadius 의 속성을 96.0으로 설정합니다.

8. Top 뷰포트에서 트리거가 선택되어 있고 눈에 보이는지 확인한 상태에서 [C]키를 눌러서 트리거에 대한 충돌 지오메트리를 표시해줍니다. 그 후, 수직으로 내려다 보는 화면 상에서 Translation Widget을 이용해서 문의 정 가운데에 트리거가 위치할 수 있도록 옮겨줍니다. 충돌 지오메트리가 문의 양쪽으로 모두 튀어나와 있어야 한다는 사실을 잊지 마십시오.

주의: 충돌 구역의 시각화는 각 뷰포트 별로 독립적으로 적용됩니다. 즉, 만약 여러분이 어떤 뷰포트에서 [C]키를 눌러서 충돌 지오메트리를 보이도록 했어도 다른 뷰포트에서 [C]를 눌러서 해당 기능을 켜주지 않으면 다른 뷰포트에서는 충돌 지오메트리를 볼 수가 없습니다. [C]키를 한번 더 누르면 이 기능은 꺼집니다.

다음과 같이 배치합니다-

9. 레벨을 저장합니다.

인터팩터(InterpActor)와 트리거가 이제 레벨 안에 배치되었습니다. 하지만, 문이 제대로 작동하려면 2가지의 요소를 더 추가시켜줘야만 합니다: 키즈멧 시퀀스와 매터니 시퀀스가 그 2가지 입니다. 원래 매터니는 트리거로부터 입력(이 경우, 유저가 충돌 반경 내에 들어왔을 때)을 “감지”하면 인터팩터(InterpActor)에게 어떤 동작이 필요한지를 알려주는 역할을 합니다. 하지만, 이 모든 정보 교환은 키즈멧(Kismet) 시퀀스가 제자리에서 조율해주지 않으면 불가능해지게 될 것입니다. 다음 튜토리얼에서 매터니(Matinee) 애니메이션과 함께 맞물려 사용될 첫 번째의 기본 시퀀스를 만들면서 키즈멧에 대해서 알아보도록 하겠습니다.

간단하게 말하자면, 키즈멧(Kismet)은 네트워크 안에 여러 개의 노드들을 간단하게 연결해줌으로써 복잡한 이벤트들을 만들어낼 수 있는 시각화된 스크립트 제작 시스템이라고 할 수 있습니다. 키즈멧의 다양한 시퀀스를 만드는 방법에 대해서 이 책 전반에 걸쳐서 풀어나갈 테지만, 일단 이번에는 가장 단순한 시퀀스를 만들어보도록 하겠습니다.

튜토리얼 12 – 첫 번째 키즈멧(Kismet) 시퀀스 만들기
1. 지난 튜토리얼에 이어서, 마지막으로 저장한 PrimerMap_01 파일을 엽니다.

2. UDK 인터페이스의 상단에 있는 메인 툴 바에서 Open Kismet 버튼 을 클릭해서 UnrealKismet(언리얼키즈멧 – 간단하게 줄여서 Kismet) 에디터를 엽니다. 이 에디터를 통해서 키즈멧 시퀀스를 만들게 됩니다.

키즈멧(Kismet) 에디터 인터페이스.

3. 레벨에서 트리거가 선택되어 있는지 확인한 후, 주 작업 공간(main workspace – 키즈멧 창 위쪽의 넓은 구역)에 마우스 오른쪽 클릭을 해서 Trigger_0를(을) 사용하는 새 이벤트(New Event Using Trigger_0) > Touch 를 선택해줍니다. 이를 통해서 Trigger_0에 자동으로 연결되는 터치 시퀀스 오브젝트를 만들 수 있습니다.

트리거를 선택 한 상태여야 새로운 터치 시퀀스 오브젝트가 만들 수 있다-

4. 키즈멧의 작업공간을 살펴보면 화면의 왼쪽 편에 터치 시퀀스 오브젝트가 위치해 있음을 알 수 있을 것입니다. 터치 시퀀스 오브젝트의 우측 편에 있는 빈 공간을 마우스 오른쪽 버튼으로 클릭한 후, New Matinee 를 선택해줍니다.

처음 만든 터치 시퀀스 오브젝트 옆에 매터니 시퀀스 오브젝트가 보인다. 이 둘을 서로 비슷한 위치로 정렬시키면 보통 왼쪽에서 오른쪽으로 연결하게 되는 각각의 연결이 좀 더 수월해질 것이다.

5. 터치 시퀀스 오브젝트에 있는 Touched 라고 표기된 출력 단자의 바로 옆에 있는 작은 돌기 위에 마우스 커서를 올려놓으면 이 부분이 노란색으로 바뀌는 것을 볼 수 있을 것입니다. 다음, 터치 시퀀스 오브젝트의 Touched 출력 단자에서 마우스 왼쪽 클릭 후, 드래그해서 “선”을 매터니 시퀀스 오브젝트의 Play 입력 단자로 연결을 해줍니다. 이 것은 트리거를 건드리면 매터니 시퀀스가 “play”된다는 뜻으로, 다시 말해서 플레이어가 트리거의 충돌 반경 안에 들어오면 문이 열리게 되는 것입니다.

6. 이번에는 터치 시퀀스 오브젝트의 Untouched 출력 단자에서 매터니 시퀀스 오브젝트의 Reverse 입력 단자로 선을 연결해줍니다. 이렇게 연결해 놓으면, 플레이어가 트리거를 건드리자 않게 되면, 매터니 애니메이션이 반대로 작동(혹은 애니메이션의 되감기)하게 됩니다. 즉, 플레이어가 문으로부터 멀어지면 문이 자동으로 닫히게 됩니다.

두 개의 시퀀스 오브젝트들이 이제 “선”으로 연결되었다.

7. 마지막으로, Trigger_0 터치 시퀀스 오브젝트를 선택해서 속성 구역에 있는 MaxTriggerCount 속성을 0으로 설정해줍니다. 이렇게 해주면, 트리거가 무제한의 횟수로 작동을 하게 되기 때문에 결국 유저가 지나가면 문이 닫히고, 유저가 다시 접근하면 문이 열리는 동작을 반복하게 됩니다.

8. 현재까지의 작업 진행 상황을 저장해줍니다. 아직은 직접 플레이 해볼만한 요소가 추가된 게 아니므로 맵을 테스트해볼 필요는 없습니다.

지금까지 우리는 레벨에 인터팩터(InterpActor)를 추가하고, 키즈멧을 이용해서 플레이어가 트리거를 건드렸을 때 어떤 일이 발생할 수 있도록 시퀀스를 설정해봤습니다. 하지만, 아직은 그 “어떤 일”이 정확히 무엇일지는 만들지 않았습니다. 다음 튜토리얼에서 키즈멧 시퀀스가 작동하면 문이 움직이게끔 매터니(Matinee)를 이용해서 인터팩터(InterpActor)를 만들어보도록 하겠습니다.

튜토리얼 13 – 매터니(Matinee)로 인터팩터(InterpActor) 설정하기
1. 지난 튜토리얼에 이어서, 마지막으로 저장한 PrimerMap_01 파일을 엽니다.

2. 키즈멧 에디터에서 매터니 오브젝트를 더블 클릭하면, 비선형(non-linear) 비디오 편집 환경과 아주 유사한 매터니 에디터가 열립니다.

매터니(Matinee) 인터페이스.

주의: 중요! 뷰포트 중 한 곳에서 여러분의 무버(mover – 보라색 외각 선을 가진)가 선택되어 있는지 확인해봐야 합니다. 만약 무버(mover)가 선택되지 않았다면 다음에 오는 과정대로 진행할 수 없습니다!

3. 그룹 리스트(매터니 창의 좌측 상단에 있는 널찍한 회색 막대)에 마우스 오른쪽 클릭을 해서 새 빈 그룹 추가(Add New Group) 을 선택합니다. 이름 입력 창에 SteamRoomDoor 을 입력합니다.
인터페이스의 좌측 상단에 새로운 그룹을 추가 시킵니다-

4. 다음, SteamRoomDoor 그룹에 마우스 오른쪽 클릭 후, 새 Movement Track 추가(Add New Movement Track) 을 선택합니다.

그룹에 새로운 움직임(movement) 트랙이 추가되었다.

5. 매터니 창에서 새로 만들어진 Movement track 을 선택하고, 매터니 트랙 구역의 아래쪽을 가로지르는 숫자가 적힌 검정 막대를 드래그해서 타임 슬라이더를 0.0으로 설정해줍니다.

Note: 처음에는 타임 슬라이더를 보지 못할 수도 있습니다. 이런 경우에는 눈금자 아무 곳이나 클릭해서 드래그해보면 왼쪽에 있는 초록색 문자가 타임 슬라이더의 이동에 따라서 변경되는 것을 알 수 있을 것입니다. 확인이 끝나면 타임 슬라이더를 0.000/5.000으로 재설정합니다.

일단 타임 슬라이더가 0.2으로 설정되었으면, Add Key 버튼 을 클릭해서 이 시간대에 키프레임(keyframe)을 배치시킵니다. 이제 문을 움직이게 하려면 두 번째 키프레임(keyframe)을 배치할 차례입니다.

6. 타임 슬라이더를 1.0으로 옮긴 후, Add Key 버튼 을 클릭해 주면, 두 번째 키프레임(keyframe)이 배치됩니다. 단, 이 두 번째 키프레임도 같은 위치에 문이 있는 걸로 기록되어 있기 때문에 아직은 문이 움직이지는 않습니다. 사실, 우리가 지금까지 작업한 내용은 플레이어가 트리거의 범위에 닿았을 때, 문이 0.2초간 제자리에 있도록 하는 것입니다.

위로 향한 빨간 삼각형 아이콘을 통해서 2개의 키프레임을 확인할 수 있다.

7. 새로 만들어진 키프레임을 Movement track의 시간 표시가 1.0으로 되어 있는 곳에 있는 오렌지색 삼각형을 클릭해서 선택해줍니다. 이 때, Perspective 뷰포트의 좌측 하단부의 구석에 빨간 숫자로 0 002 라는 표시가 있어야만 합니다.

Top 뷰포트에서 문을 위쪽으로 208 unit만큼(여러분이 설정한 Drag Grid 값이 여전히 16이라면, 이 값은 13 grid 간격만큼 될 것입니다) 이동시킵니다. 이제 두 번째 키프레임을 새로운 위치를 저장했기 때문에 시간의 흐름이 1초가 되는 동안 문이 열리게 될 것입니다.

Perspective 뷰포트에서 문이 개방 위치로 옮겨져 있을 것을 알 수 있다. 좌측 하단부의 구석에 Key 2를 수정하고(adjusting) 임을 나타내는 표시인 0 002가 있음에 주의할 것.

8. 이제 맵을 저장한 후 테스트해보시기 바랍니다. 여러분이 다가가거나 멀어질 때마다 문이 자동으로 열리고 닫히게 될 것입니다. 만약 여러분이 빠르게 움직인다면, 문이 다시 열릴 때까지 여러분이 지나갈 수 없게끔 가로막게 될 것입니다.

이 문은 이제 해당 레벨에서 제대로 동작을 하게 되었습니다. 이전 버전의 언리얼 엔진으로 작업을 해본 경험이 있는 사람들이면, 단순히 문을 열리게 하는 작업임에도 불구하고 이전보다 좀 더 많은 설정이 필요하게 되었음을 알 수 있을 것입니다. 하지만, 이 새로운 시스템에서는 이전 버전보다 훨씬 더 폭넓은 융통성을 발휘할 수 있게 되었으며, 일단 작업 순서만 정해지면 무버(mover)를 배치하는 것은 식은 죽 먹기입니다.

다음 튜토리얼에서, 실제 현실의 물리 현상에 대한 시뮬레이션을 기반으로 플레이어가 직접 쳐서 쓰러뜨리는 것처럼 상호 작용할 수 있는 동적인(dynamic) 오브젝트들을 추가해서 지금까지 작업한 레벨을 좀 더 발전시켜 보도록 하겠습니다. 이 작업은 2가지 단계로 나뉘어질 것입니다. 우선, 물리적인 영향을 받는 오브젝트들을 배치하고, 그 다음, 중력과 같은 현실 세계의 힘에 반응할 수 있도록 제어하는 물리적인(physical) 머터리얼을 적용시킬 것입니다.

튜토리얼 14 – 물리 값이 적용된 오브젝트(Physics Objects) 만들기
1. 지난 튜토리얼에 이어서, 마지막으로 저장한 PrimerMap_01 파일을 엽니다.

2. 콘텐츠 브라우저에서 UDKGame 패키지를 클릭한 후, Static Meshes를 체크합니다- 콘텐츠 브라우저의 Barrel_01 메쉬를 선택합니다.

3. Perspective 뷰포트를 보면서 육각형 바닥의 공간으로 이동 후, 바닥에 마우스 오른쪽 클릭을 해서 액터 추가(Add Actor) > Add RigidBody: StaticMesh Interactive_Meshes.SM.Barrel_01 를 선택해 줍니다. 이를 통해서 물리적인 힘의 영향을 받는 특수한 타입의 액터(actor)인 리지드 바디(rigid body)로 된 상자 모양의 메쉬를 추가하게 됩니다.

리지드 바디(rigid body)를 추가하기 위한 메뉴 화면.

4. [ALT]키를 누르고 있는 상태에서 Translation Widget을 사용해서 처음 만든 메쉬 바로 옆에 사본을 만듭니다. 아래 나오는 그림처럼 4개의 드럼통이 나란히 위치할 때까지 이 작업을 반복합니다.

드럼통 4개가 나란히 놓여있게 배치합니다-

5. 처음 세 개의 박스를 선택해서 똑 같은 방법으로 복사본을 만들어서 첫 번째 열의 위쪽에 배치해줍니다. 계속 반복해서 두 번째 열의 2개의 박스를 복사해서 위로 올리고 마지막에 한 개의 박스가 제일 위에 배치해서 아래에 오는 그림처럼 총 10개의 박스로 이루어진 피라미드가 만들어지도록 합니다.

드럼통들을 피라미드 형태로 쌓습니다- 쌓인 형태에 약간의 변화를 주기 위해서 몇몇 드럼통은 조금씩 돌아가 있는 것을 알 수 있습니다-

6. 일단 피라미드가 만들어졌으면 모든 드럼통을 한번에 선택해서 움직이거나 돌려서 출입구 앞에 배치해서 플레이어가 육각 기둥 형태의 공간으로 가고자 할 때 방해물이 되도록 만들어 줍니다.

7. 지금까지의 작업 내용을 저장합니다.

이제 물리 값이 적용된 오브젝트들의 배치가 끝났기 때문에 플레이어가 부딪히거나 옮길 때 작용하는 힘에 대해서 어떻게 반응할지에 대해서 제어를 해줄 필요가 있습니다. 다음 튜토리얼에서 리지드 바디(rigid body)의 이와 같은 요소들을 실제로 제어할 수 있는 물리적인 머터리얼(physical material)을 적용시켜 보도록 하겠습니다.

튜토리얼 15 – 피지컬 머터리얼(Physical Material) 만들어서 적용시키기
1. 지난 튜토리얼에 이어서, 마지막으로 저장한 PrimerMap_01 파일을 엽니다.

2. 콘텐츠 브라우저를 열어서 미리 보기(preview) 창의 빈 공간에 마우스 오른쪽 클릭을 한 후, 새로운 PhysicalMaterial 을 선택합니다. New 오브젝트 창이 열리면 다음과 같이 입력해 줍니다:

-Package: PrimerLevel
-Group: Physics
-Name: physMat_Barrel


올바른 설정이 입력된 New 오브젝트 창.

3. 이 작업은 피지컬 머터리얼을 새로 만들고 수정이 필요한 현재의 속성값을 나타내줍니다. 입력할 값은 다음과 같습니다:

-Density(밀도): 0.25
-Friction(마찰): 0.5


4. 콘텐츠 브라우저에서 physMat_Barrel 머터리얼이 선택되어 있는지 확인한 후, Perspective 뷰포트에서 10개 상자 모두를 선택해줍니다. [F4]키를 눌러서 속성 창을 연 후, 다음 값을 설정해 줍니다:

DynamicSMActor 탭의 하위 메뉴를 열고, StaticMeshComponent 선택.
Physics 항목으로 가서 PhysMaterialOverride 속성 옆에 있는 “None” 클릭. 오른쪽 제일 끝에 있는 Use 버튼 을 클릭해서 physMat_Barrel 머터리얼을 모든 상자에 적용시킵니다.

반드시 아까 만든 PhysicsMaterial이 선택된 상태에서만 가능하다-

5. 패키지를 저장한 후, 지금까지 작업한 맵을 저장하고 테스트해봅니다. 상자 앞에 가서 오른쪽 마우스 버튼을 누른 상태로 상자를 들 수 있을 것입니다. 만약 마우스 커서를 빠르게 움직이면서 마우스 버튼에서 손을 뗀다면 상자를 방 건너편으로 집어 던질 수도 있을 것입니다! 맘껏 즐겨 보십시오!

이제 여러분의 레벨에 가지고 놀 수 있는 몇몇 물리 값이 적용된 오브젝트를 추가했습니다. 지금까지 작업한 간단한 형태의 레벨이 완전히 끝나려면 단 한가지의 이펙트만 추가하면 됩니다. 마지막으로 우리가 작업한 레벨에 마치 안개가 낀 것 같은 느낌이 들 수 있도록 높이를 가진 안개 효과를 추가해보도록 하겠습니다.

문제점 – 처음에 드럼통을 배치할 때 크기가 작아서 임의로 Scale을 늘려서 배치한 후에 PhysicsMaterial을 적용시켰더니 UDK에서 가지고 있는 무기의 탄환을 다 쓰고 난 후 RigidBody를 직접 밀어내거나 당기거나 할 때, 원래 StaticMesh의 크기로 변하였고, 전부 다 변하고 난 뒤 에러가 나서 튕기는 현상이 발견되었습니다- 이 때문에 StaticMesh를 RigidBody로 쓸 때는 임의로 Scale을 변경하지 말것을 강력히 권장합니다-

튜토리얼 16 – 레벨에 높이를 가진 안개(Height Fog) 추가하기
1. 지난 튜토리얼에 이어서, 마지막으로 저장한 PrimerMap_01 파일을 엽니다.

2. 메인 메뉴 바에서 보기(View) > 브라우저 창(Browser Windows) > 액터 클래스(Actor Classes)를 선택하면 여러분의 레벨에서 사용 가능한 모든 종류의 액터(actor)들을 총망라한 액터 클래스(Actor Classes) 브라우저가 열립니다. (콘텐츠 브라우저의 상단 탭을 선택해서 열 수도 있습니다-)

액터 클래스 브라우저(Actor Classes browser)를 열자-

3. Actor Classes 브라우저에서 Info 항목을 클릭해서 하위 메뉴를 연 후, HeightFog 항목을 엽니다.

액터 클래스에서 HeightFog를 선택한 채 있어야 합니다-

4. 육면체 형태의 공간의 바닥에 마우스 오른쪽 클릭 후, 여러분이 클릭한 위치에 height fog를 배치할 수 있도록 Add HeightFog 를 선택해줍니다.

액터클래스에서 HeightFog를 선택한 채 마우스 오른 클릭을 하면 HeightFog를 추가 할 수 있습니다-

5. HeightFog의 액터 아이콘에 더블 클릭해서 속성 창을 불러온 후, 다음과 같이 설정해 줍니다:

HeightFog 탭의 하위 메뉴를 열어서 Component 카테고리를 선택해줍니다.
Density(밀도) 속성을 0.0015로 설정합니다.

HeightFog 의 속성 창.

6. Translation Widget을 이용해서 HeightFog 액터를 이동시켜서 안개가 시작될 지점의 높이에 배치시킵니다. 이 액터를 천장까지 이동시키면 방 전체에 안개가 끼게 될 것입니다. 아니면, 바닥에 가까운 위치에 배치할 수도 있습니다. 마찬가지로 밀도(density)도 여러분의 취항에 따라 조절해 보시기 바랍니다.

HeightFog 아이콘이 실제 안개의 바로 위에 위치함에 주의할 것. 아이콘을 움직여서 안개의 높이를 조절할 수 있습니다.

7. 지금까지의 작업 내용을 저장한 후 테스트해보십시오.

드디어 기본 레벨이 완성되었습니다. 하지만 여기서 멈출 이유는 없겠죠? 마지막 몇몇 튜토리얼을 통해서 여러분은 실험해볼 가치가 있는 수 많은 내용들을 봐왔습니다. 이를 토대로 여러분은 이미 멋들어진 레벨을 만들 수 있을 것입니다!

여기까지 튜토리얼을 따라했다면 언리얼 툴에서 사용하는 대략적인 내용을 모두 다뤄본 것입니다- 다음의 브러쉬 과제는 레벨디자이너가 자신이 원하는 실내환경을 꾸미는데 도움이 되는 챕터입니다- 대부분의 작업자는 여기에서 튜토리얼을 멈추고 원래 업무에 임하셔도 됩니다-

다음 챕터는 레벨 디자이너와 레벨 아트 디자이너에게 필요한 내용이 됩니다-

댓글 2개:

  1. word로 올린거 긁어왔더니 그림이 안 올라가네- 다른 문서 포함해서 나중에 한꺼번에 정리하겠습니다-

    답글삭제
  2. 안녕하세요 엔진에 관심있는 컨셉터 입니다. 글 도움 됐습니다.

    답글삭제