본문 바로가기

언리얼 엔진 개요

언리얼 엔진의 실시간 3D 제작 기능과 활용 분야를 살펴보고 이후 에디터 학습에 필요한 큰 그림과 선택 기준을 세웁니다.

언리얼 엔진을 처음 열면 버튼과 패널이 너무 많아서 어디서부터 손대야 할지 막막해집니다. 많은 입문자가 일단 따라 만들어 보자며 시작하지만, 엔진이 어떤 문제를 푸는 도구인지 모르면 금방 길을 잃습니다. 게임뿐 아니라 영화, 시뮬레이션, 건축 시각화에도 같은 엔진을 쓴다는 사실이 오히려 혼란을 더하기도 합니다.

그래서 이 글에서는 기능 목록을 나열하는 대신, 언리얼 엔진이 왜 이렇게 넓은 분야에서 쓰이는지부터 짚습니다. 큰 그림을 먼저 잡아 두면 다음 글부터 에디터 조작이나 프로젝트 설정을 배울 때, 그 설정이 무엇을 위한 것인지가 분명해집니다.


언리얼 엔진은 어떤 도구인가

언리얼 엔진(Unreal Engine)은 에픽게임즈(Epic Games)가 만든 게임 개발 엔진이자 실시간 3D 제작 도구입니다. 여기서 실시간(real-time)이란 장면을 미리 렌더링해 두는 것이 아니라, 카메라가 움직이거나 사용자가 조작할 때마다 화면을 곧바로 다시 그린다는 뜻입니다. 이 성질 덕분에 게임을 넘어 영화, 건축 시각화, 자동차 디자인, 시뮬레이션, 가상현실(VR), 증강현실(AR)까지 고품질 3D 콘텐츠를 만드는 데 폭넓게 쓰입니다. 한때는 AAA급 대작 스튜디오의 도구처럼 보였지만, 지금은 인디 개발자부터 대기업까지 여러 규모의 팀이 씁니다.

언리얼 엔진의 장점은 그래픽 품질에만 있지 않습니다. 블루프린트(Blueprint)에서 노드를 연결해 로직을 만들고, 필요해지면 같은 프로젝트를 C++로 확장할 수 있습니다. 그래서 아이디어를 시험하는 단계부터 상용 프로젝트까지 도구를 바꾸지 않고 하나의 흐름으로 이어 갈 수 있습니다.


언리얼 엔진이 널리 쓰이는 이유

실시간 렌더링 품질

언리얼 엔진은 현실에 가까운 그래픽을 실시간으로 그립니다. 물리 기반 렌더링(Physically Based Rendering, PBR)은 표면의 색과 거칠기, 금속성 같은 값을 실제 빛의 성질에 맞춰 계산하는 방식이고, 글로벌 일루미네이션(Global Illumination)은 빛이 벽이나 바닥에 튕겨 주변을 밝히는 간접광까지 계산하는 기술입니다. 레이 트레이싱(Ray Tracing)도 지원합니다. 다만 어떤 기능을 쓸 수 있고 얼마나 빠르게 그리는지는 대상 플랫폼과 하드웨어, 프로젝트 설정에 따라 달라지므로, 같은 장면이 PC와 모바일에서 같은 품질로 나오리라고 기대하면 안 됩니다.

블루프린트와 C++

블루프린트는 노드를 선으로 이어 로직을 만드는 비주얼 스크립팅(visual scripting) 시스템입니다. 게임의 규칙, 캐릭터의 움직임, 상호작용 같은 기능을 코드를 직접 쓰지 않고 그래프로 만들 수 있습니다. 엔진의 핵심 기능을 깊이 제어하거나 성능이 중요한 시스템을 만들 때는 C++ 개발 환경을 씁니다. 둘은 하나만 골라야 하는 선택지가 아니어서, C++로 만든 기능을 블루프린트에서 불러 쓰는 식으로 함께 쓰는 경우가 많습니다. 블루프린트가 맡는 일은 블루프린트의 개념과 역할에서, C++로 만든 클래스를 블루프린트로 넓혀 쓰는 방법은 C++로 Blueprint 클래스 확장에서 자세히 다룹니다.

여러 플랫폼 지원

PC, 콘솔, 모바일, VR/AR 기기를 대상으로 개발할 수 있습니다. 하지만 엔진이 지원한다는 사실만으로 바로 빌드가 되지는 않습니다. 플랫폼마다 SDK와 개발 권한, 지원하는 엔진 버전, 성능 조건을 맞춰야 하며, 이 내용은 크로스 플랫폼 배포 고려사항에서 다시 다룹니다.

자료와 커뮤니티

