지금까지 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의 모든 요소를 연결하여 실제 게임 플레이를 만들어내는 핵심 클래스이다.
'TIL' 카테고리의 다른 글
| TIL - 프로그래머스 「2016년」 (0) | 2026.07.01 |
|---|---|
| [언리얼 GAS 이해하기] #7 GAS 전체 구조 한눈에 보기 (0) | 2026.06.30 |
| 트러블슈팅 - 레벨 전환/Restart 중 크래시 해결 (0) | 2026.06.27 |
| [언리얼 GAS 이해하기] #5 GameplayTag는 왜 필요할까? (0) | 2026.06.26 |
| [언리얼 GAS 이해하기] #4 GameplayEffect는 어떻게 능력치를 바꿀까? (0) | 2026.06.25 |