라이라 샘플 게임은 UE5의 모듈식 구조 설계와 유용한 플러그인을 적용한 학습용 리소스이다.

샘플의 모든 부분을 하나하나 분석하기는 어렵지만 나에게 새로운 용어, 기술, 프레임워크를 이해하고자 글을 남겨 본다.

언리얼 한국 채널 공식 유튜브 영상을 보고 정리하긴 했으나 부족한 부분이 있을 수 있다. 

 

라이라 게임의 구성 요소

Gameplay

Modular gameplay setup

Multiplayer ability system

Inventory and equipment

Gameplay messaging

Ranged Wapons

Aim Assist

Hit impacts and number pops

Accolades

Team Management

Game phases

 

User interface

Build cross-platform UI and preview in editor

Seamlessly switch between Mouse+Keyboard, Gamepad, or Touch

Extension System

 

Audio

Audio mix and device settings

Dynamic music system

Contextual effects

 

Content creation

Level-building tools

Prototype grid materials

Manny and Quinn characters

Rich animation setup

Basic cosmetics system

 

User-facing options

Typical video and audio options

Rebindable controls

Accessibility features

Easy to add new settings

 

Shippability

Scalability across platforms

Localization pipeline

Loading screens

Asset validation and audits

Cheats and developer settings

 

Multiplayer / online

EOS and EAS integration

Online subsystem abstractions

 

 

모듈형 게임 방식

GameMode를 데이터 기반 방식으로 대체한다고 생각

피처를 다음과 같은 액터에 구성

Character / Pawn

Controller

Player State

Game State

 

게임 피처 플러그인 

일반적인 플러그인과 다르게 런타임에 활성화를 동적으로 컨트롤하는 게임 로직이 있다.

활성화되었을 때 수행할 액션을 표시한다.

애셋 매니저를 확장하고 스캔할 프라이머리 애셋 유형을 새로 정의할 수 있다.

 

액션

ㄴ 활성화 또는 비활성화됐을 때 필수 애셋을 미리 로드하고 코드를 실행하는 역할을 한다.

ㄴ 흔히 사용하는 액션은 Add Abilities, (폰에 능력 추가), Add Components, Add Widgets 이다.

 

Pawn Data

ㄴ 월드에 스폰할 플레이어 폰 클래스 종류

ㄴ 폰을 빙의할 때 사용할 디폴트 카메라 모드

ㄴ 폰이 할 수 있는 일 - 어빌리티 세트, 어빌리티 관계 매핑, 입력 설정

 

Ability Set

ㄴ 어빌리티 게임플레이 어빌리티, 이펙트, 어트리뷰트로 구성된 그룹

ㄴ 어빌리티는 캐릭터가 새로운 액티브 또는 패시브 어빌리티를 수행하도록 허용한다.

ㄴ 이펙트는 적용될 때마다 어트리뷰트를 변경한다.

 

User Facing Experience

ㄴ Primary Asset이라 런타임에서 애셋 매니저를 이용하여 검색할 수 있다. (애셋 매니저에 대한 인사이드 언리얼 비디오 참조)

 

Online Feautres

ㄴ 온라인 서브시스템을 사용

ㄴ 사용자 로그인, 인증

ㄴ 매치 호스팅, 매치 검색

ㄴ 빠른 플레이

ㄴ CommonUser CommonSession 플러그인

 

Scalability 

ㄴ 플랫폼 확장성 세팅

ㄴ 프레임 페이싱 모드 (콘솔, 모바일, 데스크탑)

ㄴ 콘솔 : 세밀한 비디오 세팅

ㄴ 모바일 : FPS와 품질간의 자동적인 트레이드 오프

ㄴ 콘솔 : 옵션 프리셋 제공

 

Manny & Quinn

ㄴ 메타휴먼 스켈레톤과 풍부한 애니메이션 구성

 

Animation setup

ㄴ 링크된 애니메이션 레이어를 사용하면 블루프린트를 모듈식으로 빌드할 수 있다.

ㄴ 동시에 모두 로드하지 못할 수 있는 애니메이션 레이어가 많은 게임에서 더욱 효율적으로 메모리를 관리할 수 있다.

ㄴ Distance matching과 stride warping을 사용하여 플레이어 이동속도에 맞춰 애니메이션을 조정

ㄴ Orientation warping을 사용하여 다양한 이동 각도에 맞춰 애니메이션을 조정

ㄴ Turn in place (제자리 회전) 시스템은 플레이어가 정지 상태에서 회전할 때 애니메이션을 더욱 자연스럽게 연출

상체를 회전하기 때문에 회전 반경이 너무 클 경우 리포지셔닝 애니메이션을 재생

