에인션트의 협곡 샘플

UE5 얼리 액세스 쇼케이스 프로젝트인 에인션트의 협곡을 안내합니다.

Choose your operating system:

Windows

macOS

Linux

에인션트의 협곡(Valley of the Ancient)언리얼 엔진 5 의 얼리 액세스 기능을 보여주는 짧은 게임플레이 세그먼트입니다. 플레이어는 UE5 발표 트레일러에 등장하는 에코(Echo)를 조종하여 불모지를 탐험하면서 불가사의한 어둠의 영역으로 통하는 차원문을 찾습니다. 게임 내에서 에코는 일련의 장애물을 거치고 거대한 에인션트 원(Ancient One)과 전투를 치릅니다. 이 샘플을 통해 UE5에서 사용할 수 있는 다양한 편의 기능과 향상된 렌더링, 혁신적인 워크플로를 간략하게 살펴볼 수 있습니다.

이 문서에서는 이러한 흥미로운 새 기능을 살펴보고 에픽게임즈의 팀이 이러한 기능을 사용하여 리얼타임 렌더링 기술이 가진 가능성의 한계를 뛰어넘는 동시에 방대한 고퀄리티 씬 제작 워크플로를 크게 간소화한 방법을 안내합니다.

개요

에인션트의 협곡의 주요 특징은 다음과 같습니다.

  • 나나이트와 루멘으로 렌더링된 고급 비주얼

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

  • 향상된 카오스 프랙처 워크플로를 통해 생성된 디스트럭터블 에셋

  • 하나의 맵에서 많은 팀원이 더 쉽게 함께 작업할 수 있는 새로운 레벨 파일 및 액터 구성 패러다임

  • 풀 바디 인버스 키네마틱(Inverse Kinematics, IK)과 모션 워핑을 사용하여 게임플레이에 캐릭터 모션을 맞추는 유연한 리얼타임 애니메이션

  • 런타임 시 완전히 로드하고 언로드할 수 있는 모듈형 게임플레이 시스템

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

  • 쿼츠를 사용하여 게임플레이와 음악을 동기화하는 다이내믹 음악 시스템

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

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

클릭하면 이미지가 확대됩니다.

UE5의 새로운 기능을 보여주는 샘플 프로젝트(Sample project showcases new features in UE5) 항목까지 스크롤한 다음, 샘플 받기(Get the Sample) 를 클릭하여 다운로드합니다.

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

권장 시스템 사양

에인션트의 협곡 샘플은 특히 그래픽 집약적인 샘플로서 안정적인 프레임 레이트로 실행하려면 강력한 비디오 카드가 필요합니다. 또한, 나나이트와 버추얼 텍스처(Virtual Textures)는 읽기 속도가 빨라야 최고의 결과를 생성하므로 SSD에 샘플을 설치하는 것이 좋습니다. 권장 하드웨어 사양은 다음과 같습니다.

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

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

  • 3.4GHz 12 코어 CPU

  • 64GB 시스템 RAM

  • GeForce RTX 2080/AMD Radeon 5700 XT 이상

  • 3.4GHz 12 코어 CPU

  • 32 GB 시스템 RAM

  • GeForce GTX 1080/AMD RX Vega 64

나나이트는 NVIDIA Maxwell 세대 GPU 및 AMD GCN 세대 GPU 이상에서만 지원됩니다. 또한, 그래픽 카드 드라이버가 최신인지도 확인합니다.

낮은 사양의 시스템에서는 뷰포트 스크린 퍼센티지 세팅을 조정하여 더 좋은 성능을 얻을 수 있습니다. 최소 사양에서는 스크린 퍼센티지를 50% 이하로 조정하는 것이 좋습니다. 에디터 뷰포트 왼쪽 상단에 있는 뷰포트 옵션 메뉴스크린 퍼센티지(Screen Percentage) 슬라이더를 사용하여 설정할 수 있습니다.

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

아니면, 런타임에서 r.ScreenPercentage 콘솔 명령을 사용하여 이 값을 설정할 수 있습니다.

UE5 에디터 숙지하기

UE5의 언리얼 에디터 는 언리얼 엔진 4 에디터의 모든 기능을 그대로 보유하고 있지만, 에인션트의 협곡 샘플을 살펴보기 전에 간단하게 숙지해야 할 몇 가지 워크플로와 사용자 경험 개선 사항이 있습니다.

UE5 메인 화면

UE5 에디터 변경사항에 대한 더 포괄적인 정보는

[에디터 개선 사항](EditorImprovements)
에서 확인할 수 있습니다. 이 섹션에서는 이 샘플 탐색과 관련된 변경사항만 간략하게 소개합니다.

콘텐츠 드로어

콘텐츠 드로어(Content Drawer) 는 에디터의 왼쪽 하단에 있습니다. 콘텐츠 드로어 버튼을 클릭하거나 Ctrl+스페이스 바 를 눌러 콘텐츠 드로어를 불러오거나 닫을 수 있습니다.

UE4에서의 작동 방식과 비슷하게, 레이아웃에 고정(Dock in Layout) 을 클릭하면 콘텐츠 브라우저(Content Browser)가 고정되어 계속 표시됩니다. 고정된 콘텐츠 브라우저와 콘텐츠 드로어를 동시에 모두 사용할 수 있으며, 메인 툴바의 콘텐츠(Content) 드롭다운을 클릭하여 콘텐츠 브라우저를 관리할 수도 있습니다. 이러한 방식 덕분에 콘텐츠 브라우저가 더욱 유연해졌으며, 콘텐츠 브라우저를 사용하지 않을 때 에디터 안의 화면 공간을 더 넓게 사용할 수 있게 되었습니다.

콘텐츠 브라우저 자체에서는 레이아웃이 개편되어 왼쪽에 폴더 트리가 계속 표시되며, 새로운 세팅(Settings) 메뉴를 통해 뷰 타입과 섬네일 크기, 콘텐츠 필터와 같은 에셋 표시 방식을 환경설정할 수 있습니다.

에디터 모드 액세스하기

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

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

에디터 모드에는 UE4 사용자에게 익숙한 모드뿐 아니라 강력한 새 기능이 포함된 몇 가지 새로운 모드도 추가되었습니다. 포함된 모드는 다음과 같습니다.

번호

에디터 모드

설명

1

선택

게임 월드에서 에셋을 선택하고 에셋의 디테일을 편집하기 위한 디폴트 편집 모드입니다.

2

랜드스케이프

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

3

폴리지

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

4

메시 페인팅

환경에 있는 메시의 버텍스 페인팅을 위한 툴입니다. 색, 가중치, 텍스처가 지원됩니다.

5

프랙처

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

6

브러시 편집

고전적인 브러시 지오메트리 에디터입니다. 펜 툴을 사용하여 직교 뷰포트에 브러시를 드로하고, 다른 툴을 사용하여 셰이프를 원하는 대로 다듬습니다.

7

애니메이션

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

8

모델링

폴리곤 지오메트리 편집을 위한 전체 툴세트입니다. 기본 프리미티브로부터 모델링하거나 게임 월드의 개별 메시를 수정합니다.

샘플 탐색하기

샘플이 열리면, 시작(Startup) 맵에서 시작됩니다. 대부분의 에인션트의 협곡 콘텐츠는 AncientContent > Maps 폴더에 있는 AncientWorld 맵에 포함되어 있습니다.

이 월드를 지원하는 대부분의 파일은 게임의 콘텐츠(Content) 디렉터리에 있지만, 호버 드론(Hover Drone)과 에인션트 원의 에셋은 게임의 베이스 프로젝트와 별도로 게임 피처 플러그인(Game Feature Plugin)에 포함되어 있습니다. 호버 드론 에셋은 HoverDrone Content 디렉터리에 있지만, 빛의 화살(Light Dart) 능력과 에인션트 원과의 전투는 AncientBattle Content 디렉터리에 있습니다. 이러한 디렉터리를 표시하려면, '콘텐츠 드로어(Content Drawer)'에서 '세팅(Settings)' 버튼을 클릭한 다음, 플러그인 콘텐츠 표시(Show Plugin Content) 를 토글합니다.

콘텐츠 드로어 세팅에서 강조 표시된 플러그인 콘텐츠 표시

에인션트의 협곡은 거대한 월드를 보여주지만, UE4에서 통상적으로 레벨 스트리밍에 사용하던 서브씬은 없습니다. 대신, 이 샘플에서는 월드 파티션데이터 레이어 를 사용하여 씬을 별도의 편집할 수 있는 부분으로 나눕니다.

월드를 탐색하려면, 창(Window) > 월드 파티션(World Partition) 을 클릭합니다. 그러면 월드 파티션 창이 열리고 단순화된 월드의 맵이 표시됩니다.

월드 파티션 창

