에인션트의 협곡 샘플

언리얼 엔진 5 얼리 액세스 쇼케이스 프로젝트인 에인션트의 협곡을 자세하게 살펴봅니다.

Windows
MacOS
Linux

에인션트의 협곡언리얼 엔진 5 의 얼리 액세스 기능을 선보이는 짧은 분량의 게임플레이 데모입니다. 플레이어는 언리얼 엔진 5 발표 트레일러에서 등장했던 캐릭터인 에코를 조종하여 불모지를 탐험하면서 불가사의한 어둠의 영역으로 통하는 포털을 찾게 됩니다. 여기서 에코는 다양한 장애물과 마주치고 거대한 고대 괴물체와 전투를 치르게 됩니다. 이 샘플에서는 언리얼 엔진 5에서 선보일 수많은 편의 기능과 렌더링 향상 기능, 그리고 워크플로의 혁신을 엿볼 수 있습니다.

이 문서에서는 이와 같은 흥미롭고 새로운 기능들을 차례대로 살펴보고, 에픽게임즈에서 이러한 기능을 활용하여 리얼타임 렌더링 기술의 가능성을 발전시킨 동시에 고퀄리티의 넓은 씬을 제작하는 워크플로를 대폭 간소화할 수 있었던 방법에 대해서도 알아봅니다.

개요

에인션트의 협곡에서 눈여겨봐야 하는 사항은 다음과 같습니다:

  • 나나이트 및 루멘으로 렌더링된 하이엔드 비주얼

  • 메가스캔 에셋 라이브러리와 새로운 지오메트리 툴로 제작된 거대한 월드

  • 개선된 카오스 프랙처 워크플로로 제작된 디스트럭터블 에셋

  • 레벨 파일 및 액터 정리 방법이 크게 효율화되어 하나의 맵에서 여러 팀 구성원이 보다 쉽게 협업 가능

  • 풀 바디 IK 및 모션 워핑을 통해 리얼타임 애니메이션의 유연성을 개선하여 캐릭터 모션과 게임플레이의 일치감 향상

  • 런타임에도 로드 및 언로드가 가능한 모듈형 게임플레이 시스템

  • 새로운 메타사운드 시스템을 사용하여 제작된 프로시저럴 사운드 이펙트

  • 쿼츠를 사용하는 동적 음악 시스템을 통해 게임플레이와 음악 동기화

에인션트의 협곡 샘플 액세스

언리얼 엔진 5 얼리 액세스 빌드와 에인션트의 협곡 샘플은 모두 에픽게임즈 런처UE5 탭에서 다운로드할 수 있습니다.

클릭해서 이미지 확대.

스크롤을 내려서 UE5의 새로운 기능을 보여주는 샘플 프로젝트 라고 표시된 항목을 찾아 샘플 받기 를 클릭하여 다운로드합니다.

에픽게임즈 런처에 표시된 에인션트의 협곡 샘플

권장 시스템 사양

이 샘플은 상당히 높은 수준의 그래픽을 갖추고 있어 안정적인 프레임으로 실행하려면 고사양의 비디오 카드가 필요합니다. 또한 나나이트와 버추얼 텍스처가 최적의 결과를 내려면 읽기 속도가 중요하므로 빠른 속도의 SSD에 설치하는 것을 권장합니다. 권장 시스템 사양은 아래와 같습니다:

권장 시스템 사양 (100% 스크린 퍼센티지)

최소 시스템 사양 (50% 스크린 퍼센티지)

  • 3.4 GHz 12-core CPU

  • 64 GB 시스템 RAM

  • GeForce RTX 2080 / AMD Radeon 5700 XT 또는 그 이상

  • 3.4 GHz 12-core CPU

  • 32 GB 시스템 RAM

  • GeForce GTX 1080 / AMD RX Vega 64

나나이트는 Nvidia Maxwell 세대 GPU와 AMD GCN 세대 GPU 또는 그 이상만 지원합니다. 또한 최신 그래픽 카드 드라이버를 설치해주셔야 합니다.

낮은 사양의 PC에서는 뷰포트 스크린 퍼센티지를 조절해서 성능을 향상 시킬 수 있습니다. 최소 사양에서는 50% 또는 더 낮게 설정하기를 추천드립니다. 에디터 뷰포트 왼쪽 상단 코너에 있는 뷰포트 옵션 메뉴스크린 퍼센티지 슬라이드를 조정하시면 됩니다.

뷰포트 옵션 메뉴에 스크린 퍼센티지 슬라이드

다른 방법으로는 r.ScreenPercentage 콘솔 명령어로 실행 중에 값을 설정할 수 있습니다.

언리얼 엔진 5 에디터 살펴보기

언리얼 엔진 5의 언리얼 에디터 는 언리얼 엔진 4의 모든 기능을 유지하고 있지만, 다수의 워크플로와 사용자 경험을 개선했습니다. 따라서 에인션트의 협곡 샘플을 체험해 보기 전에 간략하게 살펴보는 것을 추천해 드립니다.

언리얼 엔진 5 메인 화면

UE5 에디터의 변경 사항에 대한 보다 자세한 내용은 에디터 개선 사항을 참조해 주세요. 여기에서는 이 샘플에서 사용 된 부분만을 설명드립니다.

콘텐츠 드로어

콘텐츠 드로어 는 에디터 왼쪽 하단 구석에 있습니다. '콘텐츠 드로어' 버튼을 클릭하거나 CTRL+Spacebar 키를 눌러 표시하거나 숨길 수 있습니다.

레이아웃에 도킹 을 클릭하면 계속 도킹되어 있는 콘텐츠 브라우저가 생성되어 언리얼 엔진 4와 비슷하게 사용 가능합니다. 도킹된 콘텐츠 브라우저와 콘텐츠 드로어를 둘 다 동시에 사용할 수 있으며, 메인 툴바의 콘텐츠 드롭다운을 클릭하여 콘텐츠 브라우저를 관리할 수도 있습니다. 덕분에 콘텐츠 브라우저를 보다 유연하게 사용할 수 있을 뿐 아니라 사용하지 않을 때도 에디터 화면을 한층 더 넓게 유지할 수 있습니다.

콘텐츠 브라우저 자체도 레이아웃이 변경되어서 폴더 트리가 왼쪽에 고정되어 표시됩니다. 세팅 메뉴 또한 뷰 유형, 섬네일 크기, 콘텐츠 필터 등 에셋 표시 방식을 설정할 수 있도록 변경되었습니다.

에디터 모드 액세스

이제 메인 툴바의 아이콘을 사용하여 에디터 모드 를 토글할 수 있습니다.

메인 툴바의 에디터 모드 아이콘

여기에는 언리얼 엔진 4 사용자에게 익숙한 모드들과 함께, 강력하고 새로운 기능을 갖춘 신규 모드도 다수 포함되어 있습니다. 이러한 모드에는 다음이 포함됩니다.

번호

에디터 모드

설명

1

선택

게임 월드의 에셋을 선택하고 디테일을 편집하는 데 사용하는 기본 편집 모드입니다.

2

랜드스케이프

랜드스케이프를 스컬프팅, 페인팅 및 관리합니다.

3

폴리지

환경 내의 폴리지를 페인팅 및 조정합니다.

4

메시 페인트

환경 내의 메시를 버텍스 페인팅하는 툴입니다. 컬러, 웨이트, 또는 텍스처를 지원합니다.

5

프랙처

카오스 디스트럭션 시스템을 사용하여 스태틱 메시에서 프랙처를 생성하는 데 사용되는 툴입니다.

6

브러시 편집

전통적인 브러시 지오메트리 에디터입니다. 펜 툴을 사용하여 직교 뷰포트에 브러시를 그린 후 다른 툴을 사용하여 원하는 대로 모양을 다듬어 줍니다.

7

애니메이션

컨트롤 릭을 조작하고, 포즈를 빠르게 적용하고, 간단한 트윈을 구성하는 툴입니다.

8

모델링

폴리곤 지오메트리를 편집하는 데 사용되는 다양한 툴이 포함되어 있습니다. 기본 프리미티브를 토대로 모델링하거나 게임 월드의 메시를 개별적으로 수정합니다.

샘플 살펴보기

샘플을 실행하면 AncientMinimal 맵에서 시작하게 됩니다. 에인션트의 협곡에 들어 있는 콘텐츠 대부분은 AncientWorld 맵에 포함되어 있으며, 이 맵은 AncientContent > Maps 폴더에서 찾을 수 있습니다.

이 월드를 지원하는 파일 대부분은 게임의 콘텐츠 디렉터리에 있지만 호버 드론과 고대 괴물체 에셋은 게임의 베이스 프로젝트에서 분리된 게임 피처 플러그인에 포함되어 있습니다. 호버 드론 에셋은 HoverDrone Content 디렉터리에, 라이트 다트 어빌리티와 고대 괴물체와의 전투는 AncientBattle Content 디렉터리에 포함되어 있습니다. 이러한 디렉터리를 표시하려면 콘텐츠 드로어에서 '세팅' 버튼을 클릭한 후 플러그인 콘텐츠 표시 를 토글하면 됩니다.

콘텐츠 드로어의 세팅에서 하이라이트된 플러그인 콘텐츠 표시

에인션트의 협곡은 거대한 월드를 선보이지만 언리얼 엔진 4의 레벨 스트리밍에서 기존에 사용하던 서브 씬이 없습니다. 대신 이 샘플에서는 월드 파티션데이터 레이어 를 사용하여 씬 하나를 편집 가능한 여러 부분으로 분할합니다.