에픽게임즈가 제공하는 공식 문서와 튜토리얼, 예제 프로젝트가 많고, 전 세계의 사용자 커뮤니티도 활발합니다. 문제를 만났을 때 같은 문제를 먼저 겪은 사람의 글을 찾기 쉽다는 점은 입문자에게 큰 도움이 됩니다.

소스 코드 접근과 라이선스

Epic의 라이선스 조건에 따라 엔진 소스 코드를 받아 보고 수정할 수 있습니다. 비용은 용도와 수익 조건에 따라 달라서, 로열티가 붙는 경우도 있고 좌석 구독료가 적용되는 경우도 있습니다. 조건은 바뀔 수 있으므로 결과물을 배포하거나 상업적으로 쓰기 전에는 공식 라이선스를 확인합니다.


어디에 쓰일까

언리얼 엔진이 쓰이는 분야는 앞에서 말한 것보다 넓습니다. 대표적인 분야를 표로 모으면 다음과 같습니다.

분야언리얼 엔진으로 하는 일
게임 개발가장 대표적인 분야입니다. 포트나이트, 배틀그라운드, 기어스 오브 워 같은 게임이 언리얼 엔진으로 만들어졌습니다.
영화와 애니메이션촬영 전에 장면을 미리 만들어 연출을 시험하는 프리비즈(previsualization)와, 실시간으로 그린 배경 앞에서 촬영하는 가상 프로덕션(virtual production)에 씁니다. 더 만달로리안이 가상 프로덕션의 대표적인 예입니다.
건축 시각화설계한 건물을 3D로 만들고, 실시간으로 걸어 다니며 내부와 외부를 둘러보게 해 고객이 완공 전의 공간을 경험하게 합니다.
자동차와 제품 디자인3D 모델을 가져오거나 편집한 뒤, 여러 재질과 조명 환경에서 실시간으로 보며 디자인을 검토하고 수정합니다.
시뮬레이션과 훈련비행 시뮬레이터, 의료 시뮬레이션, 로봇 제어처럼 실제와 같은 환경이 필요한 훈련과 연구에 씁니다.
VR과 AR몰입형 VR 콘텐츠나, 현실 세계 위에 디지털 정보를 겹쳐 보여 주는 AR 콘텐츠를 만듭니다. 대상 기기의 성능과 입력 장치에 맞춘 개발이 필요합니다.

분야는 달라도 하는 일의 뼈대는 같습니다. 3D 자료를 장면에 배치하고, 빛과 재질로 보이는 모습을 정하고, 필요한 경우 사용자의 조작에 반응하는 규칙을 더합니다. 그래서 이 교재에서 익히는 에디터 조작과 에셋 관리, 레벨 구성은 어느 분야로 가든 그대로 쓸 수 있습니다.


장면을 이루는 데이터 나눠 보기

작은 전시 공간을 만든다고 해 봅시다. 의자의 형상은 메시(mesh), 표면의 색과 거칠기는 재질(material), 방 안의 배치와 조명은 레벨(level)에서 다룹니다. 관람객이 문을 열 수 있게 하는 규칙은 블루프린트나 C++로 만듭니다. 이렇게 나눠 보면, 화면이 그럴듯하게 보인다는 사실과 문이 올바른 입력에 반응한다는 사실을 따로 확인해야 한다는 점도 드러납니다. 메시와 재질, 조명이 맞아도 문을 여는 로직과 입력 연결은 전혀 다른 곳에 있기 때문입니다.

이 구분에서 하나 더 눈여겨볼 것은, 장면에 놓인 배치 하나와 여러 배치가 함께 쓰는 원본 자료가 서로 다른 데이터라는 점입니다. 지금은 이름을 모두 외우기보다 이 차이를 설명할 수 있으면 충분하고, 에디터 인터페이스 탐색에서 실제 패널로 둘을 구분해 봅니다.


설치 전에 정해 둘 것

다음 글에서 엔진을 설치하기 전에 몇 가지를 정해 두면 설치 뒤의 혼란이 줄어듭니다. 먼저 버전입니다. 따라 할 학습 문서와 필요한 플러그인이 함께 지원하는 안정 버전 하나로 시작합니다. 그 버전이 요구하는 운영체제와 GPU, 필수 런타임을 확인하고, 그래픽 드라이버도 안정 버전으로 맞춥니다.

다음은 디스크 공간과 경로입니다. 설치 화면에 나오는 용량은 엔진 자체의 크기일 뿐이고, 실제로는 샘플과 프로젝트, 셰이더나 텍스처를 변환한 결과를 저장해 두는 파생 데이터 캐시(Derived Data Cache), 빌드 결과물이 공간을 더 차지합니다. 그러니 설치 화면의 용량에 이 공간을 더해 여유를 잡습니다. 또 런처와 엔진을 설치하는 위치와 학습 프로젝트를 저장하는 위치를 구분하고, 프로젝트는 찾기 쉬운 짧은 경로에 둡니다.