ㄴ foot placement 시스템은 애니메이션 컨택트 부분 도중에 발이 표면을 관통하지 않고 표면 위에 있도록 조정한다.

 

Cosmetics and Team Colors

Cosmetic system

보이지 않는 애니메이션 스켈레톤에 임의 액터를 붙일 수 있다.

전체 메시를 교체하거나 모자나 배낭같은 개별 어태치먼트를 추가하는데 사용할 수 있다.

cosmetic의 게임플레이 태그에 따라 다른 애니메이션을 선택하도록 할 수 있다.

Team Color System

머터리얼 또는 나이아가라 파라미터를 현재 팀에 따라 구동할 수 있고 팀 변경을 살펴볼 수 있다.

런타임에서 팀 컬러 디스플레이 에셋을 편집하여 색을 미세조정하면서 어떻게 보이는지 확인할 수 있다.

 

Enhanced Input System

ㄴ 사용자가 키 입력을 지정할 수 있다.

ㄴ 게임 플레이 중에도 입력 시스템을 추가할 수 있다.

ㄴ 액션은 트리거나 모디파이어를 포함할 수 있다.

ㄴ 새로운 액션을 추가하려면 Key Mapping Context에 디폴트 키 바인드를 입력 액션에 적용하고 입력 환경설정에서 트리거될 태그를 정의하고 정의된 태그를 어빌리티와 연결해야 한다.

 

레벨 디자인

ㄴ 지오메트리 스크립트를 이용하여 레벨을 빌드할 수 있는 툴을 생성하고 프로덕션 과정에서 조정

ㄴ 구운 스태틱 메시 우클릭 > Swap to Generated Mesh > 스태틱 메시를 블루프린트와 게임 뷰포트를 통해 편집할 수 있다. 다시 구우면 된다.

 

레벨 만들기

ㄴ Contents / Tools / BakedGenerateMeshSystem의 콜드 스토리지 블루프린트는 구운 스태틱 메시 전체와 해당 스태틱 메시의 라이브 버전을 추적한다. 

ㄴ ShooterCore Content / Blueprint 에 어빌리티 스포너, 무기 스포너, 런치패드 등이 있다. 맵에 자유롭게 배치할 수 있다.

ㄴ 봇을 위한 NavMeshBoundVolume

ㄴ 에디터 설정 > 라이라 메뉴에서 코스메틱을 추가할 수 있다. 개발자 세팅에서는 스폰할 봇의 개수를 오버라이드할 수 있다.

 

어빌리티와 input tag가 동작하는 방식

ㄴ Experience > HeroData > AbilitySet > Ability

ㄴ 어빌리티는 태그를 기반으로 트리거된다. 대쉬의 태그는 InputTag.Ability.Dash (계층 구조)

ㄴ Experience 내에서 히어로 마네킹에 이 태그가 호출되면 해당 어빌리티가 트리거된다.

ㄴ 입력 환경설정에서 어빌리티와 Input Action(Enhanced Input system)과 태그를 링크한다.

ㄴ 입력 환경설정에서 InputAction과 태그를 링크하고, AbilitySet에서 어빌리티와 태그를 링크한다.

ㄴ 키를 누르면 링크된 태그가 폰에 호출되고, 폰은 태그와 연결된 어빌리티를 트리거한다.

ㄴ 폰은 input, input tag, ability만 받을 뿐이다. 나중에 폰 클래스를 바꾸더라도 어빌리티와 입력 시스템은 정상적으로 추가된다.

 

아이템과 장비가 처리되는 방식

아이템 (Lyra Inventory Item Definition)

ㄴ Fragment 여러 개로 구성된다. (장착 가능여부, UI, Stat Setting)

ㄴ 픽업한 아이템은 라이라 인벤토리 시스템에 추가된다.

장비 정의 (Lyra Equipment Definition)

ㄴ 아이템 인스턴스가 필요하다 (아이템의 종류, 장착시 이펙트, 장착한 플레이어에게 부여할 어빌리티 세트

ㄴ 어빌리티를 오버라이드하여 아이템 사용 시 발생하는 이펙트와 코스메틱 관련 사항을 결정

https://www.youtube.com/watch?v=30lakZ4s8FE 

 

https://www.youtube.com/watch?v=0lEr62LQFpk 

 

https://docs.unrealengine.com/5.0/ko/lyra-sample-game-in-unreal-engine/

 

라이라 샘플 게임

라이라 샘플 게임의 기술을 사용하여 언리얼 엔진 5 프로젝트를 개발하는 방법을 알아봅니다.

docs.unrealengine.com

 

+ Recent posts