월드를 탐색하려면 창 > 월드 파티션 을 클릭합니다. 그러면 '월드 파티션; 창이 열리면서 간소화된 월드 맵이 표시됩니다.

월드 파티션 창

마우스 휠을 사용하여 월드의 여러 영역을 확대할 수 있으며, 맵에서 셀을 클릭한 후 드래그하여 선택할 수 있습니다. 셀을 선택하고 우클릭한 다음에 선택된 셀 로드 를 클릭하면 메인 뷰포트에 로드할 수 있습니다. 마찬가지로 선택된 셀 언로드 를 사용하여 표시하고 싶지 않은 셀을 제거하여 컴퓨터에 가해지는 부하를 줄일 수도 있습니다.

월드 파티션 셀을 한꺼번에 모두 로드하는 대신에 보거나 편집하고 싶은 레벨의 섹션만 로드하는 것을 권장합니다. 로드할 수 있는 셀의 수는 시스템에서 사용할 수 있는 메모리 양에 따라 다릅니다. 이 시스템에 대한 자세한 내용은 아래 월드 파티션 섹션을 참조하세요.

월드 파티션 창 확대

다크 월드와 라이트 월드를 구성하는 레이어를 확인하려면 창 > 데이터 레이어 를 클릭하여 '데이터 레이어' 창을 엽니다.

데이터 레이어 창

이 창을 통해 씬을 구성하는 모든 레이어를 활성화하거나 비활성화할 수 있습니다. 다크 월드를 보려면 Dark World 데이터 레이어를 활성화하세요. 라이트 월드를 보려면 Campfire Replace , FoliageHero Area Mountain Range 데이터 레이어를 활성화하세요. Campfire Geometry 데이터 레이어는 항상 있어야 합니다. 이러한 레이어를 활성화하고 비활성화해봄으로써 두 버전의 월드를 비교할 수 있습니다.

이러한 시스템과 이들 시스템이 샘플에서 구현된 방식, 그리고 워크플로에서 갖는 장점에 대한 자세한 내용은 협업 방식을 통한 대규모 월드 구성에서 확인할 수 있습니다.

하이엔드 비주얼과 빠른 반복

언리얼 엔진 5의 목표는 고퀄리티의 비주얼에 대한 새로운 표준을 제시하는 것뿐만 아니라, 리얼타임 고해상도 어플리케이션 제작에 있어서 가장 높은 접근성을 가진 파이프라인까지 제공하는 것입니다. 이번 섹션에서는 언리얼 엔진 5의 새로운 렌더링 기능이 에인션트의 협곡이 보여주는 디테일 수준과 제작 팀의 프로세스 속도 및 편의성을 개선하는 데 어떻게 기여했는지 알아보겠습니다.

바로 접근 가능한 퀵셀 메가스캔 에셋

Utah 메가스캔 에셋

미국 유타주 모아브 지역에서 수집된 퀵셀 메가스캔 에셋은 에인션트의 협곡에 포함된 스태틱 메시 및 텍스처 라이브러리에서 핵심적인 역할을 하며, 해당 환경의 에셋 중 대략 90% 정도를 차지합니다. 이러한 에셋은 콘텐츠 드로어의 AncientContent > Megascans 폴더에 있습니다.

콘텐츠 드로어의 Ancient Content Megascans 폴더

이 에셋 모두는 Canyons of Utah 메가스캔 팩에서 찾으실 수 있습니다. 또한 이제 언리얼 에디터에 퀵셀 브리지가 직접 통합되어 있으므로 메가스캔 에셋을 임포트 또는 관리할 때 외부 프로그램은 전혀 사용할 필요가 없습니다. 언리얼 엔진 5는 필요한 머티리얼 인스턴스와 메시를 자동으로 생성하며 인게임에서 직접 활용할 수 있습니다. 아래 섹션에서는 언리얼 엔진 5를 통해 고해상도 에셋을 얼마나 쉽게 처리할 수 있으며, 환경 아트 팀이 언리얼 엔진 5에 포함된 툴을 활용하여 랜드스케이프를 한층 더 유연하게 처리할 수 있는 방법을 살펴봅니다.

나나이트 가상화 지오메트리

에셋은 기존 LOD를 사용하지 않으며 추가적인 최적화도 필요하지 않습니다. 대신 나나이트 를 적극 활용합니다. 나나이트는 디스크에서 스태틱 메시 에셋을 스트리밍한 다음 가상화 지오메트리를 사용하여 이러한 에셋을 표현하고, 사용자의 뷰포트 해상도를 기반으로 나나이트에서 사용하는 폴리곤 수를 동적으로 스케일링합니다. 버추얼 텍스처링은 텍스처 디테일과 유사하게 작동합니다. 이 같은 표현은 씬에서 사용자가 움직이는 것에 맞춰 변경되며 디테일 수준도 즉각적으로 업데이트됩니다. 가까운 오브젝트는 더 자세히, 멀리 있는 오브젝트는 덜 자세히 표시하면서도 화면상의 전체적인 디테일은 대략적으로 균등하게 나타납니다.

나나이트 스트리밍 디테일

추가적인 준비를 하지 않고도 에인션트의 협곡 환경에서 엄청난 밀도의 폴리곤으로 구성된 메가스캔 에셋 수백 개를 씬에서 직접 사용할 수 있는 것은 바로 나나이트 덕분입니다. 심지어 폴리곤 수천만 개와 대규모 텍스처가 사용된 절벽 면도 테크니컬 아티스트의 추가 작업 없이 즉각적으로 렌더링됩니다. 또한 하이 폴리곤 Z브러시 스컬프팅도 게임 내에서 직접 사용할 수 있습니다.

나나이트가 어떻게 작동하는지 보려면 뷰 모드 드롭다운을 클릭하고 '라이팅포함'을 나나이트 시각화 > 트라이앵글 로 변경하여 트라이앵글 출력을 시각화할 수 있습니다.

뷰 모드 드롭다운에서 트라이앵글 시각화 선택

그러면 나나이트에서 트라이앵글이 출력되는 것이 실시간으로 표시됩니다.

표준 렌더링

나나이트 트라이앵글 시각화

나나이트는 디포메이션을 지원하지 않기 때문에 스태틱 메시에 대해서만 작동합니다. 하지만 이것만으로도 환경 개발 파이프라인을 대폭 간소화하는 데는 전혀 부족하지 않습니다. 한편 나나이트가 스켈레탈 디포메이션을 사용할 수 없기는 하지만, 끝부분에 등장하는 거대한 고대 괴물체는 스켈레탈 메시에 어태치된 스태틱 메시를 사용하므로 나나이트의 장점을 활용하여 초고해상도의 갑옷을 렌더링할 수 있습니다.

표준 렌더링

나나이트 트라이앵글 시각화

나나이트의 사용법과 환경설정 방식에 관련된 자세한 내용은 나나이트 문서를 참고하세요.

루멘 글로벌 일루미네이션

디테일하게 묘사된 이 협곡의 라이팅은 루멘과 언리얼 엔진 5에 새롭게 추가된 풀 다이내믹 글로벌 일루미네이션, 그리고 리플렉션 시스템을 바탕으로 합니다. 루멘은 직접광과 지오메트리에서 벌어지는 변화를 간접광에 적용하고, 새로운 기술과 오래된 기술을 결합하여 고퀄리티의 결과물을 실시간으로 완성하면서 동적이고 현실감 넘치는 씬을 만들어냅니다. 루멘은 차세대 콘솔과 하이엔드 PC를 염두에 두고 빌드되었으며, 언리얼 엔진 5.0의 출시 시점에 두 플랫폼에서 30~60FPS를 달성하는 것을 목표로 하고 있습니다.

GI/스카이라이팅을 적용한 경우

GI/스카이라이팅을 적용하지 않은 경우

확장성이 뛰어난 루멘은 소프트웨어 및 하드웨어 레이 트레이싱 모드를 사용하는 다양한 DX11 및 DX12 지원 하드웨어를 지원합니다. 에인션트의 협곡은 스크린 트레이스 (또는 스크린 스페이스 트레이싱)와 서피스 캐시 표현을 결합하여 씬의 간접광을 생성하는 소프트웨어 레이 트레이싱을 사용합니다. 루멘은 스크린 트레이스를 사용하여 퀄리티가 낮은 서피스 캐시에서 나타날 수 있는 불일치, 즉 개별 메시의 사인드 디스턴스 필드(Signed Distance Field: SDF)에서 생성된 불일치를 처리합니다. 서피스 캐시는 표시 > 시각화 > 루멘 씬 을 사용하여 시각화할 수 있습니다. 서피스 캐시는 첫 200미터만 계산한 후 디스턴스 씬의 스크린 트레이스로 전환됩니다.

루멘은 용도와 퀄리티 옵션이 다양하기 때문에 나나이트의 가상화 지오메트리와 기존의 스태틱 메시 지오메트리 모두와 함께 사용할 수 있습니다. 그리고 스크린 트레이스는 스킨을 입힌 메시가 간접광을 받거나 이에 영향을 미칠 수 있도록 지원하지만, 현재 화면에 표시되는 것에 의해 제한됩니다. 이와 같이 결합된 루멘 테크닉은 에디터 뷰포트에서 표시 > 시각화 > 루멘 글로벌 일루미네이션 을 클릭하여 시각화할 수 있습니다.

표준 렌더링

루멘 GI 시각화