마우스 휠로 월드의 다양한 지역을 확대할 수 있으며, 이 맵의 셀을 클릭하고 드래그하여 선택할 수 있습니다. 셀을 선택하고 우클릭한 다음, 선택한 셀 로드(Load Selected Cells) 를 클릭하면 선택한 셀이 메인 뷰포트에 로드됩니다. 마찬가지로, 선택한 셀 언로드(Unload Selected Cells) 로 표시하고 싶지 않은 셀을 제거하여 컴퓨터의 부하를 줄일 수 있습니다.

한 번에 월드 파티션의 모든 셀을 로딩하는 것은 추천하지 않으며, 확인하거나 편집하고 싶은 레벨의 섹션만 로드하는 것이 좋습니다. 로드할 수 있는 셀의 수는 시스템에서 이용할 수 있는 메모리의 양에 따라 달라집니다. 이 시스템에 대한 자세한 내용은 아래의 월드 파티션 섹션을 참고하세요.

월드 파티션 창 클로즈업

다크 월드와 라이트 월드를 구성하는 레이어를 보려면, 창(Window) > 데이터 레이어(Data Layers) 를 클릭하여 데이터 레이어 창을 불러옵니다.

데이터 레이어 창

이 창을 사용하여 씬을 구성하는 모든 레이어를 활성화하거나 비활성화할 수 있습니다. 다크 월드를 보려면, 다크 월드 데이터 레이어를 활성화합니다. 라이트 월드를 보려면 캠프파이어 대체(Campfire Replace)폴리지(Foliage) , 영웅 영역 산맥(Hero Area Mountain Range) 데이터 레이어를 활성화합니다. 캠프파이어 지오메트리(Campfire Geometry) 데이터 레이어는 항상 활성화되어 있어야 합니다. 이러한 레이어를 활성화하거나 비활성화하여 양쪽 버전의 월드를 비교할 수 있습니다.

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

고급 비주얼, 빠른 반복작업

언리얼 엔진 5의 목표는 고퀄리티 비주얼의 새 표준을 제공하는 것뿐만 아니라 월드의 리얼타임 고해상도 애플리케이션을 위해 가장 접근성이 좋은 파이프라인을 제공하는 것입니다. 이 섹션에서는 에인션트의 협곡의 레벨 오브 디테일에 UE5의 새로운 렌더링 기능이 기여한 방식과 이를 구성하는 팀 프로세스의 속도와 편의성에 대해 자세하게 설명합니다.

퀵셀 메가스캔 에셋으로 바로 액세스하는 경로

유타 메가스캔 에셋

유타주 모압에서 수집한 퀵셀 메가스캔 에셋은 에인션트의 협곡 환경의 에셋 중 약 90%를 표현하면서 에인션트의 협곡의 스태틱 메시와 텍스처 라이브러리의 주축을 이루고 있습니다. 이러한 에셋은 콘텐츠 드로어 내 AncientContent > Megascans 폴더에 있습니다.

콘텐츠 드로어의 AncientContent > Megascans 폴더

이 모든 에셋은 유타의 협곡(Canyons of Utah) 메가스캔 팩에서 이용할 수 있습니다. 또한, 퀵셀 브리지가 이제 언리얼 에디터에 직접적으로 통합되어 메가스캔 에셋을 임포트하거나 관리할 때 외부 프로그램을 사용할 필요가 없습니다. UE5에서는 필요한 머티리얼 인스턴스와 메시를 자동으로 생성하므로, 이러한 머티리얼 인스턴스와 메시를 게임 내에서 바로 사용할 수 있습니다. 아래 섹션에서는 UE5에서 이러한 고해상도 에셋을 얼마나 쉽게 처리하는지, 그리고 배경 아트 팀에서 이 툴을 사용하여 놀라울 정도로 유연하게 랜드스케이프를 제작한 방식을 확인할 수 있습니다.

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

이러한 에셋 중 어느 에셋도 기존의 LOD를 사용하지 않으며, 추가로 최적화할 필요도 없습니다. 대신, 모든 에셋에 나나이트 가 활성화되었습니다. 나나이트는 디스크에서 스태틱 메시 에셋을 스트리밍한 다음, 가상화된 지오메트리를 사용하여 이러한 에셋을 표현하고, 사용자 뷰포트의 해상도를 기반으로 사용하는 폴리곤의 수를 동적으로 조정합니다. 버추얼 텍스처링은 텍스처 디테일 측면에서 이와 비슷하게 행동합니다. 이러한 표현은 사용자가 씬을 이동함에 따라 즉시 LOD를 업데이트하면서 변경됩니다. 가까운 오브젝트일수록 더 많은 디테일이 적용되고 먼 오브젝트일수록 더 적게 적용됩니다. 하지만, 화면의 총 디테일은 대체적으로 균일합니다.

나나이트 스트리밍 디테일

나나이트 덕분에 에인션트의 협곡 환경에서 놀라울 정도로 폴리곤 밀도가 높은 메가스캔 에셋 수백 개를 추가 준비 없이 씬에서 직접 사용할 수 있습니다. 수천만 개의 폴리곤이 가중치로 적용되고 거대한 텍스처를 사용하는 절벽 면조차 테크니컬 아티스트가 추가 설정할 필요 없이 즉시 렌더링됩니다. 하이 폴리곤 Zbrush 스컬프트도 게임 내에서 직접 사용할 수 있습니다.

나나이트 작동을 보려면, 뷰 모드 드롭다운을 클릭하고 뷰 모드를 '라이트포함(Lit)'에서 나나이트 시각화(Nanite Visualization) > 트라이앵글(Triangles) 로 변경합니다.

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

이렇게 하면 실시간으로 나나이트의 트라이앵글 출력이 표시됩니다.

표준 렌더링

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

나나이트는 디포메이션을 지원하지 않으므로, 스태틱 메시에서만 작동합니다. 하지만, 이것만으로도 개발 환경의 파이프라인을 상당히 단순화할 수 있습니다. 나나이트가 스켈레탈 디포메이션을 사용할 수는 없기는 하지만, 피날레에 등장하는 거대한 에인션트 원은 스켈레탈 메시에 연결된 스태틱 메시를 사용하며, 나나이트를 활용하여 초고해상도의 갑옷을 렌더링합니다.

표준 렌더링

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

나나이트 사용법과 구성법에 대한 자세한 내용은 나나이트 문서를 참조하세요.

루멘 글로벌 일루미네이션

이렇게 디테일한 협곡의 라이팅은 언리얼 엔진 5의 새로운 완전한 다이내믹 글로벌 일루미네이션 및 리플렉션 시스템인 루멘에 의해 구동됩니다. 루멘은 직접광과 지오메트리 변화에 따라 간접광을 반영하는 동적이고 사실적인 씬을 생성하며, 새로운 기법과 기존 기법을 결합하여 실시간으로 고퀄리티의 결과를 만들어냅니다. 루멘은 차세대 콘솔과 하이엔드 PC를 염두에 두고 제작되었으며, 언리얼 엔진 5.0이 출시될 때 이러한 플랫폼에서 30~60FPS 달성을 목표로 하고 있습니다.

GI/스카이라이팅 적용

GI/스카이라이팅 미적용

루멘은 확장 가능하며, 소프트웨어 및 하드웨어 레이 트레이싱 모드를 사용하여 광범위한 DX11 및 DX12 지원 하드웨어를 지원합니다. 에인션트의 협곡에서는 화면 트레이스(Screen Traces) (또는 스크린 스페이스 트레이싱)와 표면 캐시(Surface Cache) 표현을 결합하여 씬에서 간접광을 생성하는 소프트웨어 레이 트레이싱을 사용합니다. 루멘은 화면 트레이스를 사용하여 개별 메시의 부호화된 디스턴스 필드(Signed Distance Field)에서 생성되는 낮은 품질의 표면 캐시 때문에 발생할 수 있는 불일치를 처리합니다. 표시(Show) > 시각화(Visualize) > 루멘 씬(Lumen Scene) 을 사용하여 표면 캐시를 시각화할 수 있습니다. 표면 캐시는 처음 200m 동안만 작동한 후에 디스턴스 씬의 화면 트레이스로 돌아갑니다.

루멘은 다용도이며 나나이트의 가상화된 지오메트리와 기존의 스태틱 메시 지오메트리 모두에서 작동할 수 있는 퀄리티 옵션이 있고, 화면 트레이스는 스킨을 입힌 메시가 간접광을 수신하고 간접광에 기여할 수 있도록 하지만, 화면에 보이는 항목에 한합니다. 에디터 뷰포트 내의 표시(Show) > 시각화(Visualize) > 루멘 글로벌 일루미네이션(Lumen Global Illumination) 을 클릭하여 루멘의 결합된 기법을 시각화할 수 있습니다.

표준 렌더링

루멘 GI 시각화

