본문 바로가기

개발/내일배움캠프

내배캠 퀘스트 01/26 - Unreal이란 무엇인가요?

학습 목표

  1. Unreal Engine의 기본 개념과 역할에 대해 이해합니다. 
  2. 게임씬(Game Scene)의 개념과 게임개발에서의 중요한 부분에 대해 알아봅니다.
  3. Unreal Engine이 게임 산업에서 사용되는 사례를 찾아보고 탐구합니다. 

1. Unreal Engine을 조사하기.

Unreal Engine이 무엇인지 간단히 설명하고, 게임 엔진으로서의 역할을 조사하기.

게임엔진이란 무엇인가?

현대 게임 개발에 필요한 대부분의 개발 기능을 제공하는 소프트웨어.
해당 기능에는 2D&3D 그래픽 랜더링 및 애니메이션, 물리 엔진, 코드 및 스크립트 관리, 사운드 및 오디오, 네트워크 등등...
수많은것들이 포함된다.
'내용이 방대하여 나무위키의 문단을 빌려오면 게임 엔진이 제공가는 기능은 다음과 같다.
2D 그래픽 렌더링 엔진, 2D 애니메이션, 3D 그래픽 렌더링, 3D 캐릭터 애니메이션, 물리 엔진, 스크립트 시스템, 메모리 관리 및 스레드 처리, 사운드 엔진, 오디오 인터페이스 시스템, 게임 인공지능 시스템, 네트워크 처리, UI 시스템, 프레임워크와 라이브러리, 에셋, 소스 코드 설계 및 코딩 등'

 


Unreal Engine의 주요 기능은?


언리얼 엔진의 주요 기능으로 가장 자주 언급되는것을 뽑으면 그래픽 랜더링라이팅(lighting, 빛표현)이 가장 먼저 언급된다.

Arc Raiders 이미지 출처 https://m.inven.co.kr/webzine/wznews.php?iskin=mhf&idx=308317

실시간으로 수억개의 폴리곤을 최적화하여 제한없이 보여주는 나나이트(nanite)
현실적인 빛의 표현을 보여주는 루멘(Lumen)이라는 기능을 통해 제공되게되는데
관련 내용이 방대하여 그렇다는것만 알고 넘어간다.
참고 영상 - 언리얼엔진KR 나나이트와 루멘에 대한 모든 것 https://www.youtube.com/watch?v=laCeIFasZsg

청사진(blueprint)기능을 통한 코드 모듈화, 재사용 등의 개발용이성과 코드 공유 등에서 강점을 보인다고 한다.


참고) 언리얼 공식 기능  - https://www.unrealengine.com/ko/features

 

Unreal Engine의 장점과 단점

언리얼 엔진의 가장 큰 장점중 하나는 앞서 언급된 랜더링과 라이팅으로 영화수준의 그래픽을 기본기능으로 보여줄 수 있는 점
로우레벨 언어인 C++를 기반으로 한 고성능의 아키텍처와 블루프린트를 통한 개발로 최적화와 생산성, 협업효율을 잡음.

한편으로는 이 기능들이 그대로 단점으로 부각되는 경우도 있는데,
영화같은 그래픽을 표현가능한만큼 사용자에게 고성능 하드웨어를 요구하여
개인 또는 소규모 개발자에게도, 비용 부담이 부각되고,

학습 난이도가 높은편인 C++언어와 복잡한 아키텍처로 인해 진입장벽이 높고 가파름.

이로 인해 AAA급 대규모 프로젝트에 주로 언리얼 엔진을 채용하고 그렇지 않은 경우 다른 엔진을 사용하는경우도 많음.

Unreal Engine으로 제작된 대표적인 게임 2~3개를 조사하고 해당게임에서 Unreal의 역할 분석

PUBG: BATTLEGROUNDS : 언리얼 엔진 마켓플레이스를 통한 에셋 제공 및 구매
초기에 해당 게임에서 있었던 논란 중 하나로, 언리얼에서 제공하는 에셋을 대량 사용하여 비판의 논란이 된적이 있다.
반대로 생각하면, 개발에 필요한 모델링등의 그래픽 요소 제작에 겪는 문제를 에셋 스토어를 통해 구매 및 제공받아 해결할 수 있을것이다.

 

Fortnite : 카오스 시스템을 통한 건축물 등의 실시간으로 표현되는 물리적 파괴효과 구현

체력을 잃은 건축물은 그자리에서 사라지는것이 아닌 즉시 파편화되어 사방으로 튀고 부서지는 효과를 보여주는데,
이는 언리얼 엔진에서 제공하는 카오스 효과에 기반하는것이다.

 

Rocket league : 오브젝트 간의 충돌(콜리전) 효과

게임 로켓리그는 차량을 통해 공과 충돌하여 축구처럼 골대에 공을 넣는것을 목표로 하는 특이한 게임으로, 사실적인 충돌 효과를 통해 특유의 게임성과 재미를 만들어냈다.

 

 

2. 게임씬(Game Scene)의 개념 탐구

게임씬이 무엇을 의미하는지 정의하고, 게임씬이 게임의 구성요소에서 어떤 역활을 하는지

 

게임씬(Game Scene)이란 공식적으로는 레벨(Level)이라고 부름(씬은 주로 유니티 엔진에서 사용하는 명칭으로 보임)
공식 설명을 빌려오면 "환경, 사용 가능한 오브젝트, 다른 캐릭터 등 플레이어가 보고 상호작용할 수 있는 모든 것이 레벨에 포함됩니다." 라고 한다.
즉 하나의 월드와 이에 포함된 모든 물체들의 집합 ≈ 레벨 이라고 이해하면 될것이다.

Unreal Engine에서 사용하는 주요 게임씬 구성요소(월드, 엑터, 라이트, 카메라 등)을 조사하고, 각 요소의 역활을 설명

월드 ≈ 레벨 = .umap파일 : 레벨 그 자체이며, 기타 구성요소를 담는 최상위 구성요소
엑터(Actor) : 레벨 내 배치되는 모든 독립적 오브젝트들. 여기에는 조명, 카메라, 캐릭터 등 상호작용 가능한 요소들이 있음.
컴포넌트(Component) : 엑터를 구성하는 세부 요소들.
라이트 : 레벨 내에서 빛을 표현하는 요소. 반드시 최소 하나의 라이트 요소가 존재해야 함.
카메라 : 플레이어가 화면을 보기위한 요소로, 시점을 나타냄

언리얼 공식에서 레벨 하나를 생성하는데 필요한 최소한의 구성요소를 다음과 같이 설명한다.

언리얼 공식 개발자 문서의 레벨 문서에서 발췌 https://dev.epicgames.com/documentation/ko-kr/unreal-engine/levels-in-unreal-engine