루멘은 모든 무버블 라이트 소스와 함께 작동하며, 여기에는 광원으로서의 이미시브 머티리얼이 포함됩니다. 스카이라이트는 루멘의 파이널 게더를 스카이 섀도잉에 사용하며, 덕분에 실내를 야외보다 훨씬 더 어둡게 만들 수도 있고 더 많은 라이트를 반사하는 밝은 채색의 표면을 표현하는 데도 유용합니다.

다음은 캠프파이어 주변 영역을 비교하기 위한 예시입니다. 루멘/스카이라이팅 활성화, 루멘 비활성화, 루멘/스카이라이팅 비활성화 상태를 비교해 보세요.

제작팀은 루멘의 퀄리티와 속도는 물론이고 "원하는 대로 작동하는" 속성 덕분에 기존 라이팅 기술에 존재하는 환경설정 옵션을 모두 걱정할 필요 없이 에인션트의 협곡에 포함된 대규모 랜드스케이프의 라이팅 작업을 직관적으로 처리할 수 있었습니다. 루멘과 그 작동 원리에 관련된 자세한 내용은 루멘 글로벌 일루미네이션 및 리플렉션루멘 기술 상세 정보 문서를 확인하세요.

새로운 모델링 툴을 사용하여 메시 다듬기

모델링 에디터 예시

환경에 사용된 메가스캔 메시 대부분은 원래 임포트된 "원본" 메시가 아닌, 언리얼 에디터에서 랜드스케이프에 맞도록 수정된 메시들입니다. 에인션트의 협곡에 참여한 환경 아티스트들은 언리얼 엔진 5의 새로운 모델링 에디터 모드 를 통해 이 작업을 수행할 수 있었습니다.

모델링 에디터를 사용하여 다른 DCC 툴에서와 같은 방식으로 메시를 백지 상태에서부터 만들어 낼 수도 있지만, 환경에 포함되어 있는 아무 스태틱 메시나 인스턴스드 메시를 선택하여 해당 지오메트리를 수정할 수도 있습니다. 이들을 폴리곤별로 편집하는 작업은 상당히 번거롭지만, 모델링 에디터 모드에는 다양한 디포머 및 스컬프팅 툴이 갖춰져 있어 밀도 높은 메시도 빠르게 변경할 수 있습니다.

예를 들어 SM_umshejnga_High2 절벽 면 에셋에 커브가 적용된 버전이 필요하다고 가정해 보겠습니다. 이 경우, 모델링 에디터 모드를 토글하고 해당 메시를 뷰포트에서 선택한 후 벤드 디포머를 적용하면 됩니다. 이처럼 몇 초 정도의 미세 조정만으로도 메시에 디포메이션을 적용하여 결과물을 확인할 수 있습니다.

기본 메시

벤드 디포머 활성

벤드 디포머가 적용된 결과

전체 사이즈로 보려면 이미지를 클릭하세요.

별도의 UV 작업 없이, 고해상도 베이스 메시 하나를 바탕으로 원본 퀄리티에 비교해도 손색이 없는 고유한 메시들을 다양하게 만들 수 있습니다. 덕분에 아티스트들은 레벨 에디터만으로도 해상도에 관계없이, 어떤 에셋으로든 최대한의 유연성을 발휘하여 머리 속의 아이디어를 필요에 맞게 현실화할 수 있습니다.

패킹된 레벨 인스턴스로 랜드스케이프 채우기

에인션트의 협곡에 포함되어 있는 랜드스케이프는 지금까지 다룬 툴로도 버거울 정도로 큰 규모를 갖추고 있기 때문에, 메가스캔 에셋을 개별적으로 배치하여 매우 디테일한 환경을 구성하려면 상당히 오랜 시간이 걸립니다. 따라서 에인션트의 협곡 환경 아트 팀은 패킹된 레벨 인스턴스 를 사용하여 대규모 어셈블리를 합쳤습니다.

레벨 인스턴스는 본질적으로 월드 파티션 시스템을 구현하는 모든 월드에 추가 가능한 중첩된 레벨입니다. 레벨 인스턴스를 사용해야 월드 파티션이 제대로 작동하는 것은 아니지만, 월드의 콘텐츠 청크를 재사용 가능한 부분들로 정리하거나 레벨을 메인 레벨 외부에서 편집할 때 관리하기 쉽도록 나눠줄 때 유용하게 사용할 수 있습니다.

레벨 인스턴스를 생성하려면 월드에서 오브젝트 그룹을 선택하고 우클릭한 후 선택에서 생성... 을 클릭하세요.

선택에서 생성 예시

이렇게 하면 새 레벨 인스턴스 메뉴가 표시되며, 여기에서 생성하려는 레벨 인스턴스 유형을 선택할 수 있습니다.

새 레벨 인스턴스 선택

확인 을 클릭하면 새 레벨 인스턴스를 프로젝트에 레벨 파일로 저장할 수 있으며, 이 경우 레벨 인스턴스는 해당하는 블루프린트 에셋을 생성합니다. 선택한 모든 액터는 해당 액터들을 포함하는 레벨 인스턴스 액터로 대체됩니다. 레벨 인스턴스는 해당 레벨 파일을 사용하여 편집할 수 있으며, 관련 블루프린트 에셋을 사용하여 레벨 인스턴스 사본을 배치할 수도 있습니다.

레벨 인스턴스 배치

레벨 인스턴스를 조작하는 것은 레벨에서 다른 액터를 조작하는 것만큼 간단합니다. 또한 레벨 인스턴스의 컴포넌트 부분을 제자리에서 편집할 수도 있습니다. 배치된 레벨 인스턴스의 디테일 패널에서 레벨 인스턴스 편집 아래에 있는 편집 을 클릭하여 해당 레벨 인스턴스에 포커스를 둡니다. 그런 다음 레벨 인스턴스의 컴포넌트 부분을 나머지 월드의 컨텍스트에 맞춰 편집할 수도 있습니다.

레벨 인스턴스 편집

편집이 끝나면 변경사항 커밋 을 클릭하여 조정 작업을 마치고 월드 편집 화면으로 돌아옵니다. 그러면 변경 사항을 저장할 것인지 물어보는 알림이 표시되며, 해당 레벨 인스턴스의 사본들에 모두 동일한 변경 사항이 적용됩니다.

레벨 인스턴스 변경 사항 커밋

에인션트의 협곡 샘플은 주로 패킹된 레벨 인스턴스를 사용하여 어셈블리를 생성합니다. 이러한 인스턴스는 표준 레벨 인스턴스와 달리 스태틱 메시가 아닌 액터를 모두 무시하고 스태틱 메시를 인스턴스드 스태틱 메시로 변환하여 해당 컴포넌트 에셋에 의해 생성된 드로 콜의 수를 줄입니다.

환경 아트 팀은 이 워크플로를 통해 대규모 어셈블리 라이브러리를 독립적으로 빌드하고 어셈블리 간에는 영향을 미치지 않는 방식으로 편집할 수 있습니다. 이러한 에셋은 플레이어 주변의 랜드스케이프를 구성하는 다양한 소규모 에셋에서부터 멀리 떨어져 있는 랜드스케이프의 큰 덩어리를 구성하는 거대한 지오폼에 이르기까지 다양합니다. 대부분의 어셈블리는 에디터에서 찾을 수 있는 스태틱 메시 에셋들로 구성되어 있지만, 그 중에는 환경 아트 팀이 메가스캔 에셋을 기반으로 커스텀 제작한 것들도 있습니다. 환경 아트 팀은 해당 워크플로를 사용하여 단 몇 주 만에 4㎢에 달하는 면적을 실사 같은 디테일로 묘사할 수 있는 유연한 어셈블리를 만들어냈습니다.

이러한 어셈블리의 맵 파일은 AncientGameContent/Maps/MASS 폴더에서 찾을 수 있으며, 해당 레벨 인스턴스 액터는 AncientGameContent/Geometry 폴더에서 찾을 수 있습니다. 이 툴의 사용법에 관련된 자세한 내용은 레벨 인스턴스 를 참고하세요.

카오스 디스트럭션 워크플로

에인션트의 협곡에 포함된 디스트럭터블 메시(다크 월드의 기둥이나 최종 전투에서 고대 괴물체가 등장하는 언덕 등)의 개발 과정에서는 언리얼 엔진 5의 카오스 디스트럭션 워크플로에 대한 다양한 개선이 이루어졌습니다. 제작 팀이 개발한 워크플로는 새로운 모델링과 프랙처 에디터 모드의 조합을 사용합니다.

디스트럭션 팀은 모델링 툴에 상당 부분을 의존하여 메시를 준비하고 타깃팅된 프랙처를 생성했습니다. 간소화 , 평면 컷(PlnCut ), 오프셋 , 디스플레이스 (노이즈가 더 심한 표면 추가)를 통해 소스 메시 자체에서 초기 프랙처를 스컬프팅할 수 있었고, 프랙처 툴 내에서 메시 프랙처 툴을 사용하여 이러한 메시를 타깃팅했습니다. 이 프로세스 전반에 걸쳐 불리언 툴을 사용하여 서로 오버랩되어 침투하는 메시를 제거하고 표면에 지오메트리만 남겼습니다. 지오메트리의 스트레이 폴리곤이나 플로팅 아일랜드는 TriSel 툴을 사용하여 제거했습니다.

Using the mesh tools to create planar cuts in a mesa