루멘은 라이트 소스로서의 이미시브 머티리얼을 포함한 모든 무버블 라이트 소스와 함께 작동합니다. 스카이라이팅은 스카이 섀도잉에 루멘의 파이널 개더(Final Gather)를 사용하며, 이를 통해 실내 영역을 야외 영역보다 더 어둡게 하고 밝은 색 표면이 더 많은 빛을 반사하게 할 수 있습니다.

캠프파이어 지역의 루멘/스카이라이팅 활성화, 루멘 비활성화, 루멘/스카이라이팅 모두 비활성화된 상태 비교입니다.

퀄리티와 속도, 그리고 루멘의 '그냥 작동'하는 특성이 균형을 이룬 덕분에 팀에서는 기존 라이트 기법에 있는 모든 환경설정 옵션을 신경 쓰지 않고 직관적으로 에인션트의 협곡의 거대한 랜드스케이프를 라이팅할 수 있었습니다. 루멘과 루멘의 작동 방식에 대한 자세한 내용은 루멘 글로벌 일루미네이션 및 리플렉션루멘의 기술적 디테일을 참고하세요.

새 모델링 툴로 메시 맞춤화하기

모델링 에디터 예시

에인션트의 협곡 환경의 메가스캔 메시 중 다수는 원래 임포트된 '스톡' 메시가 아니라 랜드스케이프의 고유한 필요에 맞춰 언리얼 에디터 내에서 변경되었습니다. 에인션트의 협곡 배경 아티스트는 UE5의 새로운 모델링 에디터 모드(Modeling Editor Mode) 를 통해 이러한 변경 작업을 수행했습니다.

다른 DCC 툴에서 하는 것과 같은 방식으로 모델링 에디터를 사용하여 처음부터 메시를 빌드할 수도 있고, 환경에서 스태틱 메시나 인스턴스드 스태틱 메시를 선택하여 해당 메시의 지오메트리를 수정할 수도 있습니다. 폴리곤별로 이러한 메시를 편집하는 것은 번거롭지만, 모델링 에디터 모드에는 고밀도 메시를 빠르게 변경할 수 있는 수많은 디포머와 스컬프팅 툴이 있습니다.

예를 들어, SM_umshejnga_High2 와 같은 절벽 면 에셋이 있는데 이 에셋의 곡선 버전이 필요하다고 하면, 모델링 에디터 모드를 토글하고 뷰포트에서 해당 메시를 선택한 다음, 벤드(Bend) 디포머를 적용하면 됩니다. 몇 초 동안 조정한 뒤에 디포메이션을 해당 메시에 적용하고 그 결과를 확인할 수 있습니다.

초기 메시

벤드 디포머 활성화

벤드 디포머가 적용된 최종 결과

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

어떠한 UV도 다시 수행하지 않고 하나의 고해상도 베이스 메시에서 원본과 비슷한 퀄리티의 고유 메시를 다양하게 생성할 수 있습니다. 이러한 기능 덕분에 아티스트가 모든 해상도의 에셋을 최대한 유연하게 작업할 수 있으며, 레벨 에디터에서 나가지 않고도 고유한 필요에 따른 콘셉트를 구현할 수 있습니다.

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

에인션트의 협곡의 랜드스케이프는 너무 커서 지금까지 설명한 툴을 사용하더라도 개별적으로 메가스캔 에셋을 배치하여 매우 디테일한 환경을 구성하려면 상당히 많은 시간이 소모됩니다. 그래서 에인션트의 협곡의 배경 아트 팀은 패킹된 레벨 인스턴스(Packed Level Instances) 를 활용하여 대규모 어셈블리를 킷배싱했습니다.

레벨 인스턴스는 본질적으로 월드 파티션 시스템을 구현하는 모든 월드에 추가할 수 있는 중첩된 레벨입니다. 월드 파티션을 작동시키기 위해 레벨 인스턴스를 사용해야 하는 것은 아니지만, 월드의 콘텐츠 청크를 재사용 가능한 부분으로 구성하거나, 레벨을 메인 레벨 외부에서 편집하기 위해 관리하기 쉬운 조각으로 나누는 데 편리한 툴입니다.

레벨 인스턴스를 생성하려면, 월드에서 오브젝트 그룹을 선택하고 우클릭한 다음, 선택에서 생성(Create From Selection) 을 클릭합니다.

선택에서 생성 예시

이렇게 하면 새 레벨 인스턴스(New Level Instance) 메뉴가 열리고, 여기서 생성하려는 레벨 인스턴스 유형을 선택할 수 있습니다.

새 레벨 인스턴스 선택

확인(OK) 을 클릭하면 프로젝트에 새 레벨 인스턴스를 레벨 파일로 저장할 수 있으며, 그에 따라 해당하는 블루프린트 에셋이 생성됩니다. 선택한 모든 액터는 그 액터가 포함된 레벨 인스턴스 액터로 대체됩니다. 레벨 파일을 사용하여 레벨 인스턴스를 편집하고 해당 블루프린트 에셋을 사용하여 레벨 인스턴스의 사본을 배치할 수 있습니다.

레벨 인스턴스 배치

레벨 인스턴스를 조작하는 것은 레벨에서 다른 액터를 조작하는 것만큼이나 간단합니다. 또한, 레벨 인스턴스의 컴포넌트 부분을 즉석에서 편집할 수도 있습니다. 배치한 레벨 인스턴스의 디테일(Details) 패널에서 레벨 인스턴스 편집(Level Instance Editing) 아래에 있는 편집(Edit) 버튼을 클릭하여 해당 레벨 인스턴스에 포커스를 맞춥니다. 그런 다음, 월드의 나머지 컨텍스트에서 해당 레벨 인스턴스의 컴포넌트 부분을 편집할 수 있습니다.

레벨 인스턴스 편집

편집을 완료하면, 변경사항 커밋(Commit Changes) 을 클릭하여 조정을 마무리하고 월드 편집으로 돌아갑니다. 변경사항을 저장할지 묻는 메시지가 표시되며, 해당 레벨 인스턴스의 모든 사본에 같은 변경사항이 적용됩니다.

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

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

이 워크플로를 통해 배경 아트 팀은 독립적으로 대규모 어셈블리 라이브러리를 구축하고 변경을 유지한 채 어셈블리를 편집할 수 있습니다. 이러한 어셈블리는 플레이어 주변의 관찰 가능한 랜드스케이프를 구성하는 다용도의 작은 에셋부터 멀리 떨어진 랜드스케이프의 대형 청크를 구성할 수 있는 거대한 지오메트리 형태까지 다양합니다. 이러한 어셈블리 중 대다수가 에디터 안에 있는 스태틱 메시 에셋으로 구성되지만, 일부 어셈블리는 팀에서 메가스캔 에셋을 베이스로 사용하여 맞춤형으로 빌드했습니다. 이 방식으로 팀에서는 단 몇 주 만에 포토리얼한 디테일로 4제곱킬로미터의 땅을 덮을 수 있는 유연한 어셈블리 라인을 확보할 수 있었습니다.

이러한 어셈블리용 맵 파일은 AncientGameContent/Maps/MASS 폴더에 있으며, 거기에 해당하는 레벨 인스턴스 액터는 AncientGameContent/Geometry 폴더에 있습니다. 이러한 툴을 사용하는 방법에 대한 자세한 내용은 레벨 인스턴싱을 참조하세요.

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

다크 월드에 있는 돌기둥과 피날레에서 에인션트 원이 올라오는 언덕과 같은 에인션트의 협곡의 디스트럭터블 메시를 개발하는 프로세스를 통해 UE5의 카오스 디스트럭션(Chaos Destruction) 워크플로가 상당히 개선되었습니다. 팀이 개발한 워크플로에서는 새로운 모델링과 프랙처 에디터 모드를 조합하여 사용합니다.

디스트럭션 팀은 모델링 툴에 크게 의존하여 메시를 준비하고 타깃 프랙처를 생성했습니다. 단순화(Simplify) 및 평면 컷(Planar Cut, PlnCut ), 오프셋(Offset) , 디스플레이스(Displace) (노이즈가 더 많은 표면 추가)를 통해 초기 프랙처를 소스 메시 자체에서 스컬프팅할 수 있습니다. 이 프로세스 전반에 걸쳐, 서로를 뚫고 지나가는 오버래핑 메시를 제거하고 표면의 지오메트리만 남기는 데 부울(Boolean) 툴을 사용했습니다. TriSel 툴을 사용하여 스트레이 폴리곤이나 부유하는 지오메트리 섬을 제거했습니다.

메시 툴을 사용하여 메사에 평면 컷 생성