마지막으로 만들 결과물을 먼저 정합니다. 게임이라면 입력과 충돌, UI에, 영상이라면 조명과 재질, 카메라에, 시뮬레이션이라면 상태와 물리, 기록에 초점을 맞추게 됩니다. 어느 쪽이든 처음에는 에셋을 레벨에 배치하고, 작은 동작을 만든 뒤, 플레이 모드로 확인하는 과정부터 익힙니다.


정리

  • 언리얼 엔진은 에픽게임즈가 만든 게임 개발 엔진이자 실시간 3D 제작 도구로, 게임 외에도 영화, 건축 시각화, 제품 디자인, 시뮬레이션, VR/AR에 쓰입니다.
  • PBR, 글로벌 일루미네이션, 레이 트레이싱 같은 렌더링 기능을 지원하지만, 실제 품질과 속도는 플랫폼과 하드웨어, 프로젝트 설정에 따라 다릅니다.
  • 블루프린트로 로직을 그래프로 만들고, 필요하면 C++로 확장해 둘을 함께 씁니다.
  • 엔진 소스 코드를 볼 수 있으며, 배포와 상업적 이용 조건은 공식 라이선스로 확인합니다.
  • 장면은 메시, 재질, 레벨의 배치와 조명, 로직으로 나눠 볼 수 있고, 배치 하나와 여러 배치가 공유하는 원본 자료는 다른 데이터입니다.
  • 설치 전에 버전과 시스템 요구사항, 디스크 공간과 저장 경로, 만들 결과물을 정해 둡니다.

연습 문제

1. 의자 하나와 모든 의자

전시 공간에 같은 의자 다섯 개를 배치했습니다. 의자 하나의 위치를 옮기는 일과, 모든 의자가 공유하는 표면 재질을 바꾸는 일은 각각 어느 데이터를 고치는 걸까요?

해설 보기

위치는 레벨에 놓인 그 배치 하나가 가진 값이므로, 옮기면 그 의자 하나만 움직입니다. 표면 재질은 다섯 배치가 함께 가리키는 원본 자료이므로, 원본을 고치면 그 재질을 쓰는 의자 다섯 개의 표면이 모두 바뀝니다.

즉 앞의 일은 장면에 놓인 배치 하나를, 뒤의 일은 여러 배치가 공유하는 원본을 고치는 일입니다. 다음 글들에서는 이 원본 자료를 에셋(asset)이라고 부르고, 레벨에 놓인 배치를 액터(actor)라고 부릅니다.

2. 화면은 맞는데 문이 열리지 않을 때

전시 공간의 조명과 재질이 의도대로 보여서 완성되었다고 생각했는데, 관람객이 문 앞에서 버튼을 눌러도 문이 열리지 않습니다. 화면이 맞다는 사실로 알 수 있는 것과 따로 확인해야 하는 것을 나눠 보세요.

해설 보기

화면이 맞다는 것은 메시와 재질, 조명, 레벨 배치가 의도대로 되어 있다는 뜻입니다. 문을 여는 규칙은 블루프린트나 C++로 만든 로직과 입력 연결이 맡으므로, 화면만으로는 그 부분이 맞는지 알 수 없습니다.

그래서 플레이 모드에서 버튼 입력이 실제로 로직까지 전달되는지, 로직이 문을 움직이는지를 따로 확인해야 합니다.

3. 결과물에 따라 초점 정하기

건축 회사에 줄 실내 투어 영상을 만들기로 했습니다. 먼저 어떤 요소에 초점을 맞춰야 할까요? 같은 장면을 사용자가 직접 걸어 다니는 인터랙티브 투어로 바꾸면 무엇을 더 준비해야 할까요?

해설 보기

영상은 정해진 카메라 경로로 보여 주는 결과물이므로 조명과 재질, 카메라에 먼저 초점을 맞춥니다.

사용자가 직접 걸어 다니게 하려면 이동 입력과 벽이나 가구를 통과하지 않게 하는 충돌, 필요하다면 안내용 UI가 더해집니다. 같은 장면이라도 결과물이 바뀌면 확인할 항목이 달라집니다.

언리얼 엔진의 기능 전체는 언리얼 엔진 공식 문서에서 찾아볼 수 있습니다.

다음 글 최신 버전 다운로드 및 설치에서는 에픽게임즈 계정과 런처를 준비하고, 언리얼 엔진을 설치한 뒤 설치가 제대로 되었는지 확인합니다.