제작 팀은 프랙처 편집 모드에서 메시 프랙처 툴을 사용하여 디스트럭터블 메시를 큰 덩어리로 분리했습니다. 이 툴은 다른 메시를 효율적으로 사용하여 지오메트리를 "작은 부분으로 분리"하는데, 불리언 빼기 툴과 비슷하게 작동하지만 메시의 두 부분을 모두 제자리에 남겨 둡니다. 이 툴로 생성된 덩어리는 디스트럭터블 오브젝트의 주요 프랙처로 작동하며, 부서지는 모습을 어느 정도 제어할 수 있습니다. 이러한 덩어리를 만든 뒤에 제작 팀은 비교적 전통적인 보로노이 프랙처(균등 또는 클러스터 프랙처 툴)를 사용하여 보다 작은 조각으로 나눴습니다.

메시 컷 적용 중.

메시 컷 적용 후.

보로노이 프랙처 적용.

전체 사이즈로 보려면 이미지를 클릭하세요.

이러한 프랙처가 자연스럽게 보이면서도 균등하지 않은 에지를 갖출 수 있게 된 것은 언리얼 엔진 5에 도입된 노이즈 세팅 덕분입니다.

프랙처 모드 자동 UV 툴

제작 팀은 자동 UV 툴을 사용하여 프랙처된 에셋의 내부 표면에 UV를 적용했습니다. 이 툴은 메시의 뎁스를 기반으로 그레이디언트에 매핑하는 텍스처를 생성합니다. 이렇게 하면 여러 머티리얼을 함께 블렌딩하여 교차 섹션의 서로 다른 부분들이 뎁스에 따라 다양한 표면 퀄리티를 갖추면서 보다 자연스럽게 보이는 외형을 가질 수 있게 됩니다. 예를 들어 교차 섹션 안쪽 깊이 위치한 메시는 더 건조하고 먼지가 많이 쌓인 모습을 보여주고, 표면에 가까운 부분들은 더 어두우면서 풍화된 모습을 보여줍니다.

마지막으로, 제작 팀은 카오스 캐시 매니저 를 사용하여 해당 에셋들에 대해 피직스 시뮬레이션을 캐싱했습니다. 이 시스템은 에디터 내에서 시뮬레이션을 녹화하고 인게임에서 재생해주므로, 트리거되는 경우 동일한 방식으로 진행되도록 보장합니다. 덕분에 프로세싱을 절약하면서도 게임 내에서 복잡하고 디테일한 디스트럭션을 보여줄 수 있으며, 레벨 디자인에 따른 인게임 요구 사항에 맞춰 디스트럭션을 제작할 수 있습니다. 예를 들어 에코가 처음으로 파괴하는 기둥은 붕괴될 때 절대로 입구를 가로막지 않으며, 고대 괴물체의 언덕도 에코가 아레나 내에서 이동할 때 방해가 되는 장애물을 남기지 않습니다.

Chaos Cache Manager

프로젝트의 최종 빌드에서는 이러한 에셋의 원본 시뮬레이션 구성이 제거되었습니다. 하지만 해당 지오메트리 컬렉션은 AncientBattle Content > Maps > Destruction 에서 찾을 수 있습니다. 타깃팅된 프랙처에 사용된 에셋 예시는 c_Destruction > 3_Lt_Hand 에 있는 컬렉션을 살펴보면 되며, 이러한 툴로 직접 실험해볼 수도 있습니다. 이 워크플로는 현재 유연성을 개선하기 위한 작업이 진행 중입니다. 그 동안에는 에인션트의 협곡에서 구현된 사항들을 통해 언리얼 엔진 5의 카오스 디스트럭션이 제공하는 퀄리티, 접근성 및 유연성을 에픽게임즈에서 어떻게 개선하고 있는지 대략적인 개념을 파악하실 수 있을 것입니다.

이 워크플로의 유연성을 향상시키는 작업은 현재 진행 중입니다. 작업을 진행하는 동안에 에인션트의 협곡에 적용된 기술은 에픽이 UE5 카오스 디스트럭션의 퀄리티, 접근성 그리고 유연성을 어떻게 향상시키고 있는지에 대한 개념 증명을 제공합니다.

스카이 애트머스피어 및 볼류메트릭 나이아가라 이펙트를 활용한 분위기 조성

에인션트의 협곡에 포함되어 있는 애트머스피어를 완성하는 데는 새로운 스카이 애트머스피어 시스템을 사용했습니다.

스카이 애트머스피어 3인칭 와이드 뷰

씬에 스카이 애트머스피어 액터를 배치하면 킬로미터 단위의 지면 반경, 애트머스피어 관련 피지컬 파라미터, 아트 디렉션 오버라이드 등이 적용된 시뮬레이션된 행성에 대한 정보를 설정할 수 있습니다. 이 시스템은 애트머스피어 선 라이트 로 설정된 디렉셔널 라이트스카이 라이트 를 함께 사용하여 동작합니다. 이러한 엘리먼트를 모두 갖춘 스카이 애트머스피어 시스템은 실사 같은 애트머스피어, 볼류메트릭 클라우드 및 포그를 글로벌 스케일로 생성합니다. 이 씬의 인바이런먼트 라이팅은 스카이 라이트의 리얼타임 캡처 및 컨볼루션 프로세스 덕분에 완벽하게 동적으로 동작합니다.

스카이 애트머스피어 활성화 상태

스카이 애트머스피어 비활성화 상태

에인션트의 협곡에 등장하는 라이트 월드에서는 스카이 애트머스피어 액터를 사용하여 실제 지구를 반영한 것 같은 좀 더 정교한 애트머스피어를 보여줍니다. 또한 애니메이션이 적용된 볼류메트릭 클라우드가 실시간으로 다이내믹하게 라이팅됩니다. 한편 다크 월드에서는 기존의 스카이돔을 사용하여 환상적이고 스타일리스틱한 모습을 만들어냈습니다.

라이트 월드 씬

다크 월드 씬

전체 사이즈로 보려면 이미지를 클릭하세요.

암석 지형의 안개나 모래 바람 같은 마무리 작업에서는 나이아가라 파티클과 볼류메트릭 페인트 데이터를 함께 사용하여 환경 전체에 적용되도록 연출했습니다.

지면을 따라 흩날리는 먼지 띠

이러한 파티클 시스템의 액터는 BP_NiagaraPainted_FarFog , BP_NiagaraPainted_FogDetailBP_NiagaraPainted_SandStripe 다크 월드 데이터 레이어에서 찾을 수 있습니다.

다크 월드 나이아가라 블루프린트

이들 액터 각각은 VolumetricPaintingDensityMapVolumetricPaintingVelocityMap 이라는 두 개의 나이아가라 인터페이스 텍스처를 사용합니다.

나이아가라 데이터 인터페이스 텍스처

밀도 맵은 RGB 정보와 알파 채널을 함께 사용하여 지형에 따른 파티클의 상대적 높이와 밀도를 결정하는 반면, 속도 맵은 해당 파티클이 움직일 방향을 결정합니다. 제작 팀은 커스텀 빌드한 볼류메트릭 페인팅 툴로 환경의 레이어를 페인팅하고 이러한 텍스처를 출력했습니다. 아래 이미지에서 환경에 오버레이된 그리드는 밀도 맵을 나타내며 화살표는 플로 맵을 나타냅니다.

밀도 맵 그리드과 플로 맵 화살표 오버레이

에인션트의 협곡에서는 이 방식을 통해 단 세 개의 나이아가라 시스템만으로 다크 월드의 랜드스케이프 전체에 걸쳐 GPU 파티클 100,000개 이상을 시뮬레이션합니다. 이 중에서 실제 볼류메트릭 시뮬레이션을 실행하는 것은 없지만 각 파티클이 맞춘 듯한 디테일로 환경에 잘 어울립니다. 볼류메트릭 페인팅 툴은 아직 개발 중에 있지만 나이아가라의 성능과 결합되었을 때 어떤 퍼포먼스와 활용도를 보여줄지 잘 알 수 있을 것입니다.

협업을 통한 대규모 월드 구성

지금까지 사용자들은 레벨 하나를 다수의 서브 씬으로 나누고, 레벨 스트리밍 시스템이나 월드 컴포지션 시스템을 사용하여 퍼시스턴트 레벨 안팎으로 이러한 서브 씬을 스트리밍했습니다. 이러한 작업에는 세심한 정리가 필요한 데다가 사용자들 간의 협업도 어려우며, 버전 관리 문제를 방지하려면 일반적으로 사용자 한 명이 한 번에 씬 하나씩만 수정해야 했습니다.

언리얼 엔진 5에서는 레벨 파일과의 상호작용 방식을 개편하여 프로세스를 보다 명확하고 직관적으로 만들었습니다. 이에 레벨 파일 하나만으로 대규모 월드를 수정할 수 있을 뿐만 아니라 수십여 명의 다른 개발자들과 함께하는 협업 환경에서도 문제가 거의 발생하지 않습니다. 이 섹션에서는 이를 가능하게 한 툴을 자세히 살펴보고, 에인션트의 협곡 제작 시 해당 툴이 팀의 협업에 가져다 준 장점을 살펴보겠습니다.

액터당 한 개의 파일(One File Per Actor)

에인션트의 협곡에 등장하는 전체 월드는 언리얼 엔진의 액터당 한 개의 파일(One File Per Actor: OFPA) 시스템을 사용합니다. 이 시스템을 활성화하면 레벨에 배치된 액터의 데이터를 단일 맵 파일에 작성하는 것이 아니라 각 고유 인스턴스마다 개별 파일을 작성합니다.