프랙처 편집 모드에서 팀은 메시 프랙처(Mesh Fracture) 툴을 사용하여 디스트럭터블 메시를 대형 청크로 분리했습니다. 메시 프랙처 툴은 또 다른 메시를 효과적으로 사용하여 지오메트리에서 '덩어리'를 떼어내는데, 이는 부울 빼기 툴과 비슷하게 작동하지만, 메시의 두 부분 모두 그 자리에 남겨둡니다. 이 툴로 생성된 청크는 디스트럭터블 오브젝트를 위한 프라이머리 프랙처 역할을 하여 청크가 부서질 때의 모습을 어느 정도 제어할 수 있게 해줍니다. 이러한 청크를 생성한 다음, 팀에서는 더 전통적인 보로노이(Voronoi) 프랙처(유니폼(Uniform) 또는 클러스터(Cluster) 프랙처 툴 사용)를 적용하여 청크를 더 작은 조각으로 나누었습니다.

기둥에 메시 컷 적용

메시 컷이 적용된 뒤의 기둥

보로노이 프랙처 적용

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

UE5에 도입된 노이즈 세팅 덕분에 이러한 프랙처의 가장자리가 균일하지 않고 자연스럽게 보입니다.

프랙처 모드 AutoUV 툴

팀에서는 AutoUV 툴을 사용하여 프랙처 에셋의 내부 표면을 UV 처리했습니다. AutoUV 툴은 메시의 깊이에 따라 그레이디언트에 매핑되는 텍스처를 생성합니다. 이 방식으로 머티리얼을 블렌딩하여 다양한 단면 부분의 표면 퀄리티가 깊이에 따라 달라지게 함으로써 더 자연스러운 모습을 만들어낼 수 있습니다. 예를 들어, 단면 안쪽 깊숙한 곳의 메시 부분은 더 지저분하고 메말라 보일 수 있으며, 표면에 가까운 부분은 더 어둡고 닳아 보일 수 있습니다.

마지막으로, 팀에서는 카오스 캐시 매니저(Chaos Cache Manager) 를 사용하여 에셋의 피직스 시뮬레이션을 캐싱했습니다. 카오스 캐시 매니저는 에디터에서 시스템을 녹화하고 게임 내에서 재생할 수 있는 시스템으로, 트리거될 때마다 피직스 시뮬레이션이 같은 방식으로 진행되도록 보장합니다. 이를 통해 프로세싱을 보존하면서 게임 내에서 복잡하고 상세한 디스트럭션을 보여줄 수 있으며, 레벨 디자인에 대한 게임 내 특정 필요에 맞는 방식으로 디스트럭션을 제작할 수 있습니다. 예를 들어, 에코가 파괴하는 첫 번째 돌기둥은 무너지면서 입구를 절대 막지 않으며, 에인션트 원이 등장하는 언덕은 에코가 아레나를 가로지르는 것을 방해하는 잔해를 남기지 않습니다. 캐시 매니저로 시뮬레이션을 녹화한 후, 레벨에 그 사본을 배치하면, 연결된 모든 다른 에셋도 배치됩니다.

카오스 캐시 매니저

이러한 에셋에 대한 원래 시뮬레이션 구성은 프로젝트의 최종 빌드에서 제거되었습니다. 하지만, 해당 지오메트리 컬렉션과 캐시 매니저는 AncientBattle Content > Maps > Destruction 에 있습니다. c_Destruction > 3_Lt_Hand 의 컬렉션에서 타깃 프랙처에 사용된 에셋의 예시를 살펴보고, L_AncientBattle_Gameplay 레벨에서 다크 월드에 사용된 모든 캐시 매니저를 확인할 수 있습니다.

이러한 워크플로를 더 유연하게 만들려고 노력 중입니다. 그동안에는 에인션트의 협곡 구현에서는 UE5에서 카오스 디스트럭션의 퀄리티, 접근성 및 유연성을 개선하는 방법에 대한 개념 증명을 확인하실 수 있습니다.

스카이 애트머스피어 및 볼류메트릭 나이아가라 이펙트로 분위기 설정하기

에픽 팀은 에인션트의 협곡에서 애트머스피어를 완성하기 위해 새로운 스카이 애트머스피어(Sky Atmosphere) 시스템을 사용합니다.

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

씬에 스카이 애트머스피어 액터를 배치함으로써 지면 반경(km)과 대기에 대한 물리적 파라미터, 아트 디렉션 오버라이드 등, 시뮬레이션된 행성에 대한 정보를 환경설정할 수 있습니다. 스카이 애트머스피어 시스템은 애트머스피어 썬 라이트(Atmosphere Sun Light)스카이 라이트 로 설정된 디렉셔널 라이트 와 함께 작동합니다. 이러한 모든 엘리먼트가 준비되면 스카이 애트머스피어 시스템은 글로벌 스케일로 사실적인 애트머스피어와 볼류메트릭 클라우드, 포그를 생성합니다. 이 씬의 환경 라이팅은 스카이 라이트의 리얼타임 캡처와 컨볼루션 프로세스 덕분에 완전히 동적입니다.

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

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

에인션트의 협곡에서 라이트 월드는 스카이 애트머스피어 액터를 사용하여 실제 지구 같은 보다 미묘한 애트머스피어를 보여줍니다. 또한, 실시간으로 다이내믹 라이팅이 적용되는 애니메이션 볼류메트릭 클라우드도 등장합니다. 한편, 다크 월드는 더 전통적인 스카이돔을 사용하여 보다 공상적인 스타일라이즈드 룩을 만들어냅니다.

라이트 월드 씬

다크 월드 씬

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

거친 지형 위로 날리는 안개와 모래 등의 마무리 작업을 위해 팀에서는 볼류메트릭 페인트 데이터와 함께 나이아가라 파티클을 사용하여 이러한 안개와 모래가 환경을 가로지르도록 했습니다.

지면을 가로질러 날리는 먼지 바람

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

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

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

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

밀도 맵은 알파 채널과 결합된 RGB 정보를 사용하여 지형을 기준으로 파티클의 높이와 밀도를 결정하는 반면, 속도 맵은 이러한 파티클이 이동하는 방향을 결정합니다. 팀에서는 맞춤 제작한 볼류메트릭 페인팅 툴을 사용하여 환경 내의 이러한 레이어를 페인팅하고 텍스처를 출력했습니다. 아래 이미지에서 환경 위에 오버레이된 그리드는 밀도 맵을 나타내며, 화살표는 흐름 맵을 나타냅니다. BP_NiagaraPainted_FogDetail(포그 플립북)은 디테일을 추가하기 위해 똑같은 3D 밀도로 BP_TerrainFogMaster(볼류메트릭 포그) 위에 레이어링됩니다.

밀도 맵 그리드 및 흐름 맵 화살표 오버레이

이 방법을 통해 에인션트의 협곡에서는 단 3개의 나이아가라 시스템만 사용하여 다크 월드의 랜드스케이프에서 100,000개 이상의 GPU 파티클을 시뮬레이션합니다. 그런 다음, 모든 나이아가라 시스템이 동일한 볼류메트릭 페인팅 데이터를 사용하는 볼류메트릭 포그 및 환경에 맞춰져 맞춤형 디테일을 추가합니다. 볼류메트릭 페인팅 툴은 아직 개발 중이지만, 이러한 방식은 나이아가라의 강력한 기능과 결합되었을 때의 성능과 유용성에 대한 개념 증명을 제공합니다.

협업으로 대규모 월드 구성하기

예전에는 사용자가 레벨을 서브씬으로 나누고 레벨 스트리밍 시스템이나 월드 컴포지션 시스템을 사용하여 퍼시스턴트 레벨에 스트리밍하거나 퍼시스턴트 레벨에서 스트리밍했습니다. 이런 방식에는 세심한 구성이 필요하며, 일반적으로 버전 관리 문제가 발생하지 않도록 한 번에 한 명의 사용자만 씬을 수정할 수 있으므로 여러 사용자가 함께 작업하기 어렵습니다.

언리얼 엔진 5에서는 레벨 파일과 상호작용하는 방식을 다시 개발하여 이 프로세스를 더 깔끔하고 직관적으로 만들었습니다. 단 하나의 레벨 파일에서 거대한 월드를 편집할 수 있을 뿐 아니라 수십 명의 개발자와 협업하면서도 최소한의 충돌로 이러한 작업을 수행할 수 있습니다. 이 섹션에서는 이를 가능하게 해준 툴과 이러한 툴이 에인션트의 협곡 제작 시 팀의 협업에 어떻게 도움이 되었는지에 대해 자세하게 살펴보겠습니다.

액터당 한 개의 파일

에인션트의 협곡의 전체 월드에서는 UE5의 액터당 한 개의 파일(One File Per Actor, OFPA) 시스템을 사용합니다. 이 시스템이 활성화되면 단일 맵 파일에 데이터를 작성하지 않고 레벨 내에 배치된 액터의 각 고유 인스턴스에 대해 별도의 파일을 작성합니다.

