UnrealEngine/언리얼

[UE5] GAS / GameAbilitySystem 겉핥기(feat. Lyra)

H프레임 2023. 4. 3. 23:20

 

언리얼5에 들어와서 유독 GAS에 대해 강조를 하는 영상을 봤다. 언리얼 엔진팀이 많은 걸 시도하는 것 같아서 메타 휴먼, 퀵셀브릿지도 사용해보고, 웨비나에서 레벨, 라이트 등의 강좌를 진행하기에 매주 화요일 열심히 들어보았다. 다시 보기가 가능하다는 사실을 알고부터는 조금 대충 보기도 했다. 다시 보면 되니까..

 

언리얼에서 Lyra라는 샘플 프로젝트를 공유해주고 있는데 샘플 이상의 가치를 한다고 해서 들여다 보고 있다. 

 

 

열어보면 GameAbilitySystem을 활용해서 구현되어 있는데 이 GameAbilitySystem을 어떻게 사용하고 있는지 하나씩 다 뜯어보기엔 시간이 좀 걸릴 것 같다..

 

 

GAS 의 장점은 아마 데디를 사용하는 멀티게임의 경우 데디를 GAS라는 프레임워크 활용을 통해 개발자가 덜 신경쓸 수 있게 도와주겠다는 것 같았다. 

 

 

https://docs.unrealengine.com/5.0/ko/gameplay-ability-system-for-unreal-engine/

 

게임플레이 어빌리티 시스템

게임플레이 어빌리티 시스템 개요

docs.unrealengine.com

 

위 링크는 언리얼 공식 문서이다. 

 

 

며칠간 Lyra 프로젝트도 열어보고, GameAbilitySystem에 대해 잘 정리된 깃허브와 유튜브를 보면서 따라해본 결과 잘 쓰면 확실히 편할 것 같았다.

 

예를들어 A 스킬을 쓰고자 하는데 현재 상태가 스턴이라면 쓸 수 없게 처리한다거나 하는 상황을 Tag로 처리하여 편하게 막을 수 있도록 되어있었다. 

 

 

GameAbilitySystem을 이용해서 슈팅게임의 기본 공격을 도전해봤다. Lyra프로젝트에서 이식해서 써보려고 하다가 엮인 부분이 꽤 있어서 간단하고 쉽게 만들어보기 위해 개인 프로젝트를 만들었다.

 

GAS를 사용하는데 있어서 아래의 5개가 큰 역할을 하고 있었다. 

 

1. Ability System Component

 - GAS를 사용하려면 Component가 필수이다. 컴포넌트의 함수를 통해 Ability를 실행시키고 Effect를 적용시킨다.

 

2. GameplayAbility

- 움직임 공격 등등 행동에 관한 것을 GameplayAbility에 구현한다.

 

3. Gameplay Attributes

- 체력, 마나 등등 스탯을 작성하는 곳. 변수만 존재한다고 보면 되지 않을까.

 

4. Gameplay Effect

- 위의 스탯 변화를 주는 곳. GameplayEffect를 통해서만 Attribute를 변화시켜야한다.

 

5. Gameplay Cue

- 클라이언트에서 처리할 사운드, 이펙트 등을 Cue를 통해 처리한다. 

 

토이 프로젝트 하면서 심화해서 사용해봐야겠다.