Blog

ENGINEERING NOTE

[Unreal Engine] 언리얼엔진5 Gameplay Ability System(GAS)를 시작하며.

보통 언리얼 엔진의 기능이나 프레임워크를 보다보면 유독 불친절한 문서들이 있다.내 경우에는 그게 게임플레이 어빌리티 시스템 문서였다.게임플레이 어빌리티 시스템 개요문서를 보면 알겠지만 처음 GAS를 시작하는 사람의 입장에서 이 문서는 정말 도움이 되기 힘들다.그런 의미

Unreal Engine

들어가며

보통 언리얼 엔진의 기능이나 프레임워크를 보다보면 유독 불친절한 문서들이 있다. 내 경우에는 그게 게임플레이 어빌리티 시스템 문서였다.

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

문서를 보면 알겠지만 처음 GAS를 시작하는 사람의 입장에서 이 문서는 정말 도움이 되기 힘들다. 그런 의미에서 앞으로 쓸 포스트들이 도움이 되었으면 좋겠다.

Gameplay Ability System (GAS)는 무엇인가?

Gameplay Ability System(GAS)는 언리얼 엔진에서 스킬, 버프, 디버프, 능력치 계산과 같은 복잡한 게임플레이 능력을 선언적이고 네트워크 친화적으로 관리하기 위한 프레임워크다. 대규모 RPG나 액션 게임에서 공통적으로 반복되는 시스템을 유연하게 구현할 수 있도록 설계되어 있다.

기본적으로 싱글플레이의 경우, 스스로 개발한 전투 시스템을 사용해도 무방하지만 멀티플레이 환경에서는 개발난이도가 기하급수적으로 올라간다. 그런 의미에서 Unreal Engine은 GAS를 통해 멀티플레이를 더욱 쉽개 개발할 수 있도록 지원해주는 것이다.

Gameplay Ability System (GAS)의 구성 요소

구성 요소목적
Ability System Component (ASC)액터가 GAS를 이용하게 해주는 핵심 컴포넌트.
Gameplay Ability스킬이나 액션 같은 능력의 실행 로직을 정의. 발동 조건, 애니메이션, 비용 처리 등 포함
Ability TaskAbility 내부에서 비동기 이벤트 처리를 돕는 유틸리티. 예: 애니메이션 재생 대기, 타겟 지정 대기 등
Gameplay Effect능력 발동 시 발생하는 능력치 변화나 상태 이상 등의 효과를 정의
Attribute Set캐릭터의 체력, 마나, 공격력 등의 능력치를 선언하고 관리하는 구조체 클래스
Gameplay Tag능력/효과/상태 등에 대해 식별 및 조건 판단을 위한 키워드 시스템
Gameplay Cue능력 발동 시의 시각적/청각적 효과(이펙트, 사운드)를 처리하는 시스템

아직은 해당 요소들이 어떻게 사용되고 어떤 로직을 통해 이용되는 지 감이 안올 것이다. 그러나 핵심 매커니즘만 이해한다면 GAS를 통해 어떤 로직의 프로젝트던 활용이 가능해질 것이다.

Gameplay Ability System의 사용예시(Usecase)

캐릭터가 FireBall스킬을 사용하여 적에게 피해를 입히고, 3초 동안 화상 상태를 부여한다.

1. Ability System Component (ASC)

  • Ability System Component (ASC)를 소유한 캐릭터는 AbilitySystemComponent를 통해 Ability를 발동시킬 수 있다.

2. Gameplay Ability

  • 특정 입력 혹은 로직을 통해 ASC가 Ability를 발동(실행)시켰다면, 해당 Ability의 기능이 실행된다.
  • Ability 내부 로직에서는 애니메이션 재생(AbilityTask), 사운드 및 파티클 이펙트 재생(GameplayCue), 적에게 피해를 입히기 및 화상 상태 부여(Gameplay Effect) 등을 구성할 수 있다.

3. Ability Task

  • 비동기적으로 다양한 작업을 수행한다. 보통 애니메이션 혹은 이벤트 수신 등와 같은 대기 작업 등에 이용한다.

4. Gameplay Effect

  • Ability를 발동하는데 필요한 Cost, Cooldown 등에 사용하기도 한다.
  • Attribute(데이터)의 값을 변경하거나 다룬다.
  • 적이 가진 Attribute(ex. Health)의 값을 Gameplay Effect를 통해 감소시킨다.

5. Attribute Set

  • 아군 캐릭터/적 캐릭터의 체력(Health) 등은 AttributeSet 내에 정의된 속성이다.
  • GameplayEffect는 해당 Attribute 데이터 값들을 참조하여 HP를 감소시킨다.

6. Gameplay Cue

FireBall이 적에게 명중할 때, 폭발 이펙트와 불타는 사운드가 재생된다.

7. Gameplay Tag

Gameplay Tag를 통해 Ability를 발동시키거나 GameEvent를 수신하거나 Gameplay Effect와 Gameplay Cue 등을 지정하여 실행시킬 수 있는 등 다양한 구성 요서에서 상태/기능 구분과 조건 판단 등에 널리 쓰인다.

대략적인 흐름

키 입력 → ASC → GameplayAbility(FireBall) → AbilityTask(명중 대기) → GameplayEffect(데미지 + 화상) 적용 → Attribute 감소 → GameplayCue 재생


처음엔 그냥 단어와 개념만 잡아둬도 무방하다. 하나씩 하나씩 사용하다보면 저절로 전체적인 구조를 이해할 수 있으니 포기하지 않도록 빈다.