레벨 에디터와 상호작용하는 사용자의 입장에서는, 워크플로가 전혀 달라지지 않습니다. 레벨을 편집하려면, 여전히 에디터에서 단일 레벨 파일을 열어야 합니다. 그렇지만, 기본 파일 시스템은 각 액터를 별도의 파일로 트래킹하므로, 레벨 디자이너와 배경 아티스트는 같은 레벨의 다른 영역이나 레이어를 편집할 수 있으며, 버전 관리 시스템에 변경사항을 커밋할 때 충돌이 거의 발생하지 않습니다.

에인션트의 협곡에는 OFPA가 전역적으로 활성화되어 있습니다. 이 세팅은 월드 세팅(World Settings) 아래 월드(World) 파라미터의 고급 섹션에서 외부 액터 사용(Use External Actors) 이라고 표시되어 있는 옵션입니다.

월드 세팅 외부 액터 사용

재량에 따라, 이 세팅을 개별 액터에 대해 활성화해도 되고 전체 프로젝트에 대해 전역적으로 활성화해도 됩니다. 자세한 내용은 액터당 한 개의 파일 문서를 참조하세요.

이 시스템 덕분에 에인션트의 협곡 개발자들은 버전 충돌 걱정 없이 온종일 빠르게 변경사항을 커밋하고 에디터에서 서로의 변경사항을 신속하게 확인할 수 있었습니다. 게임플레이 스크립팅과 배경 아트 조정이 계속해서 서로 동시에 이루어질 수 있어, 빠른 속도의 반복작업과 고도의 협업형 배경 아트 파이프라인이 가능했습니다

월드 파티션

게임의 대규모 월드는 플레이어가 랜드스케이프를 지나감에 따라 로드되고 언로드될 수 있는 많은 섹션으로 맵을 나누어야만 구현될 수 있는데, 이는 한 번에 수 킬로미터의 전체 맵을 로드할 수가 없기 때문입니다. 예전의 툴세트에서는 개발자가 직접 맵을 서브레벨로 나누고 이를 스트리밍 인/아웃할 때 신중하게 관리해야 했습니다. 서로의 컨텍스트에서 월드의 섹션을 보는 것이 어려울 때가 많았습니다.

월드 파티션 시스템 덕분에 이 프로세스가 상당히 간소화됩니다. 레벨의 월드 파티션이 활성화되면, 자동으로 그리드 위치에 따라 오브젝트가 셀로 분할되고, 레벨 에디터에서 월드를 조정하면 해당 셀의 콘텐츠가 업데이트되므로, 개발자가 직접 오브젝트를 셀에 할당할 필요가 없습니다. 게임플레이 중에, 수동으로 셀을 관리하거나 스트리밍 볼륨을 지정할 필요 없이, 플레이어가 게임 월드를 지나가는 데 맞춰 월드 파티션이 자동으로 셀을 로드하고 언로드합니다.

월드 파티션은 AncientWorld 씬의 월드 세팅(World Settings) > 월드 파티션 설정(World Partition Setup) 에 활성화되어 있습니다.

월드 세팅 월드 파티션 설정

창(Window) > 월드 파티션(World Partition) 을 클릭하면 월드 파티션 창을 볼 수 있습니다. 월드 파티션 창에서 에디터 셀을 클릭하고 드래그하여 선택하고, 편집 목적으로 이를 로드/언로드할 수 있습니다. 또한, 이 창에서 카메라를 선택한 셀로 이동하여 에디터에서 빠르게 살펴볼 수도 있습니다.

월드 파티션 창

디테일(Details)월드 파티션(World Partition) 섹션에서 개별 액터의 월드 파티션 세팅을 확인할 수 있습니다. 이 세팅은 블루프린트 에디터 내의 클래스 디폴트에서도 편집할 수 있습니다.

월드 파티션 개별 액터 세팅

기본적으로 환경 내 대부분의 액터는 월드 파티션 그리드 내의 위치를 사용하여 자신이 속한 셀을 결정합니다. 특히 에코는 플레이어 캐릭터이므로 항상 로드되도록 설정되어 있습니다.

보시다시피 월드 파티션 시스템은 대규모 월드의 빌드 프로세스를 상당히 간소화합니다. 시스템 내부적으로는 여전히 서브레벨과 비슷한 많은 파일을 관리하고 있지만, 아티스트와 디자이너는 세부 기술이 자동화된 만큼 환경 및 사용자 경험 제작에 집중할 수 있습니다. 게임에 월드 파티션을 환경설정하는 방법에 대한 자세한 내용은 월드 파티션 섹션을 참조하세요.

데이터 레이어

데이터 레이어(Data Layers) 는 월드의 오브젝트를 필요에 따라 로드하거나 언로드할 수 있는 별도의 레이어로 구성하기 위한 시스템입니다. 데이터 레이어 시스템은 서브레벨에 대한 또 하나의 대안으로, 월드 파티션과 함께 작동하도록 설계되었습니다. 프로젝트를 위한 또 다른 구성 툴이 될 수도 있고, 게임플레이 기능을 구동하고 월드의 추가 컨트롤이 될 수도 있습니다.

창(Window) > 데이터 레이어(Data Layers) 를 클릭하면 데이터 레이어 창이 열립니다. 이 창의 메뉴를 사용하여 에디터에서 데이터 레이어를 생성하고 구성하고 로드하거나 언로드할 수 있습니다.

데이터 레이어 창

디테일(Details)데이터 레이어(Data Layers) 섹션으로 스크롤하여 액터의 데이터 레이어 정보를 확인할 수 있습니다. 여기서 드롭다운을 사용하여 액터의 데이터 레이어를 변경하거나, '데이터 레이어(Data Layers)' 창에서 데이터 레이어를 클릭하고 이러한 항목 중 하나로 드래그할 수 있습니다.

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

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

데이터 레이어로 여러 개의 액터 드래그

에인션트의 협곡은 데이터 레이어를 사용하여 라이트 월드와 다크 월드 간을 전환합니다. 에코가 차원문을 활성화하면, 라이트 월드를 나타내는 몇 개의 데이터 레이어가 언로드되고 다크 월드를 나타내는 다른 데이터 레이어 세트가 로드됩니다.

라이트 월드

다크 월드

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

이러한 월드는 게임 내 이벤트를 사용하여 활성화되거나 비활성화되며, 다크 월드 리프트(Dark World Rift) 오브젝트에 의해 트리거됩니다. 두 월드 모두 같은 레벨 파일에 빌드되고 같은 공간을 오버랩하므로, 동일한 월드가 완전히 다른 버전이 됩니다.

캠프파이어(Campfire) 데이터 레이어는 두 월드 모두에 사용되어 에코가 한쪽 월드에서 다른 쪽 월드로 넘어갈 때 플레이어를 위한 공통 참조 프레임을 생성합니다. 이 경우 중복 버전은 필요 없으며, 그 모습에 변화를 주는 유일한 요소는 라이트 월드와 다크 월드에서 사용되는 애트머스피어와 라이팅뿐입니다.

캠프파이어 라이트 월드

캠프파이어 다크 월드

개발 과정에서 데이터 레이어는 게임플레이와 세트 드레싱 엘리먼트를 분리하는 데에도 중요한 툴이 되어주었습니다. 왜냐하면 배경 아티스트는 오버랩되는 트리거나 게임플레이 오브젝트와 상호작용하지 않고서도 자신의 데이터 레이어에서 작업할 수 있었고 디자이너는 게임 내 이벤트와 관련된 오브젝트에 집중할 수 있었기 때문입니다.

자세한 내용은

[데이터 레이어](building-virtual-worlds/world-partition/DataLayers)
페이지를 참조하세요.

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

UE5에서는 캐릭터 및 캐리터가 월드와 상호작용하는 방식에 초점을 맞춘, 스켈레탈 메시를 통한 리얼타임 애니메이션도 일부 개선했습니다. 에인션트의 협곡에서는 에코는 물론, 데모 마지막에 에코가 마주하게 되는 거대한 에인션트 원에 대한 상호작용을 구동하는 데 이 기능을 사용합니다.

모션 워핑

모션 워핑(Motion Warping) 시스템을 사용하면 환경의 워핑 포인트를 기반으로 루트 모션에 애니메이션을 적응시킬 수 있습니다. 모션 워핑을 통해 하나의 애니메이션을 다양한 상황에 유연하게 사용할 수 있어 복잡한 환경 상호작용을 처리하기 위한 워크로드를 크게 줄일 수 있습니다.

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

모션 워핑 도약 gif

기존 워크플로에서는 이러한 종류의 게임 내 액션을 만들려면 팀이 장애물의 피지컬 파라미터에 대한 극도로 제한적인 규칙을 적용하고 장애물별로 애니메이션을 생성하거나, 이러한 액션을 플레이되는 방식과 시기에 대한 복잡한 규칙이 있는 컴포넌트 애니메이션으로 분리해야 했습니다.

