TIL

[언리얼 GAS 이해하기] #7 GAS 전체 구조 한눈에 보기

think95592 2026. 6. 30. 20:29

 

지금까지 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가 서로 협력하여 캐릭터의 행동과 상태를 체계적으로 관리하는 시스템이다.