본문 바로가기

Unreal Engine

[언리얼 엔진] 월드와 액터

월드

 

월드란?

언리얼 엔진 뷰포트 윈도우에 보이는 작업 공간을 통해 투영되고 있는, 컴퓨터 안의 가상 세계이다.

월드는 게임 컨텐츠를 구동하기 위해 필요한 필수적인 환경이며, 공간, 시간, 물리, 렌더링을 제공한다.

 

공간이란?

공간은 가상 세계를 구성하는 3차원의 영역이다.

게임 컨텐츠를 구성하는 요소들은 월드내에 반드시 존재해야 하는데, 이를 위한 Transform이라는 구조체를 제공하며, 기본 단위는 cm이다.

 

언리얼에게 시간이란?

가상 공간 안에 흐르는 시간을 말한다.

가상 세계에서 시간은 현실 세계와 동일하게 흘러가지만, 멈출수도, 다시 재개할 수도, 빠르게, 느리게 설정할 수도 있다.

 

물리?

월드 공간에서 배치된 물체에 작용되는 물리적인 환경이다. 중력, 충돌 등과 같은 물리적 현상을 계산해서 이를 반영해주는 역할을 담당하며, 만약 공간에 배치된 물체가 월드로부터 물리적인 영향을 받기 위해서는 콜리전 정보가 필요하다.

 

렌더링?

엔진이 제공하는 시각적인 기능을 말한다. 빛과 이에 반응하는 머터리얼(재질)로 구성되어 있으며, 엔진은 현실 세계와 유사하게 동작하도록 물리 기반 렌더링 시스템을 제공한다.

 


컨텐츠

컨텐츠를 구성하는 요소

 

액터

액터는 언리얼 엔진에서 컨텐츠를 구성하는 최소 단위의 물체이다.

이름처럼 게임 월드 특정 공간에서 자신에게 주어진 역할을 수행하는 물체를 의미한다. 월드 상에 존재하는 액터들의 목록들은 월드 아웃라이너 윈도우를 통해서 확인할 수 있으며, 뷰포트에서 선택한 액터들의 속성은 디테일 윈도우에서 확인할 수 있다.

액터의 요소는 다음과 같다.

  • 이름 : 작업을 위해서 액터에 부여된 명칭이다. 중복 이름을 가질 수 있다.
  • 유형 : 게임 플레이에서 수행할 액터의 역할을 의미한다. 프로그래밍 관점에서는 액터의 클래스 이름이다.
  • 트랜스폼 : 액터는 반드시 월드 어딘가에서 존재해야 하며, 액터에는 항상 트랜스폼이 부여된다.
  • 프로퍼티 : 액터에 설정된 속성 값이다. 액터의 유형에 따라서 서로 다른 속성을 제공하며 속성 값을 디테일 윈도우에서 편집해 같은 유형을 가진 서로 다른 일을 할 수 있게 해준다.
  • 게임 로직 : 액터에 특정 상황이 발생할 때 이에 대응할 구체적인 행동을 명령하기 위해서는 프로그래밍 코드가 필요한데, 이 때 블루프린트와 C++를 통해서 이를 구현한다.

 

레벨

레벨은 게임 개발 관점에서 본다면 플레이어에게 주어지는 스테이지를 의미한다. 잘 설계된 게임은 난이도에 따라 스테이지를 말한다. 즉 레벨을 개발한다는 것은 기획된 난이도에 따라 이러한 스테이지를 개발하는 것을 말한다.

 

언리얼에서는 월드에 배치된 액터들의 집합을 말하기도 한다. 즉 기획된 대로 이러한 액터들을 배치하고 다양한 프로퍼티와 로직을 붙여서 언리얼의 플레이기능을 이용해서 테스트까지 하는 과정을 레벨을 개발한다고 보면 된다.


컴포넌트

액터의 중요 기능

 

지금까지 액터의 요소를 말했다면 이번에는 3가지의 중요 기능을 알아보자.

  • 시각적 기능 : 플레이어를 어떻게 보일 것인가
  • 물리적 기능 : 액터의 이동과 액터 간의 상호 동작은 어떻게 할 것인가.
  • 움직임 : 액터가 어떤 움직임을 가질 것인가?

개발자는 액터의 역할에 따라서 각 기능의 사용 여부가 정해질 것이다. 예를 들어 플레이어가 특정 공간으로 가지 못하도록 막는 투명한 벽의 경우는 시각적인 기능이 필요가 없을 것이며, 플레이어가 땅에서 떨어지지 못하게 막아주는 바닥은 움직임 기능이 전혀 필요없을 것이다.

 

우리는 이러한 액터를 설계할 때 유연하게 대처하기 위해서 언리얼에서 제공하는 규격화된 기능이 있는데 이를 주요 컴포넌트라고 한다.

  • 스태틱메시 컴포넌트 : 애니메이션이 없는 모델링 에셋의 기능을 구현할 때 사용한다. 시각적인 기능과 물리적인 기능을 제공하며, 주로 배경에서 사용한다.
  • 스켈레탈 메시 컴포넌트 : 애니메이션 정보가 있는 모델링 에셋의 기능을 구현할 때 사용된다. 시각적인 기능과 애니메이션, 그리고 캐릭터의 물리 기능을 제공한다. 주로 캐릭터에 사용한다.
  • 콜리전 컴포넌트 : 구/박스/캡슐로 지정한 영역에 물리적인 기능을 설정하기 위해서 제공하는 모듈이다. 시각적인 기능은 없다. (디버깅용으로 영역을 보여주는 기능까지는 존재한다.)
  • 카메라 컴포넌트 : 가상 세계에서 보여지는 현재 상황을 모니터에 출력하기 위해 제공하는 기능이다.
  • 오디오 컴포넌트 : 가상 세계에서 소리를 발생시키는데 사용하는 기능이다.
  • 파티클 시스템 컴포넌트 : 파티클 시스템으로 설계된 이펙트를 화면에 보여주기 위한 기능이다.
  • 라이트 컴포넌트 : 전구, 헤드라이트 등과 같이 물체에 광원 효과를 부여하는 기능이다.
  • 무브먼트 컴포넌트 : 물체에 특정한 움직임을 부여하는 컴포넌트다.

액터에 속한 컴포넌트는 그 종류마다 독특한 특성이 있으며 이는 디테일 윈도에서 확인할 수 있다.