오르카의 아틀리에


언리얼 엔진을 사용해보기 시작하면서 가장 불편했던 점은 첫째로 자료가 거의 대부분 블루프린트 샘플들 위주이고 구성 요소들이 유니티와 뭔가 비슷하면서도 다른 느낌을 받았기 때문이다. 나와 같은 사람들을 위해 언리얼을 공부하기로 마음먹었지만 처음에 햇갈려서 개념이 잡히지 않았던 요소들을 하나하나 포스팅해가며 공유해볼까한다.


유니티 vs 언리얼

놀랍게도 언리얼 공식문서에서 "유니티 개발자를 위한 언리얼 엔진4"라는 탭을 만들어 유니티 개발자들이 유니티에서 사용하던 개념들을 언리얼에 있는 개념과 매핑할 수 있도록 친절하게 만든 문서가 있다. 일단 여기에서 설명된 표를 따르면 다음과 같다.


카테고리

유니티

언리얼 4

비고

게임 플레이 유형

Component

Component

Game Object

Actor / Pawn

1 : 2

Prefab

Blueprint class

메시

Mesh

Static Mesh

Skinned Mesh

Skeletal Mesh

머티리얼

Shader

Material / Material Editor

1 : 2

Material

Material Instance

이펙트

Particle Effect

Effect / Paticle / Cascade

1 : 3

Shuriken

Cascade

게임 UI

UI(uGUI)

UMG

프로그래밍

C#

C++

피직스

Raycast

Line Trace / Shape Trace

1 : 2

Rigid Body

Collision /Physics

1 : 2


표를 보면 알겠지만, 상당히 많은 부분이 닮아있지만 용어가 조금씩 다르고 유니티 측에서는 1개인것이 언리얼에서는 2개 3개인 것이 있다. 오늘은 그중에서 GameObject 쪽을 한번 살펴보도록하자.


유니티를 사용해보았으면 알겠지만, 마음만 먹으면 GameObject들로만 이리저리 굴려서 게임을 만들 수 있다. GameObject에 C# Script를 이용한 컴포넌트들과 Unity 제공 컴포넌트들을 붙여서 로직을 만든다. 그런데 언리얼에서는 GameObject의 역할을 하는 것이 2개로 표현되어있다. 이 둘은 뭐가 다를까?


Actor

액터는 언리얼 엔진의 레벨에 배치할 수 있는 오브젝트를 의미

그야말로 GameObject인 느낌이다. GameObject처럼 레벨에 배치할 수 있는 모든 오브젝트를 의미하며 여기에 컴포넌트들을 붙여서 액터가 어떻게 행동할지 결정해준다는 느낌이다.


그런데 액터가 GameObject와 비슷하다면 Pawn은 뭘까?


Pawn

폰은 플레이어나 AI가 제어할 수 있는 모든 액터의 베이스

게임을 하게되면 내가 조작할 수 있는 오브젝트들이 있다. 대표적으로 내가 키보드를 통해 움직임을 명령하는 캐릭터같은 플레이어(혹은 AI)가 명령을 내리고 그것에 따라서 움직이는 액터들을 Pawn이라고 하는 것! 따라서 Actor보다 더 구체적으로 정의된 오브젝트 클래스라는 것이다. 그럼 소스에서 한번 APawn의 정의를 타고 들어가보자.



위와 같이 Pawn을 생성하면 자동으로 상속받아지는 APawn이라는 클래스를 타고 들어가보면, AActor클래스를 상속받는 다는 것을 알 수 있다. AActor는 모든 액터 클래스의 베이스 클래스 이므로 Pawn은 '조금 더 구체적인 액터'인 것이다.


이 외에도 Character라는 친구가 있는데 이 친구는 APawn에서 좀 더 복잡한 애니메이션을 위해 파생된 클래스라고한다. 예를들어 점프하고 수영하고, 하늘을 날아다니는 에니메이션들과 그 에니메이션들을 블렌딩하는 작업 등등 복잡한 에니매이션을 처리할 수 있도록 고안되었다고한다.


한장요약


`Actor > Pawn > Chracter`인 모습을 잘 나타낸다.