그러나 에인션트의 협곡에서는 에코의 도약 액션을 온전히 VaultOver_Montage 에셋만으로 처리합니다.

에디터의 VaultOver_Montage 에셋

이 에셋은 새 MotionWarping 노티파이 스테이트 를 사용하여 캐릭터의 루트 모션이 환경에 맞게 워핑될 수 있는 지점에 애니메이션의 세그먼트를 표시합니다. 각 표시는 환경에 배치된 동기화 포인트 에 대응합니다. 이 경우, 이러한 포인트는 FrontEdge, BackEdge 및 BackFloor라고 하며, 도약 가능 오브젝트의 서로 다른 레퍼런스 포인트에 해당합니다. FrontEdge는 에코가 몸을 끌어올리기 위해 오브젝트를 손으로 짚는 위치를 나타내며, BackEdge는 에코가 빠른 도약을 시작하는 지점을 나타내고, BackFloor는 에코가 오브젝트의 반대편에 착지하는 지점을 나타냅니다.

이러한 포인트는 BP_EchoCharacter**에 연결된 VaultingTriggerVolume 에 따라 도약 비헤이비어를 트리거하는 GA_Vault** 라는 GameplayAbility에서 설정합니다. 개별 모션 워핑 동기화 포인트 설정을 위해 내장된 블루프린트 노드가 있지만, 이 기능은 도약 가능 액터에 대한 데이터를 기반으로 한 번에 모든 동기화 포인트를 계산하는 커스텀 노드를 사용합니다.

Set Vault Sync Points for Montage 블루프린트 노드

이러한 세 개의 포인트가 에코의 MotionWarping 컴포넌트에 제공되면, 재생 시 VaultOver_Montage에 의해 에코의 루트 모션이 이러한 포인트에 자동으로 정렬됩니다. 이때, MotionWarping 노티파이 스테이트의 지속 시간과 해당 세그먼트의 모션 워핑 행동 방식에 대한 세팅이 고려됩니다.

이 시스템 덕분에 에코가 하나의 애니메이션만으로 환경에 있는 다양한 오브젝트를 쉽게 뛰어넘을 수 있습니다. 오브젝트의 높이나 깊이에 상관없이 에코의 애니메이션은 제공되는 각 대상 포인트에 맞춰 자연스럽게 느껴지는 방식으로 조정됩니다. 이 시스템을 통해 개발자는 작은 애니메이션 에셋 라이브러리로도 매우 유연하게 활용할 수 있습니다.

모션 워핑 구현 방식에 대한 자세한 내용은 모션 워핑 문서를 참조하세요.

컨트롤 릭 향상

에코와 강력한 에인션트 원 모두에 언리얼 엔진의 컨트롤 릭 이 구현되어 있으므로, 둘 다 언리얼 에디터 내에서 애니메이션으로 만들 수 있습니다. UE5에서는 다음과 같이 컨트롤 릭을 이용할 수 있는 툴이 늘어났습니다.

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

  • 트윈 툴(Tween Tool) - 주변 키프레임에 대한 정보에 따라 중간 키프레임을 생성하고 가중치를 부여할 수 있습니다.

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

이러한 툴 덕분에 애니메이션 라이브러리 구성이 빨라지고 많은 부분에서 편의성이 향상되었습니다. 에인션트의 협곡 샘플에서 에인션트 원의 애니메이션은 에인션트 원의 모델을 디자인하고 빌드한 애런 심즈(Aaron Sims) 크리에이티브 팀이 온전히 언리얼 에디터에서 컨트롤 릭과 시퀀서를 사용하여 작성했습니다.

컨트롤 릭 에디터

에인션트 원과 에코 모두 컨트롤 릭으로 구성되어 있어, 이러한 새 기능을 살펴보는 데 사용할 수 있습니다. 에코의 릭은 AncientContent > Characters > Echo > Rig 에 있으며, 에인션트 원의 컨트롤 릭은 AncientBattle Content > Characters > AncientOne > Rig 에 있습니다.

컨트롤 릭 콘텐츠 폴더

UE5에서의 컨트롤 릭의 향상된 기능에 대한 자세한 내용은 컨트롤 릭 문서를 참조하세요.

풀 바디 IK 솔버

이 두 캐릭터에는 환경에 반응하는 방식에 대한 추가 레이어를 제공하는 새로운 풀 바디 IK(Full-body IK, FBIK) 솔버 도 구현되어 있습니다. FBIK는 각 캐릭터의 컨트롤 릭 에셋 내부에 정방향 솔브(Forwards Solve) 그래프의 노드로 적용됩니다. 이 솔버는 메시에 대한 모든 표준 애니메이션이 처리된 뒤 포스트 프로세스 레이어의 모델에 수정 사항을 적용합니다.

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

이 솔버 작동의 예로 에인션트 원이 에너지 광선 공격을 할 때를 보면, 에인션트 원의 팔 위치는 에코의 위치를 트래킹하면서 블루프린트 로직에 따라 제어되며, 풀 바디 IK 솔버는 광선을 발사하는 에인션트 원의 나머지 몸에 대한 수정 사항을 처리합니다.

광선을 발사하는 에인션트 원 gif

좀 더 미묘한 예를 들자면, 에코는 FBIK를 사용하여 게임 월드의 다양한 지형에 적응하며, 발을 지면의 각도에 맞춰 조정하고, 고르지 않은 표면을 이동할 때 엉덩이의 위치를 변경합니다. 이러한 방식으로 특히 에코가 경사를 오르내리거나 장애물을 넘을 때 더 다채롭고 자연스러운 움직임을 만들어냅니다.

내리막길을 걷는 에코 gif

풀 바디 IK 구현 방법에 대한 자세한 내용은 풀 바디 IK 문서를 참조하세요.

모듈형 게임플레이 빌드하기

UE5는 모듈형으로 게임플레이를 빌드할 수 있는 프레임워크도 제공하며, 에인션트의 협곡에서는 다크 월드로 전환하는 동안 이러한 시스템을 활용합니다. 에코의 환경이 바뀔 뿐 아니라, 런타임 시 새로운 입력 바인딩 및 메커니즘 세트도 도입됩니다.

게임 피처 플러그인으로 게임플레이 확장

빛의 화살을 던지는 에코

라이트 월드에서 에코는 소량의 빛을 원격 조정하여 주변 환경을 하늘에서 내려다봅니다. 다크 월드에서는 빛의 화살을 던져 장애물을 파괴하고 적에게 대미지를 입힐 수 있습니다. 이러한 각 시스템은 별개의 게임 피처 플러그인 입니다. 포트나이트 파이프라인에서 영감을 받은 이 시스템을 통해 피처를 서로 독립적으로 개발하고 이러한 피처를 뜻대로 메인 게임에 통합할 수 있습니다. 심지어 런타임에서 로드하거나 언로드할 수도 있습니다.

새 게임 피처를 생성하려면, 플러그인(Plugins) 창을 열고 플러그인 생성(Create Plugin) 을 클릭합니다. 베이스 플러그인 타입으로 게임 피처를 선택할 수 있습니다.

게임 피처 플러그인 생성

그러면 이 플러그인이 프로젝트의 플러그인 디렉터리에 나타납니다.

표준 플러그인 사용 시, 게임에서 해당 플러그인의 클래스와 에셋을 참조할 수 있지만, 이 플러그인은 베이스 게임의 코드나 에셋을 참조할 수 없습니다. 게임 피처를 사용하면 그러한 종속성 흐름이 뒤바뀝니다. 게임 피처는 베이스 게임에 의존하지만, 베이스 게임은 게임 피처의 클래스나 함수를 참조할 수 없습니다. 이러한 관계 때문에 게임 피처 구현은 베이스 게임에서 엘리먼트를 수정하거나 확장하는 모드와 유사합니다.

에인션트의 협곡에서 빛의 화살과 에인션트 원은 모두 AncientBattle 게임 피처에 포함되어 있습니다. 에코가 특수 능력을 획득하고 사용하기 위해 필요한 기본 게임은 이미 에코의 베이스 액터에 빌드되어 있지만, 빛의 화살은 이에 대한 특정 구현을 제공합니다. 에인션트 원과 대미지에 반응할 수 있는 다른 액터도 이 게임 피처에 포함되어 있어, 전투 시스템이 이 모듈 내에 완전히 캡슐화되어 있습니다. 이 피처의 콘텐츠는 AncientBattle Content 폴더에 있습니다.

콘텐츠 드로어에서 이 게임 피처의 콘텐츠를 보려면, 세팅(Settings) 버튼을 클릭한 다음, 플러그인 콘텐츠 표시(Show Plugin Content) 를 체크하고 AncientBattle Content 폴더를 찾습니다.

AncientBattle Content 폴더

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

AncientBattle 게임 피처 데이터 에셋

