지금까지 GAS의 핵심 요소들을 하나씩 살펴보았다.
- #1 ASC (Ability System Component)
- #2 AttributeSet
- #3 Attribute와 float의 차이
- #4 GameplayEffect
- #5 GameplayTag
- #6 GameplayAbility
이번 글에서는 지금까지 배운 내용을 하나의 그림으로 연결해 보자.
GAS는 다섯 가지 핵심 요소로 이루어진다
ASC
(Ability System Component)
│
┌─────────────┼─────────────┐
│ │ │
GameplayAbility GameplayEffect GameplayTag
│ │ │
└─────────────┼─────────────┘
│
AttributeSet
│
Health / Stamina /
MoveSpeed / Attack
각 요소의 역할은 다음과 같다.
구성 요소역할
| ASC | GAS의 중앙 관리자 |
| GameplayAbility | 행동을 정의 |
| GameplayEffect | 능력치 변경 |
| GameplayTag | 현재 상태 관리 |
| AttributeSet | 능력치 저장 |
실제 실행 흐름
플레이어가 Shift를 눌러 달리기를 시작한다고 가정해 보자.
① 입력 발생
Shift 입력
② ASC가 Ability 실행 요청을 받는다.
ASC
↓
Sprint Ability 실행 요청
ASC는
- 실행 가능한지
- 현재 상태는 어떤지
먼저 검사한다.
③ GameplayTag 확인
예를 들어
State.Stunned
태그가 있다면
Sprint 실행 불가
가 된다.
태그가 없다면
다음 단계로 진행한다.
④ GameplayAbility 실행
Sprint Ability
가 실행된다.
Ability는
직접 능력치를 변경하지 않는다.
대신 필요한 GameplayEffect를 적용한다.
⑤ GameplayEffect 적용
Speed Buff Effect
↓
MoveSpeed +50%
GameplayEffect는 Attribute를 변경하는 역할을 담당한다.
⑥ AttributeSet 변경
MoveSpeed
600
↓
900
현재 능력치가 변경된다.
이 과정에서
AttributeSet의
PostGameplayEffectExecute()
등의 함수가 호출되어
필요한 후처리를 수행한다.
⑦ GameplayTag 추가
달리는 동안
State.Sprinting
태그가 추가된다.
다른 Ability들은
이 태그를 확인해서
중복 실행 여부 등을 판단한다.
전체 실행 흐름
플레이어 입력
│
▼
ASC
│
▼
GameplayAbility 실행
│
▼
GameplayEffect 적용
│
▼
AttributeSet 변경
│
▼
GameplayTag 추가/제거
│
▼
게임 플레이 반영
이것이 GAS에서 가장 기본적인 실행 순서이다.
각 요소를 한 문장으로 정리하면
ASC
"모든 것을 관리하는 중앙 관리자"
GameplayAbility
"캐릭터가 어떤 행동을 할 것인가"
GameplayEffect
"능력치를 어떻게 변경할 것인가"
AttributeSet
"능력치를 어디에 저장할 것인가"
GameplayTag
"현재 어떤 상태인가"
우리 프로젝트에 적용하면
마트 습격 게임을 예로 들어보자.
플레이어가 에너지 드링크를 마시는 상황이다.
플레이어 입력
│
▼
Drink Ability
│
▼
Energy Drink Effect
│
▼
Stamina 증가
MoveSpeed 증가
│
▼
State.Buffed 추가
반대로 보안요원의 테이저를 맞으면
보안요원 Ability
│
▼
Stun Effect
│
▼
State.Stunned 추가
│
▼
Sprint Ability 실행 불가
GAS는 이런 모든 과정을 하나의 구조 안에서 처리한다.
지금까지 시리즈를 마치며
처음 GAS를 접하면
- ASC
- GameplayAbility
- GameplayEffect
- GameplayTag
- AttributeSet
이 각각 따로 노는 것처럼 느껴질 수 있다.
하지만 실제로는
모든 요소가 서로 연결되어 하나의 시스템을 구성한다.
각 요소의 역할만 이해하면
GAS는 생각보다 복잡한 시스템이 아니라
"행동 → 효과 → 능력치 → 상태"
를 체계적으로 관리하는 프레임워크라는 것을 알 수 있다.
시리즈 요약
글내용
| #1 | ASC란 무엇인가 |
| #2 | AttributeSet은 왜 필요한가 |
| #3 | Attribute와 float의 차이 |
| #4 | GameplayEffect는 어떻게 능력치를 바꾸는가 |
| #5 | GameplayTag는 왜 필요한가 |
| #6 | GameplayAbility는 네 요소를 어떻게 사용하는가 |
| #7 | GAS 전체 구조와 실행 흐름 |
핵심 한 문장
GAS는 ASC를 중심으로 GameplayAbility, GameplayEffect, AttributeSet, GameplayTag가 서로 협력하여 캐릭터의 행동과 상태를 체계적으로 관리하는 시스템이다.
'TIL' 카테고리의 다른 글
| TIL - 카드 뭉치 문제 풀이와 UI 구조 개선 방향 (0) | 2026.07.02 |
|---|---|
| TIL - 프로그래머스 「2016년」 (0) | 2026.07.01 |
| [언리얼 GAS 이해하기] #6 GameplayAbility는 네 요소를 어떻게 사용할까? (0) | 2026.06.29 |
| 트러블슈팅 - 레벨 전환/Restart 중 크래시 해결 (0) | 2026.06.27 |
| [언리얼 GAS 이해하기] #5 GameplayTag는 왜 필요할까? (0) | 2026.06.26 |