TIL

[언리얼 GAS 이해하기] #6 GameplayAbility는 네 요소를 어떻게 사용할까?

think95592 2026. 6. 29. 20:40

지금까지 GAS의 핵심 요소들을 하나씩 살펴봤다.

  • ASC : 중앙 관리자
  • AttributeSet : 능력치 저장
  • GameplayEffect : 능력치 변경
  • GameplayTag : 상태 관리

그렇다면 마지막으로 궁금한 점이 생긴다.

"GameplayAbility는 이 모든 요소를 어떻게 사용하는 걸까?"

이번 글에서는 GAS의 전체 동작 흐름을 GameplayAbility를 중심으로 정리해보자.


GameplayAbility란?

GameplayAbility는 캐릭터가 수행할 수 있는 행동(Action) 을 정의하는 클래스이다.

예를 들어

  • 공격
  • 달리기
  • 점프
  • 회복 아이템 사용
  • 스킬 사용

이 모두 GameplayAbility로 구현할 수 있다.

Ability는 직접 능력치를 변경하지 않는다.

대신 필요한 GameplayEffect를 적용하거나 GameplayTag를 추가·제거하면서 게임 플레이를 만들어낸다.


GameplayAbility와 다른 요소들의 관계

GameplayAbility는 혼자 동작하지 않는다.

GameplayAbility
        │
        ├── ASC에게 실행 요청
        ├── GameplayEffect 적용
        ├── GameplayTag 추가/제거
        └── Attribute 변경(Effect를 통해)

즉,

GameplayAbility는 GAS의 여러 요소를 연결하는 역할을 한다.


실제 실행 흐름

플레이어가 Shift를 눌러 달리기를 시작한다고 가정해 보자.

Shift 입력
        ↓
ASC
        ↓
Sprint GameplayAbility 실행
        ↓
State.Sprinting Tag 추가
        ↓
Speed Buff GameplayEffect 적용
        ↓
MoveSpeed Attribute 증가

여기서 각 요소의 역할은 다음과 같다.

요소역할

ASC Ability 실행 및 관리
GameplayAbility 달리기 행동 수행
GameplayTag 달리는 상태 표시
GameplayEffect 이동속도 증가
Attribute MoveSpeed 값 변경

GameplayAbility는 실행 전에 조건을 확인한다

Ability는 아무 때나 실행되지 않는다.

예를 들어 Sprint Ability는

  • 기절 상태가 아니어야 하고
  • 스태미나가 충분해야 한다.
Shift 입력
        ↓
ASC
        ↓
Sprint Ability 실행 요청
        ↓
State.Stunned 확인
        ↓
Stamina 확인
        ↓
조건 만족
        ↓
Ability 실행

조건을 만족하지 못하면 Ability는 실행되지 않는다.


GameplayAbility는 GameplayEffect를 적용한다

달리기를 시작했다고 해서 Ability가 직접 MoveSpeed를 수정하지는 않는다.

대신 Speed Buff GameplayEffect를 적용한다.

Sprint Ability
        ↓
Speed Buff Effect 적용
        ↓
MoveSpeed 증가

이렇게 역할을 분리하면

같은 Effect를 다른 Ability에서도 재사용할 수 있다.

예를 들어

  • Sprint
  • 신발 아이템
  • 버프 스킬

모두 같은 Speed Buff Effect를 사용할 수 있다.


GameplayAbility는 GameplayTag도 관리한다

달리기를 시작하면

State.Sprinting

Tag가 추가된다.

달리기가 끝나면

State.Sprinting

Tag가 제거된다.

다른 Ability들은 이 Tag를 보고 행동을 결정한다.

예를 들어

State.Stunned

태그가 있으면 Sprint Ability는 실행되지 않는다.


우리 프로젝트에 적용해 보면

마트 습격 게임을 예로 들어보자.

훔치기

Steal Ability
        ↓
Steal Effect
        ↓
Inventory 증가

에너지 드링크 사용

Drink Ability
        ↓
Energy Drink Effect
        ↓
Stamina 증가
MoveSpeed 증가

테이저 공격

Taser Ability
        ↓
Stun Effect
        ↓
State.Stunned 추가

무게 초과

Inventory 무게 증가
        ↓
State.OverWeight 추가
        ↓
MoveSpeed 감소 Effect 적용

지금까지 배운 GAS 구조

플레이어 입력
        ↓
ASC
        ↓
GameplayAbility 실행
        ↓
GameplayEffect 적용
        ↓
Attribute 변경
        ↓
GameplayTag 추가/제거

ASC는 전체를 관리하고,

GameplayAbility는 행동을 수행하며,

GameplayEffect는 능력치를 변경하고,

GameplayTag는 현재 상태를 나타낸다.


GAS를 한 문장으로 정리하면

  • ASC : 중앙 관리자
  • GameplayAbility : 행동
  • GameplayEffect : 능력치 변경 규칙
  • Attribute : 능력치 데이터
  • GameplayTag : 현재 상태

이 다섯 요소가 함께 동작하면서 GAS를 구성한다.


정리

GameplayAbility

  • 캐릭터의 행동을 정의한다.
  • ASC를 통해 실행된다.
  • GameplayEffect를 적용한다.
  • GameplayTag를 추가·제거한다.
  • Attribute는 GameplayEffect를 통해 변경한다.

전체 실행 흐름

입력
    ↓
ASC
    ↓
GameplayAbility
    ↓
GameplayEffect
    ↓
Attribute 변경
    ↓
GameplayTag 추가/제거

핵심 한 문장

GameplayAbility는 GAS의 모든 요소를 연결하여 실제 게임 플레이를 만들어내는 핵심 클래스이다.