레벨 에디터와 상호작용하는 사용자의 입장에서는 워크플로에서 달라지는 점이 없습니다. 레벨을 편집하려면 여전히 에디터에서 단일 레벨 파일을 열어야 합니다. 하지만 기본 파일 시스템은 각 액터를 개별 파일로 관리하므로 레벨 디자이너와 환경 아티스트는 동일한 레벨의 서로 다른 영역이나 레이어를 편집할 수 있으며, 버전 컨트롤 시스템에 변경 사항을 커밋할 때 아주 드문 경우로만 충돌이 발생합니다.

에인션트의 협곡에는 OFPA가 전체적으로 활성화되어 있습니다. 이 세팅은 월드 파라미터의 '고급' 섹션 > 월드 세팅 에서 찾아볼 수 있으며, 외부 액터 사용 으로 표시되어 있습니다.

외부 액터를 사용하는 월드 세팅

이 옵션은 각 액터별로 또는 프로젝트 전체에 적용할 수 있습니다. 자세한 내용은 액터당 한 개의 파일 문서를 참고하세요.

이 시스템 덕분에 에인션트의 협곡 개발자들은 업무 시간 내내 작업한 변경 사항을 빠르게 커밋하고, 서로의 변경 사항을 에디터 내에서 신속하게 확인할 수 있게 되었을 뿐만 아니라 버전 충돌 문제도 걱정할 필요가 없어졌습니다. 게임플레이 스크립팅과 환경 아트 측면에서 세부적인 변경 사항을 지속적으로 함께 반영하더라도 문제가 발생하지 않기 때문에 반복 작업의 속도를 높이고 고도의 협업이 가능한 환경 아트 파이프라인을 구축할 수 있게 되었습니다.

월드 파티션

게임 속 대규모 월드는 수 킬로미터에 달하는 규모의 맵을 한 번에 로드할 수는 없기 때문에 맵을 수많은 섹션으로 나눠 플레이어가 랜드스케이프를 이동함에 따라 로드 및 언로드하는 방식을 사용합니다. 이전의 툴세트로는 개발자들이 맵을 서브레벨로 일일이 직접 나누고 스트리밍 시점을 세심하게 관리해야 했습니다. 따라서 컨텍스트에 따라 각 월드의 섹션을 확인하기 어려운 경우가 많았습니다.

새로운 월드 파티션 시스템은 이 프로세스를 크게 간소화해줍니다. 일단 월드 파티션이 특정 레벨에 대해 활성화되면 각 오브젝트가 그리드의 위치에 따라 셀로 자동 분할되며, 레벨 에디터에서 월드를 조정하면 셀의 콘텐츠가 업데이트됩니다. 따라서 오브젝트를 수동으로 할당할 필요가 전혀 없습니다. 플레이어가 게임을 플레이하는 동안 게임 월드에서 이동할 경우 월드 파티션에서 셀을 자동 로드 및 언로드하므로 셀을 수동으로 관리하거나 스트리밍 볼륨을 지정하지 않아도 됩니다.

월드 파티션은 'AncientGameEntry' 씬의 월드 파티션 구성 > 월드 세팅 에서 활성화되어 있습니다.

월드 세팅 월드 파티션 구성

'월드 파티션' 창은 창 > 월드 파티션 을 클릭하여 확인할 수 있습니다. 이 창에서는 에디터 셀을 클릭 후 드래그로 선택할 수도 있고, 편집 목적으로 로드 또는 언로드할 수 있습니다. 또한 이 창을 사용하면 선택된 셀로 카메라를 움직이는 방식으로 에디터를 빠르게 탐색할 수도 있습니다.

월드 파티션 창

각 액터의 월드 파티션 세팅은 월드 파티션 섹션의 디테일 에서 확인할 수 있습니다. 이 부분은 블루프린트 에디터의 '클래스 디폴트'에서도 편집할 수 있습니다.

월드 파티션 개별 액터 세팅

기본적으로 에인션트의 협곡 환경 대다수 액터는 월드 파티션 그리드에서의 위치를 기준으로 소속 셀이 결정됩니다. 에코는 플레이어 캐릭터인 만큼 항상 로드되도록 설정되어 있습니다.

보시는 것처럼, 월드 파티션 시스템은 대규모 월드의 제작 프로세스를 대폭 간소화했습니다. 지금도 씬의 서브 레벨과 비슷한 방식으로 여러 파일을 관리할 수는 있지만, 기술적인 측면의 세부 사항들을 자동화함으로써 아티스트와 디자이너는 자신들이 만들고자 하는 환경과 사용자 경험에 더욱 집중할 수 있습니다. 게임의 월드 파티션 환경설정 방식에 관련된 자세한 내용은 [월드 파티션 문서]를 참고하세요.

데이터 레이어

데이터 레이어 는 월드 내의 오브젝트를 정리해주는 시스템으로, 원하는 대로 로드 및 언로드할 수 있습니다. 이 시스템은 서브 레벨을 대체하는 또 다른 기능을 제공하며, 월드 파티션과 함께 작동하도록 설계되었습니다. 따라서 프로젝트를 정리하기 위한 툴로도 사용할 수도 있고, 게임플레이 기능을 통해 월드에 대한 제어 수준을 강화할 수도 있습니다.

'데이터 레이어' 창은 창 > 데이터 레이어 를 클릭하여 열 수 있습니다. 이 메뉴를 사용하면 에디터에서 데이터 레이어를 생성, 관리, 로드 및 언로드할 수 있습니다.

데이터 레이어 창

액터에 대한 데이터 레이어 정보는 해당 액터의 디테일 > 데이터 레이어 섹션에서 확인할 수 있습니다. 또한 여기에 있는 드롭다운으로 액터의 데이터 레이어를 변경하거나 '데이터 레이어' 창에서 데이터 레이어를 클릭한 다음 이 항목으로 드래그할 수도 있습니다.

데이터 레이어 개별 액터 세팅

또한 월드 아웃라이너에서 여러 개의 액터를 클릭한 후 데이터 레이어에 드래그해서, 데이터 레이어 하나에 여러 개의 액터를 한 번에 할당할 수도 있습니다.

여러 액터를 데이터 레이어에 드래그

에인션트의 협곡에서는 데이터 레이어를 사용하여 라이트 월드와 다크 월드를 전환합니다. 에코가 포털을 활성화하면 라이트 월드를 표현하는 여러 개의 데이터 레이어를 언로드하고, 대신 다크 월드를 표현하는 데이터 레이어 세트를 로드합니다.

라이트 월드

다크 월드

라이트 월드

다크 월드

전체 사이즈로 보려면 이미지를 클릭하세요.

이러한 데이터 레이어는 'Dark World Rift' 오브젝트로 트리거되는 인게임 이벤트를 통해 활성화되고 비활성화됩니다. 두 월드 모두 동일한 레벨 파일에 제작되어 있고 같은 공간에 겹쳐 있기 때문에 같은 월드의 완전히 다른 버전을 만들 수 있습니다.

'Campfire Data Layer'는 두 월드에 모두 사용되며, 에코가 한 월드에서 다른 월드로 넘어갈 때마다 플레이어를 위한 공통적인 레퍼런스 프레임 역할을 수행합니다. 이러한 경우에는 중복된 버전을 만들 필요 없이 라이트 월드와 다크 월드에서 사용되는 애트머스피어와 라이팅의 표시 여부만 변경해주면 됩니다.

라이트 월드 캠프파이어

다크 월드 캠프파이

또한 개발 과정에서 게임플레이와 세트의 구성 요소를 분리해주는 툴로도 사용됩니다. 덕분에 환경 아티스트는 오버랩 트리거나 게임플레이 오브젝트와 상호작용하지 않고도 자신의 데이터 레이어에서 작업하는 것이 가능합니다. 또한 디자이너는 게임 내 이벤트와 관련된 오브젝트에 집중할 수 있게 됩니다.

유연한 리얼타임 애니메이션

언리얼 엔진 5에서는 스켈레탈 메시를 사용하는 리얼타임 애니메이션에서도 다양한 개선이 이루어졌으며, 이러한 개선 사항은 주로 캐릭터와 캐릭터-월드 간 상호작용 방식에 초점을 맞추고 있습니다. 에인션트의 협곡에서는 이러한 개선 사항을 사용하여 에코는 물론이고 데모 마지막 부분에서 에코가 조우하게 될 거대한 고대 괴물체와의 상호작용을 처리합니다.

모션 워핑

모션 워핑

새로운 모션 워핑 시스템을 사용하면 애니메이션 시 환경 내 캐릭터의 워프 포인트를 바탕으로 루트 모션을 조정할 수 있습니다. 따라서 하나의 애니메이션을 다양한 상황에서 유연하게 사용할 수 있으므로 복잡한 환경의 상호작용을 처리하는 데 필요한 작업량을 크게 줄일 수 있습니다.

예를 들어 에인션트의 협곡 데모에서 에코는 다크 월드를 탐험하며 다양한 잔해와 장애물을 뛰어넘을 수 있습니다.

모션 워핑 도약 gif

이전 워크플로에서 이 같은 인게임 액션을 구현하려면 장애물의 피지컬 파라미터에 매우 제한적인 규칙을 적용하여 장애물별로 애니메이션을 만들거나, 각 액션을 컴포넌트 애니메이션으로 분할하여 재생 방식과 시기에 대한 복잡한 규칙을 적용해야 했습니다.