이 에셋에는 플러그인이 로드되거나 언로드될 때 플러그인 행동 방식에 대한 지침이 포함되어 있습니다. 특히 빛의 화살 플러그인에는 LightDart 게임플레이 어빌리티를 에코에 추가하고, 이 어빌리티를 활성화할 입력을 구성하고, 에코에 필요한 컴포넌트를 어태치하기 위한 인스트럭션이 포함되어 있습니다.

게임플레이 중에 다크 월드로의 전환이 트리거될 때, 이러한 피처가 BP_DarkWorldRift 블루프린트 내에서 토글됩니다.

BP_DarkWorldRift 블루프린트

게임의 메인 코드베이스나 에셋에서 LightDart에 대한 추가 참조는 필요 없습니다. 에코에게 게임 피처를 추가하고 나면, 게임 피처 데이터에 있는 인스트럭션 덕분에 모든 컴포넌트를 사용할 수 있게 준비됩니다.

이 시스템을 사용하여 개발자는 주어진 시간에 활성화할 피처 세트를 쉽게 제어할 수 있습니다. 이는 특히 제한된 기간이나 범위 안에서 작동하는 메커니즘을 처리할 때 유용합니다. 에인션트의 협곡에서는 에코가 두 월드 사이를 토글할 때 에코의 빛의 화살을 전환하는 데 이 시스템을 사용하지만, 온라인 게임의 한정 이벤트나 짧은 시네마틱 세그먼트나 게임플레이 중 주요 모드 변경에도 이 시스템을 쉽게 적용할 수 있습니다.

게임 피처 플러그인과 이를 프로젝트에 구현하는 방식에 대한 자세한 내용은

[게임 피처 플러그인](programming-and-scripting/interactive-framework/game-features-and-modular-gameplay)
문서를 참조하세요.

향상된 입력 시스템을 사용한 유연한 컨트롤

UE5에는 새로운 향상된 입력 시스템(Enhanced Input System) 이 있으며, 에인션트의 협곡에서는 에코의 컨트롤을 위해 사용됩니다. 이 시스템은 에코의 움직임과 어빌리티를 처리할 뿐 아니라, 특정 컨트롤에 대한 상황 데이터를 포함한 해당 입력의 상황에 맞는 엘리먼트를 처리하고 플레이어 스테이트를 기반으로 입력을 추가하거나 제거하는 메서드도 제공합니다.

UE4의 입력 시스템은 액터의 이벤트 그래프에서 이벤트를 통해 원본 입력을 처리했지만, 향상된 입력은 콘텐츠 드로어의 에셋으로 표현되는 입력 액션 으로 컨트롤을 구현합니다. 에인션트의 협곡 입력 액션 대부분은 Content > AncientGameContent > Input 에 있습니다. 다크 월드에 특화된 입력 액션은 AncientBattle_Content > Input 에, 호버 드론에 특화된 입력 액션은 HoverDrone_Content > Input 에 포함되어 있습니다.

콘텐츠 드로어의 입력 액션

여기에는 IA_MoveForwardIA_MoveRight 같은 일반 컨트롤뿐 아니라, 에코가 캠프파이어에서 일어설 때 사용된 IA_SitStand 같은 특정 상황에 대한 컨트롤도 포함됩니다. 입력 액션을 열어 다양한 축 값 타입을 포함하여 입력 액션이 반환할 값 타입을 환경설정할 수 있습니다. 또한, 입력을 활성화하기 위한 상황별 요구 사항을 추가하는 트리거 목록이나, 게임플레이에 넘겨주기 전에 입력 값을 처리하는 모디파이어 도 제공할 수 있습니다.

입력 액션 디테일

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

콘텐츠 드로어에 InputAction이 정의되면, 블루프린트에서 이벤트를 사용하여 액세스할 수 있습니다. 에코를 제어하는 InputAction은 BP_EchoCharacter에서 처리합니다.

BP_EchoCharacter 블루프린트의 입력 액션

이러한 이벤트 함수는 표준 입력 이벤트와 비슷하게 작동하지만, 액션이 시작, 종료, 진행 중인 때나 강제 취소되는 때는 물론, 액션이 활성화되는 시간 등 입력 액션의 추가적인 컨텍스트 정보를 제공합니다. 입력 이벤트의 값은 InputAction 에셋에 나열된 값 타입 에 의해 정의됩니다. InputAction용으로 나열된 모든 모디파이어가 적용되고 나서 이 값이 출력됩니다.

입력 매핑 컨텍스트 는 물리적 컨트롤에 대한 InputAction 매핑을 처리합니다. 이러한 에셋은 InputAction과 함께 있습니다. IM_ThirdPerson_Controls_InputMapping 에는 에코의 컨트롤 대부분이 포함되어 있으며, IM_LightDartInputMappings 에는 빛의 화살 능력과 달리기 동작에 대한 추가 컨트롤이 포함되어 있습니다.

입력 액션 매핑

입력 액션 매핑은 UE4 입력 시스템의 액션 및 축 매핑과 비슷하게 구성되지만, InputAction을 물리적 입력에 매핑하는 것 외에도 특정 컨트롤 구현에 모디파이어와 트리거도 적용할 수 있습니다. 예를 들어, 에코는 IA_MoveForward를 읽어 앞으로 이동할지 뒤로 이동할지를 정합니다. W 키에는 모디파이어가 추가되지 않았지만, S 키는 부정(Negate) 모디파이어가 사용되어 음수 입력을 읽게 됩니다.

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

빛의 화살 입력 매핑 세부사항

이 게임 피처 액션은 특별히 이 프로젝트를 위해 C++로 만들었습니다. 런타임 시 입력 매핑이 추가되고 제거되는 또 하나의 예시를 EnhancedInputComponent 를 확장하는 HoverDrone 게임플레이 피처의 C++ 클래스인 HoverDroneControlsComponent 에서 확인할 수 있습니다.

이 예시에서는 향상된 입력 시스템이 어떻게 확장성과 유연성이 매우 뛰어난 게임 입력 관리 프레임워크를 제공하는지 보여줍니다. 개발 과정에서 게임플레이 코드를 손상하지 않고도 게임의 입력을 쉽게 확장하고 조정할 수 있습니다. 이 시스템에는 상황별 입력이나 특수 사례 입력에 사용할 수 있는 많은 툴이 있습니다. 자세한 내용은 향상된 입력 시스템 문서를 참조하세요.

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

비주얼과 게임 메커니즘, 월드를 자유롭게 빌드할 수 있게 해주는 모든 툴과 더불어, 언리얼 엔진 5에서는 최신 오디오 시스템을 사용하여 게임의 오디오도 더 자유롭게 제어할 수 있습니다. 이 섹션에서는 에인션트의 협곡에서 이러한 새 툴을 사용하여 에코와 에인션트 원의 마지막 대전에 세련미와 역동성을 더한 방법을 보여줍니다.

메타사운드

메타사운드(MetaSounds) 는 오디오 디자이너를 위한 완벽한 기능을 갖춘 다이내믹 시그널 프로세싱(Dynamic Signal Processing, DSP) 그래프를 제공하는 언리얼 엔진 5의 새 고성능 오디오 시스템입니다. 이 시스템은 프로시저럴 사운드 이펙트와 음악을 처음부터 끝까지 합성할 수 있으며, 게임플레이 이벤트와 게임 내 데이터를 기반으로 디자이너가 사운드를 조작할 수 있는 방법을 제공하는 블루프린트 API를 갖추고 있습니다. 이 시스템은 빠른 반복작업과 복잡하고 역동적인 사운드, 게임 디자인 변경에 따라 사운드를 손쉽게 조정할 수 있는 기능을 지원하므로, 사운드 디자이너는 매우 유연하게 개발을 진행할 수 있습니다.

메타사운드의 강력하고 다양한 기능의 예시는 Audio > MetaSounds 경로의 AncientBattle Content 폴더에 있는 sfx_Golem_RobotBlast_Meta 를 살펴볼 수 있습니다.

이 메타사운드에서는 프로시저럴 방식으로 생성된 오디오와 .wav 샘플을 믹싱하여 에인션트 원의 광선 충전 사운드 이펙트를 생성합니다. 첫 번째 섹션에서 완전히 프로시저럴한 메인 충전 사운드의 합성과 변조를 대부분 처리합니다.

인트로 웨이브(Intro Wave)샷 웨이브(Shot Waves) 섹션에서는 몇 가지 보충 .wav 파일을 사용하여 사운드에 텍스처 레이어를 더 추가합니다. 인트로 웨이브 섹션은 광선 충전이 처음에 시작되면 트리거됩니다. 샷 웨이브 섹션에는 광선 충전이 시작되면 트리거되는 사운드도 있지만, 충전 사운드가 완전히 재생되고 난 뒤 트리거되는 컴포넌트도 있습니다.