하지만 이 프로젝트에서 에코가 장애물을 뛰어넘는 동작은 VaultOver_Montage 에셋만으로 처리됩니다.

에디터의 VaultOver_Montage 에셋

이 에셋은 새로운 모션 워핑 노티파이 스테이트 를 사용하여 캐릭터의 루트 모션이 환경에 맞게 워핑될 수 있도록 애니메이션 세그먼트를 표시합니다. 각 애니메이션은 환경에 배치된 동기화 포인트 에 반응합니다. 이 경우의 동기화 포인트는 'FrontEdge', 'BackEdge' 및 'BackFloor'이며, 뛰어넘을 수 있는 오브젝트의 서로 다른 레퍼런스 포인트에 대응됩니다. 'FrontEdge'는 에코가 오브젝트에 손을 대고 자기 쪽으로 끌어당길 수 있는 위치, 'BackEdge'는 에코가 도움닫기할 수 있는 위치, 'BackFloor'는 오브젝트 반대편으로 뛰어넘을 수 있는 위치를 나타냅니다.

이러한 포인트는 GA_Vault 라는 'GameplayAbility'에 설정되어 있으며 BP_EchoCharacter 에 어태치된 VaultingTriggerVolume 을 토대로 뛰어넘는 동작을 트리거합니다. 각 모션 워핑 동기화 포인트를 설정할 블루프린트 노드가 내장되어 있기는 하지만, 이 어빌리티는 뛰어넘을 수 있는 액터에 대한 데이터를 기반으로 모든 동기화 포인트를 한 번에 계산하는 커스텀 노드를 사용합니다.

몽타주 블루프린트 노드에 도약 싱크 포인트 설정

이러한 세 포인트가 에코의 MotionWarping 컴포넌트로 제공되면 'VaultOver_Montage'는 에코의 루트 모션이 플레이되었을 때 자동으로 이 포인트에 정렬합니다. 여기에는 모션 워핑 노티파이 스테이트의 경과시간과 함께, 해당 세그먼트의 모션 워프가 취해야 할 동작까지 모두 고려됩니다.

이 시스템 덕분에 에코는 단 하나의 애니메이션만으로 환경 속 다양한 오브젝트를 쉽게 뛰어넘을 수 있습니다. 오브젝트의 높이나 깊이에 상관없이 에코의 애니메이션은 각 대상 포인트에 맞게 알아서 조정이 되므로 자연스러운 느낌이 만들어집니다. 따라서 개발자들은 작은 애니메이션 에셋 라이브러리만으로도 상당한 유연성을 발휘할 수 있습니다.

모션 워핑 구현에 관련된 자세한 내용은 모션 워핑 문서를 참고하세요.

컨트롤 릭 개선

에코와 거대 고대 괴물체에는 언리얼 엔진의 컨트롤 릭 이 구현되어 있으므로 둘 모두 언리얼 에디터에서 애니메이션 작업을 할 수 있습니다. 언리얼 엔진 5에서는 컨트롤 릭과 함께 사용할 수 있는 툴이 다음과 같이 확장되었습니다.

  • 포즈 라이브러리 - 애니메이션을 빌드할 때 모델의 각 부분에 빠르게 할당할 수 있는 재사용 가능한 포즈 목록이 들어 있습니다.

  • 트윈 툴 - 중간 키프레임을 생성하고 주변 키프레임의 정보에 따라 중간 키프레임에 웨이트를 적용할 수 있습니다.

  • 스냅퍼 툴 - 컨트롤 릭의 각 부분을 게임 월드 내 오브젝트에 고정할 수 있습니다.

이러한 툴 덕분에 애니메이션 라이브러리를 구성하는 작업이 매우 빠르고 간편해졌습니다. 에인션트의 협곡 샘플에서 고대 괴물체의 애니메이션은 해당 모델을 디자인 및 빌드한 애런 심즈(Aaron Sims)의 제작 팀이 언리얼 에디터의 컨트롤 릭과 시퀀서만을 사용하여 제작했습니다.

컨트롤 릭 에디터

고대 괴물체와 에코는 모두 컨트롤 릭으로 구성되어 있으므로 이러한 새로운 기능을 살펴보는 데 사용할 수 있습니다. 에코의 릭은 AncientContent > Characters > Echo > Rig 폴더에서, 고대 괴물체의 컨트롤 릭은 AncientBattle Content > Characters > AncientOne > Rig 폴더에서 찾을 수 있습니다.

컨트롤 릭 콘텐츠 폴더

UE5 컨트롤 릭의 개선사항에 대한 자세한 소개는 컨트롤 릭 문서를 참조해 주세요.

풀 바디 IK 솔버

두 캐릭터는 모두 환경에 어떻게 반응할지 알려주는 추가 레이어를 제공하는 새로운 풀 바디 IK 솔버(FBIK) 로 구현되어 있습니다. 풀 바디 IK는 각 캐릭터의 컨트롤 릭 에셋에서 Forwards Solve 그래프의 노드로 적용되어 있습니다. 이 솔버는 메시에 대한 표준 애니메이션이 전부 처리된 후 포스트 프로세스 레이어의 모델에 수정 사항을 적용합니다.

컨트롤 릭 에셋의 풀 바디 IK 솔버

예를 들어 고대 괴물체가 보여주는 에너지 빔 공격의 경우, 팔의 위치는 에코의 위치를 추적하는 블루프린트 로직의 제어를 받습니다. 그리고 풀 바디 IK 솔버는 고대 괴물체가 빔을 발사하면 나머지 몸에 대한 수정 사항을 처리합니다.

빔을 발사하는 고대 괴물체 gif

좀 더 디테일한 예로, 에코는 풀 바디 IK를 사용하여 게임 내 다양한 지형에 적응합니다. 지면의 경사에 따라 발디딤을 조정하고, 험한 지면 위로 이동할 때는 둔부의 위치를 바꾸는 식입니다. 이를 통해 보다 다양하고 자연스러운 움직임이 만들어지며, 특히 에코가 경사를 오르내리거나 장애물 위로 올라갈 때 그 효과가 빛을 발합니다.

내리막을 걷는 에코 gif

풀 바디 IK에 관련된 자세한 내용은 풀 바디 IK 문서를 참고하세요.

모듈형 게임플레이 빌드

언리얼 엔진 5는 게임플레이를 모듈형으로 빌드하는 프레임워크도 제공하며, 에인션트의 협곡 역시 다크 월드로 전환할 때 이 시스템을 활용합니다. 이 경우, 에코의 환경만 바뀌는 것이 아니라 새로운 입력 바인딩과 메커니즘이 런타임에 도입됩니다.

게임 피처 플러그인을 활용한 게임플레이 확장

라이트 다트를 던지는 에코

라이트 월드에서 에코는 빛나는 조각을 원격 조종하여 주변 환경을 둘러볼 수 있습니다. 다크 월드에서는 라이트 다트를 던져 장애물을 파괴하고 적들에게 피해를 입힐 수 있습니다. 이러한 시스템은 별개의 게임 피처 플러그인 으로 구현됩니다. 포트나이트의 파이프라인에서 영감을 받은 이 시스템을 사용하면 서로 완전히 독립된 기능들을 개발하거나 메인 게임에 원하는 대로 통합할 수도 있습니다. 심지어는 런타임에도 로드 및 언로드할 수 있습니다.

새 게임 피처를 생성하려면 플러그인 창을 열고 플러그인 생성 을 클릭합니다. 그러면 베이스 플러그인 유형으로 사용할 게임 피처를 선택할 수 습니다.

게임 피처 플러그인 생성

생성된 플러그인은 프로젝트의 'Plugins' 디렉터리에서 찾을 수 있습니다.

표준 플러그인을 사용하는 경우 게임은 해당 플러그인에서 클래스와 에셋을 참조할 수 있지만, 플러그인은 베이스 게임 코드나 에셋을 들여다 볼 수 없습니다. 게임 피처에서는 이 같은 종속성 관계가 뒤바뀝니다. 게임 피처는 베이스 게임에 종속되지만, 베이스 게임은 게임 피처의 클래스나 함수를 참조할 수 없습니다. 따라서 게임 피처의 구현은 마치 모드와 비슷하게 베이스 게임에서 각종 엘리먼트를 확장하고 수정하는 방식을 사용하게 됩니다.

에인션트의 협곡에서 라이트 다트와 고대 괴물체는 모두 AncientBattle 게임 피처에 포함되어 있습니다. 에코가 특수 어빌리티를 획득하고 사용하는 데 필요한 기본 시스템은 이미 에코의 베이스 액터에 빌드되어 있지만 라이트 다트는 자신에 대한 구현을 자체적으로 제공합니다. 고대 괴물체와 대미지에 반응하는 다른 액터들 역시 이 게임 피처에 포함되어 있으며 전투 시스템 전체가 이 모듈 내에 완전히 캡슐화되어 있습니다. 이 피처 콘텐츠는 AncientBattle Content 폴더에서 찾을 수 있습니다.

콘텐츠 드로어에서 게임 피처 콘텐츠를 보려면 세팅 버튼을 클릭하고 플러그인 콘텐츠 표시 에 체크한 후 AncientBattle Content 폴더를 찾으면 됩니다.

AncientBattle 콘텐츠 폴더

라이트 다트와 관련된 모든 에셋, 즉 애니메이션 비주얼 이펙트, UI 엘리먼트, 블루프린트 등은 모두 이 폴더에 있습니다. 폴더의 최상위 레벨에는 'AncientBattle'이라는 게임 피처 데이터 에셋이 있습니다.

AncientBattle 게임 피처 데이터 에셋

이 에셋에는 플러그인이 로드 및 언로드 시 어떻게 작동해야 할지 알려주는 인스트럭션이 포함되어 있습니다. 라이트 다트 플러그인에는 'LightDart' 게임플레이 어빌리티를 에코에게 추가하고, 에코가 해당 어빌리티를 활성화하는 입력을 구성하며, 에코에게 필요한 컴포넌트를 어태치하라는 인스트럭션이 포함되어 있습니다.

게임플레이 동안 이러한 기능은 다크 월드 전환이 트리거될 때 BP_DarkWorldRift 블루프린트에서 토글됩니다.

BP_DarkWorldRift 블루프린트

게임의 메인 코드베이스나 에셋에서 'LightDart'에 대한 추가적인 레퍼런스는 필요하지 않습니다. 일단 에코에게 추가된 후에는 게임 피처 데이터의 인스트럭션 덕분에 모든 컴포넌트를 사용할 준비가 끝납니다.

이 시스템 덕분에 개발자는 특정 시간 동안 활성화되는 기능들을 손쉽게 제어할 수 있습니다. 특히 제한된 타임프레임이나 범위 내에서 작동하는 메커니즘을 다룰 때 유용합니다. 여기서는 라이트 월드와 다크 월드가 전환될 때마다 에코의 라이트 다트 능력을 토글할 때 사용했지만, 온라인 게임의 한정 이벤트, 짧은 시네마틱 세그먼트 또는 게임플레이 동안에 발생하는 주요 모드 변경 등에도 쉽게 적용할 수 있습니다.

게임 피처 플러그인에 대한 자세한 내용과 프로젝트에서 어떻게 구현해서 사용하는지에 대해서는 게임 피처 플러그인 문서를 참고하세요.

향상된 입력 시스템을 통한 유연한 제어

언리얼 엔진 5에는 새로운 향상된 입력 시스템 이 도입되었으며, 이 시스템은 에인션트의 협곡에서도 에코를 제어하는 데 사용되었습니다. 이 시스템은 에코의 동작과 어빌리티를 처리할 뿐만 아니라, 컨텍스트에 따라 달라지는 입력 엘리먼트를 처리하는 방식도 제공합니다. 여기에는 특정 제어의 상황 데이터와 플레이어 상태에 따른 입력 추가 및 제거까지 포함됩니다.

언리얼 엔진 4의 입력 시스템에서는 원본 입력을 액터의 이벤트 그래프 내에서 이벤트로 처리한 반면에 향상된 입력 모델에서는 콘텐츠 드로어의 에셋으로 표현되는 입력 액션 으로 제어합니다. 에인션트의 협곡에 포함되어 있는 입력 액션 대부분은 Content > AncientGameContent > Input 에서 찾을 수 있습니다. 다크 월드 전용 입력 액션은 AncientBattle_Content > Input 에, 호버 드론 전용 입력 액션은 HoverDrone_Content > Input 에 포함되어 있습니다.

콘텐츠 드로어의 입력 액션

여기에는 IA_MoveForwardIA_MoveRight 같은 일반적인 제어 뿐만 아니라, 에코가 캠프파이어에서 일어설 때 사용되는 IA_SitStand 처럼 상황에 매우 민감한 제어도 포함되어 있습니다. 입력 액션을 실행해서 다양한 축 값을 비롯하여 각종 반환값의 유형을 설정할 수도 있습니다. 또한 입력을 활성화하는 데 필요한 컨텍스트 요구 사항을 추가할 트리거 목록을 제공하거나, 게임플레이에 전달하기 전에 입력값을 처리하는 모디파이어 를 설정할 수도 있습니다.

입력 액션 디테일

트리거와 모디파이어로는 액터에 대한 게임플레이 코드의 입력 데이터를 수동으로 필터링하지 않고도 입력을 활성화하는 데 필요한 데드 존, 반응 커브 또는 컨텍스트에 따른 액션을 처리할 수 있습니다. 트리거와 모디파이어를 블루프린트나 C++ 클래스로 정의하여 프로젝트에 더 추가할 수도 있습니다.

일단 콘텐츠 드로어에서 InputAction을 정의한 후에는 블루프린트에서 이벤트를 통해 액세스할 수 있습니다. 에코를 제어하는 InputAction은 BP_EchoCharacter에서 처리됩니다.

BP_EchoCharacter 블루프린트에서의 입력 액션

이러한 이벤트는 표준 입력 이벤트와 비슷하게 작동하지만 입력 액션에 대해 더 많은 컨텍스트 정보를 제공합니다. 여기에는 액션의 시작 시점, 종료 시점, 현재 진행 여부, 강제 취소 뿐만 아니라 액션이 활성 상태인 시간까지 모두 포함됩니다. 입력 이벤트 값은 InputAction 에셋에 나열된 Value Type 에 의해 정의됩니다. InputAction에 나열된 모든 모디파이어는 이 값이 출력되기 전에 먼저 적용됩니다.

Input Mapping Contexts 는 InputAction을 물리적 제어에 매핑하는 동작을 처리합니다. 이러한 에셋은 InputAction과 함께 찾을 수 있습니다. IM_ThirdPerson_Controls_InputMapping 에는 에코의 제어 대다수가 포함되어 있으며, IM_LightDartInputMappings 에는 라이트 다트 어빌리티 및 달리기 동작에 대한 추가 제어가 포함되어 있습니다.

입력 액션 매핑

이러한 것들은 언리얼 엔진 4의 입력 시스템에서 액션 및 축 매핑과 비슷하게 구성되어 있지만 InputAction을 물리적 입력에 매핑하는 것 뿐만 아니라 모디파이어와 트리거를 특정 제어 구현에 적용할 수도 있습니다. 예를 들어 에코는 IA_MoveForward를 읽고 전진할지 또는 후진할지를 결정합니다. W 키에는 모디파이어가 전혀 추가되어 있지 않은 반면에 S 키에는 무효화 모디파이어가 사용되어 음수 입력으로 읽히게 됩니다.

입력 매핑 컨텍스트의 장점 중 한가지는 런타임에도 개별 플레이어에 대해 추가하고 제거할 수 있다는 것입니다. 예를 들어 AncientBattle 게임 피처 플러그인은 로드될 때 IM_LightDartInputMappings를 추가합니다.

라이트 다트 입력 매핑 디테일

이 게임 피처 액션은 이 프로젝트 전용으로 C++를 사용하여 생성되었습니다. 런타임에 입력 매핑이 추가 및 제거되는 또 다른 예시로는, EnhancedInputComponent 를 확장하는 HoverDrone 게임플레이 피처의 C++ 클래스인 HoverDroneControlsComponent 를 들 수 있습니다.

이 예시는 향상된 입력 시스템이 게임의 입력을 관리하는 데 필요한 확장성과 유연성이 매우 뛰어난 프레임워크를 제공한다는 것을 보여줍니다. 이러한 덕분에 개발 과정에서 게임플레이 코드를 대대적으로 변경하지 않고도 게임의 입력을 손쉽게 확장하고 조정할 수 있습니다. 또한 이 시스템은 컨텍스트나 특정 상황에 따라 달라지는 입력을 위한 다양한 툴도 제공합니다. 자세한 내용은 향상된 입력 시스템 문서를 참고하세요.

다이내믹 인터랙티브 오디오

언리얼 엔진 5에서는 비주얼, 게임 메커니즘 및 월드를 자유롭게 구성할 수 있는 각종 툴이 제공될 뿐만 아니라, 완전히 새로운 오디오 시스템을 통해 게임의 오디오도 한층 더 강력하게 제어할 수 있습니다. 이 섹션에서는 에인션트의 협곡에서 새로운 툴을 활용하여 에코와 고대 괴물체의 마지막 조우 장면을 보다 세련되고 역동적으로 다듬을 수 있었던 방법에 대해 알아보겠습니다.

메타사운드

메타사운드 는 언리얼 엔진 5에 새롭게 도입된 하이 퍼포먼스 오디오 시스템으로, 오디오 디자이너에게 완벽한 기능을 갖춘 동적 신호 처리(DSP) 그래프를 제공합니다. 이 시스템은 프로시저럴 사운드 이펙트와 음악을 완전히 처음부터 새롭게 만들어낼 수 있으며, 오디오 디자이너가 블루프린트 API 기능을 사용하여 게임플레이 이벤트와 인게임 데이터를 기반으로 사운드를 조작할 수 있도록 지원합니다. 따라서 오디오 디자이너는 개발 과정에서 뛰어난 유연성을 확보할 수 있고, 빠른 반복작업와 복잡하고 동적인 사운드를 지원하며, 게임 디자인이 바뀌더라도 여기에 맞게 사운드 이펙트를 손쉽게 변경할 수 있습니다.

메타사운드의 잠재력과 다양한 활용 사례를 살펴볼 수 있는 예시는 Audio > MetaSounds 아래에 있는 AncientBattle Content 폴더의 sfx_Golem_RobotBlast_Meta 에서 확인할 수 있습니다.

이 메타사운드는 프로시저럴 방식으로 생성된 오디오와 .wav 샘플을 조합하여 고대 괴물체의 빔 충전 사운드 이펙트를 만들어냅니다. 첫 번째 섹션에서는 충전음의 합성과 조절을 대부분 처리하며, 이 작업은 완전히 프로시저럴 방식으로 진행됩니다.