그래프의 중간 섹션에서 이러한 다양한 섹션 간 믹싱과 필터링을 처리하여 최종 Stereo Mixer 로 넘겨준 다음, Output 노드에 전달하여 최종 사운드를 재생합니다.

트리거, 파라미터, .wav 파일이 입력 역할을 하면, 메타사운드 플로 그래프가 DSP 노드를 기반으로 그 정보를 처리하고 믹싱하여 최종 사운드를 출력합니다. 이 시스템을 통해 오디오 디자이너는 일반적인 사운드 파라미터와 게임 내 데이터 모두에 적응할 수 있는, 머티리얼 에디터만큼 강력하고 유연한 사운드 워크플로를 사용하여 게임 개발팀과 하나의 사운드 디자인 환경 내에서 더욱 긴밀하고 효율적으로 작업할 수 있습니다.

예를 들어, 전투 시퀀스 개발 과정에서 에인션트 원이 광선 충전에 소요하는 시간을 미세 조정하는 데 많은 반복작업 시간이 소모되었습니다. 다른 사운드 디자인 워크플로에서는 게임플레이 변경에 따라 사운드를 다시 작성해야 했을 수도 있습니다. 그 대신, sfx_Golem_RobotBlast_meta 메타사운드는 ChargeDuration 이라는 시간 입력을 사용하여 사운드 재생 기간을 결정했습니다. 메인 충전 사운드는 완전히 프로시저럴하므로 입력이 주어지면 거기에 맞춰 자동으로 사운드의 길이가 조정됩니다.

이 기능의 작동 모습을 확인하려면 입력(Inputs) 목록에서 'ChargeDuration'을 선택하고 디폴트값인 4.0초를 변경한 다음, 사운드를 재생해 봅니다.

ChargeDuration 시간 입력

이 함수 기능 덕분에 게임 디자인 팀은 이 사운드를 다시 작성하지 않고도 에인션트 원의 충전 기간을 필요에 따라 변경할 수 있었습니다.

오디오 파라미터 인터페이스를 사용하여 게임플레이 코드에서 활성화할 수 있는 트리거 등 작업에 사용할 수 있는 다른 입력 파라미터가 많이 있습니다. 이러한 파라미터를 사용하여 시작, 중지 및 중간 이벤트를 프로시저럴한 방식으로 처리하는 메타사운드를 생성할 수 있습니다. 예를 들어, 총을 발사하는 등의 액션을 위해 기존에는 발사 시작과 중지, 반복에 대한 여러 개의 사운드가 필요했지만, 이 시스템에서는 그 모든 사운드를 단 하나의 메타사운드로 압축할 수 있습니다.

StopBeam 이벤트

이 API를 사용하여 다른 오디오 파라미터도 조작할 수 있습니다. 이를 통해 메타사운드는 샘플 수준의 정확한 타이밍으로 복잡한 사운드 이펙트를 위한 사운드 재생 로직을 완전히 캡슐화할 수 있습니다.

메타사운드는 유연한 디자인과 무한한 베리에이션 기능에 상당한 향상된 퍼포먼스까지 갖추고 있습니다. 개별 사운드 이펙트가 일반적으로 디코딩되는 방식과 비슷하게 메타사운드 그래프는 비동기식으로 렌더링되므로 CPU 리소스 처리가 더 유연해집니다. 더 중요한 점은, 메타사운드는 진정한 오디오 렌더링 시스템이므로, 각 메타사운드는 그 복잡성과는 상관없이 게임 내 단일 음성을 나타낸다는 것입니다. 즉, 메타사운드 에디터에서 재생해서 듣는 사운드가 항상 게임 내 사운드와 정확하게 일치하며, 기존 시스템보다 더 잘 예측하여 게임 내 음성을 관리할 수 있게 되었습니다. 또한, UE5가 향후 특정 메타사운드 퍼포먼스를 개별적으로 프로파일링할 수 있게 되므로 오디오 퍼포먼스 평가 워크플로도 압축됩니다.

메타사운드에 대한 자세한 내용은 메타사운드 문서를 참조하세요.

쿼츠 오디오 동기화

일반적으로 게임플레이와 오디오 스레드 처리 방식이 일치하지 않으면, 둘 사이의 이벤트를 정확한 타이밍으로 동기화하기 어렵습니다. 쿼츠(Quartz) 는 게임플레이 이벤트에서 샘플 수준의 정확한 오디오 재생을 예약할 수 있는 클럭을 제공합니다. 쿼츠를 사용하여 사운드를 예약하면, 예약된 재생에 관련된 특정 타이밍을 기반으로 델리게이트를 구성할 수 있습니다. 쿼츠 클럭(Quartz Clock) 은 사운드 재생을 위한 이벤트 델리게이트를 제공하여 의도된 타이밍을 게임플레이에서 예측하고 해당하는 경우 다른 게임플레이 이벤트와 동기화할 수 있도록 합니다. 이를 통해 샘플 수준의 정확한 동적 음악 시스템은 물론 오디오와 높은 수준으로 동기화되는 게임 시스템을 만들 수 있습니다.

에인션트의 협곡에서는 음악 비트와 소절을 기반으로 이벤트를 예약하는 언더스코어 서브시스템(Underscore Subsystem) 이라는 동적 음악 시스템에 쿼츠를 사용합니다. 특히, 에인션트 원은 에코와의 대결 동안 음악 큐 타이밍에 따라 광선 발사 시점을 선택합니다. 이 시스템의 클래스는 언더스코어 C++ 클래스(Underscore C++ Classes) 에 포함되어 있습니다.

콘텐츠 드로어의 쿼츠 언더스코어 서브시스템

이 시스템의 음악은 음악 큐의 타임 시그니처와 다양한 음악 섹션, 트랜지션, 음악 스테이트 및 이벤트와 관련된 기타 정보에 대한 데이터가 담긴 UnderscoreCue 라는 특별한 데이터 에셋에 포함되어 있습니다. 에인션트 원의 전투 음악은 AncientContent > Audio > UnderscoreCues 에 있는 Arena_Battle_Cue 에셋에 포함되어 있습니다.

Arena_Battle_Cue 에셋 세부사항

여기에는 이 음악 큐를 구성하는 클립과 음악의 BPM타임 시그니처(Time Signature) 에 대한 참조가 포함되어 있습니다. 이 데이터는 음악에 대한 설명이며, 음악 시스템에서 쿼츠 클럭을 구성하고 각 섹션 간 타이밍 전환을 관리하는 데 사용됩니다. 도입부는 여러 스테이트로 나뉘어진 전투 음악의 주요 바디로 트랜지션하도록 구성되어 있습니다. 이러한 스테이트는 다양한 게임 내 이벤트에 따라 발생하며, 음악은 비트 동기식 엔딩으로 끝납니다. 쿼츠 덕분에 이 모든 과정이 끊김이 없는 샘플 수준으로 정확하게 발생합니다.

이러한 섹션이 게임 내 이벤트에 어떻게 관련되는지에 대한 예시를 확인하려면, AncientBattle Content 디렉터리에 있는 BP_LaserBP_AncientOne 전체에서 이 시스템에 대한 후크를 찾아보면 됩니다. 광선 자체에 대한 로직 외에도, BP_Laser에는 언더스코어 서브시스템에 이벤트를 바인딩하여 음악이 광선을 트리거할 수 있게 해주는 호출이 포함되어 있습니다.

그래프 내 레이저를 위한 언더스코어 서브시스템 음악 큐

또한, 광선 발사가 종료되는 시점과 에인션트 원이 패배하는 시점 등 곡의 다른 섹션으로 트랜지션할 시점을 음악에 전달하는 언더스코어 서브시스템에 대한 호출도 포함되어 있습니다.

언더스코어 서브시스템 음악 전환 큐

이상은 언더스코어 서브시스템에서 쿼츠를 사용하여 동적 음악 시스템을 지원하고 게임플레이와 오디오 간의 정확한 상호작용을 원활하게 해주는 방식에 대한 몇 가지 예시일 뿐입니다.

결론

빛의 화살로 에인션트 원을 공격하는 에코

보시다시피 언리얼 엔진 5에는 고퀄리티의 야심 찬 프로젝트를 그 어느 때보다 쉽게 구축할 수 있게 도와주는 놀라운 툴이 다양하게 준비되어 있습니다. 에인션트의 협곡은 이러한 툴을 모두 사용한 프로젝트로, 달성할 수 있는 프로덕션 가치에 대한 샘플이자 동일한 툴로 게임의 개발 프로세스를 간소화하는 방법에 대한 사례 연구가 되어줍니다. UE5를 통해 개발자는 더 적은 단계로 더 높은 퀄리티의 비주얼을 달성하고, 더 적은 노력으로 더 큰 월드를 구현하고, 크리에이터의 역량을 높여주는 툴로 더욱 디테일한 상호작용과 환경을 달성할 수 있습니다.