인트로 웨이브샷 웨이브 섹션에서는 보조 .wav 파일을 사용하여 사운드에 텍스처 레이어를 한 겹 더합니다. 인트로 웨이브 섹션은 빔이 처음 충전되기 시작할 때 트리거됩니다. 샷 웨이브 섹션에도 빔이 충전되기 시작할 때 트리거되는 사운드가 있지만, 충전 사운드가 완전히 재생된 후에 트리거되는 컴포넌트도 갖추고 있습니다.

인트로 웨이브 및 샷 웨이브 섹션

그래프의 중간 섹션에서는 위 두 섹션을 서로 믹스 및 필터링하여 최종 스테레오 믹스 를 만들고 출력 노드로 피딩하여 최종 사운드를 재생합니다.

트리거, 파라미터 및 .wav 파일은 입력 역할을 수행하며, 메타사운드 그래프는 해당 정보를 DSP 노드 기반으로 처리한 후 최종 사운드 출력으로 믹스합니다. 이 시스템은 오디오 디자이너에게 머티리얼 에디터만큼이나 강력하고 유연한 사운드 워크플로를 제공해줍니다. 이 워크플로는 일반적인 사운드 파라미터와 인게임 데이터 모두에 맞춰 조정이 가능하며 단일 사운드 디자인 환경에서 게임 개발 팀과 더욱 긴밀하게 협업할 수 있도록 지원합니다.

예를 들어 전투 시퀀스 개발 과정에서는 고대 괴물체가 빔을 충전하는 시간을 세부 조정하는 데 상당한 시간에 걸쳐 반복 작업을 진행했습니다. 다른 사운드 디자인 워크플로를 사용했다면 게임플레이의 변경 사항에 따라 사운드를 아예 다시 만들어야 했을 수도 있습니다. 그 대신, sfx_Golem_RobotBlast_meta 메타사운드는 ChargeDuration 이라는 시간 입력을 사용하여 해당 사운드의 재생 시간을 결정했습니다. 메인 충전 사운드는 전적으로 프로시저럴 방식으로 처리되기 때문에 주어진 입력에 따라 그 길이가 자동으로 조정됩니다.

실제로 작동하는 모습을 보려면 Inputs 목록에서 ChargeDuration을 선택하여 4.0초인 기본값을 변경한 후 사운드를 재생해보세요.

ChargeDuration 시간 입력

게임 디자인 팀은 이 기능 덕분에 필요할 때마다 고대 괴물체의 충전 시간을 조정하면서도 사운드를 다시 만들 필요가 없었습니다.

이외에도 오디오 파라미터 인터페이스를 사용하여 게임플레이 코드에서 활성화할 수 있는 트리거를 비롯하여 다양한 입력 파라미터를 활용할 수 있습니다. 이러한 요소들을 사용하여 시작, 중지 및 중간 이벤트 등을 프로시저럴 방식으로 처리하는 메타사운드를 생성할 수 있습니다. 예를 들어 총을 발사하는 액션에서는 원래 시작, 중지 및 연속 사격 등에 따라 다수의 사운드가 필요했지만 이 시스템에서는 하나의 메타사운드로 합칠 수 있습니다.

StopBeam 이벤트

이 API를 사용하면 다른 오디오 파라미터도 조작할 수 있습니다. 즉, 메타사운드를 사용하면 복잡한 사운드 이펙트에 대해서도 정확한 타이밍 샘플링을 적용하여 사운드 재생 로직을 완벽하게 캡슐화할 수 있습니다.

메타사운드는 유연한 디자인과 무한한 베리에이션을 지원할 뿐 아니라 상당한 퍼포먼스 향상도 보장합니다. 메타사운드 그래프는 개별 사운드 이펙트가 일반적으로 디코딩되는 방식과 유사하게 비동기 방식으로 렌더링되므로 CPU 리소스를 처리하는 데 있어서 뛰어난 유연성을 발휘합니다. 또한 메타사운드는 진정한 의미의 오디오 렌더링 시스템이기 때문에 각 메타사운드는 복잡도에 상관 없이 단일 인게임 보이스를 표현해줍니다. 즉, 메타사운드 에디터에서 재생되는 사운드는 항상 인게임 사운드와 정확하게 일치하며, 인게임 보이스 관리 역시 이전 시스템에 비해 예측 가능성이 훨씬 뛰어납니다. 또한 향후 언리얼 엔진 5에서는 특정 메타사운드의 퍼포먼스를 개별적으로 프로파일링할 수 있도록 지원할 예정이므로 이를 통해 오디오 퍼포먼스 평가 워크플로가 단축됩니다.

메타사운드에 관련된 자세한 내용은 [메타사운드 문서]를 참고하세요.

쿼츠 오디오 동기화

보통은 게임플레이와 오디오 스레드가 처리되는 방식이 일치하지 않기 때문에 정확한 타이밍에 맞춰 이벤트를 동기화하기가 어렵습니다. 쿼츠 는 게임플레이에서 정확한 오디오 재생 샘플링의 타이밍을 스케줄링하는 클락을 제공합니다. 쿼츠를 사용하여 사운드 타이밍을 스케줄링하면 스케줄링된 재생과 관련된 특정 타이밍을 기반으로 델리게이트를 구성할 수 있습니다. 쿼츠 클락 은 사운드 재생에 대한 이벤트 델리게이트를 제공하여 게임플레이의 의도된 타이밍을 예측하고 다른 게임플레이 이벤트와 적절하게 동기화할 수 있습니다. 이를 통해 정확한 샘플링을 제공하는 동적 음악 시스템은 물론이고 오디오와 고도로 동기화되는 게임 시스템을 만들 수 있습니다.

에인션트의 협곡에서는 음악의 박자와 마디에 기반하여 이벤트를 스케줄링하는 Underscore Subsystem 이라는 동적 음악 시스템에서 쿼츠를 사용했습니다. 여기서 눈여겨 볼 점으로는, 에코와의 대결에서 고대 괴물체가 음악의 큐 타이밍을 토대로 레이저 발사 시점을 선택한다는 것입니다. 이 시스템의 클래스는 Underscore C++ Classes 에 포함되어 있습니다.

콘텐츠 드로어의 쿼츠 Underscore Subsystem

이 시스템의 음악은 UnderscoreCue 라는 특수한 데이터 에셋에 포함되어 있습니다. 여기에는 음악 큐의 박자표, 다양한 음악 섹션, 트랜지션, 그리고 음악 스테이트 및 이벤트와 관련된 기타 정보 등이 포함됩니다. 고대 괴물체와의 전투 음악은 AncientContent > Audio > UnderscoreCues 폴더의 Arena_Battle_Cue 에셋에 포함되어 있습니다.

Arena_Battle_Cue 에셋 디테일

여기에는 음악 큐를 구성하는 클립에 대한 레퍼런스와 음악의 BPMTime Signature 가 포함되어 있습니다. 이 데이터는 음악에 대한 설명으로, 음악 시스템이 쿼츠 클락을 구성하고 각 섹션 간의 트랜지션 타이밍을 관리하는 데 사용됩니다. 음악의 인트로는 전투 음악의 주요 바디로 트랜지션되도록 구성되었으며, 다양한 상태로 구분되어 있습니다. 이러한 상태는 다양한 인게임 이벤트를 기반으로 발생하며, 음악은 박자가 동기화된 엔딩으로 끝을 맺습니다. 이 모든 것이 매끄럽고 정확한 샘플링으로 이뤄지는 것은 쿼츠 덕분입니다.

이러한 섹션들이 인게임 이벤트와 연관되는 예시를 보려면 AncientBattle Content 디렉터리의 BP_LaserBP_AncientOne 에서 이 시스템의 후크를 참조하세요. BP_Laser에는 레이저에 대한 로직 외에도 이벤트를 'Underscore Subsystem'에 바인딩하여 음악이 레이저 공격을 트리거하는 호출을 포함하고 있습니다.

그래프에서 레이저에 사용된 UnderScore Subsystem 음악 큐

또한 'Underscore Subsystem'에 대한 호출도 포함되어 있어, 빔 공격이 멈추거나 고대 괴물체가 패배했을 때처럼 음악의 다른 영역으로 트랜지션할 시점을 알려주기도 합니다.

UnderScore Subsystem 음악 트랜지션 큐

쿼츠를 사용하여 동적 음악 시스템 및 게임플레이와 오디오 간의 정확한 상호작용을 구현하는 방법에 대한 자세한 내용은 [쿼츠 문서]를 참조하세요.

마치며

라이트 다트로 고대 괴물체를 공격하는 에코

지금까지 살펴본 것처럼, 언리얼 엔진 5는 고퀄리티의 대작 프로젝트를 그 어느 때보다도 손쉽게 제작할 수 있도록 도와주는 수많은 툴을 제공합니다. 에인션트의 협곡은 이러한 툴을 모두 사용해서 이룰 수 있는 프로덕션의 의미를 보여주는 샘플이자 동일한 툴로 게임의 개발 프로세스를 간소화할 수 있음을 입증하는 좋은 사례이기도 합니다. 언리얼 엔진 5를 사용하는 개발자들은 더 적은 단계만 거쳐도 더 나은 퀄리티의 비주얼을, 더 적은 작업만으로도 더 큰 월드를, 그리고 제작자의 역량을 극대화해주는 툴을 활용하여 보다 디테일하게 묘사된 상호작용과 환경을 완성할 수 있습니다.