TIL

[언리얼 GAS 이해하기] #4 GameplayEffect는 어떻게 능력치를 바꿀까?

think95592 2026. 6. 25. 20:54

GameplayEffect란?

GameplayEffect(GE)는 GAS에서 능력치(Attribute)를 변경하는 역할을 하는 객체이다.

쉽게 말하면,

"Attribute를 어떻게 바꿀지 정의해 놓은 규칙" 이라고 생각하면 된다.

예를 들어

  • 데미지를 받는다.
  • 체력을 회복한다.
  • 이동속도가 빨라진다.
  • 독에 걸려 지속적으로 피해를 입는다.

이 모든 것이 GameplayEffect로 구현된다.


왜 GameplayEffect가 필요할까?

예를 들어 플레이어의 체력을 20 감소시키고 싶다고 해보자.

일반적인 방식이라면

Health -= 20.f;

처럼 직접 값을 수정하면 된다.

하지만 GAS에서는 이렇게 하지 않는다.

대신 GameplayEffect를 생성해서 Attribute를 변경한다.

Damage Effect
        ↓
ASC
        ↓
Health 감소

왜냐하면 GAS는

  • 버프
  • 디버프
  • 지속시간
  • 중첩(Stack)
  • 네트워크 동기화

등을 모두 함께 관리해야 하기 때문이다.


GameplayEffect는 Attribute를 직접 변경한다

GameplayEffect는 Ability를 실행하지 않는다.

Ability가 GameplayEffect를 적용하고,

GameplayEffect가 Attribute를 변경한다.

구조는 다음과 같다.

GameplayAbility
        ↓
GameplayEffect
        ↓
Attribute

예를 들어 Sprint Ability를 사용하면

Sprint Ability
        ↓
Speed Buff Effect
        ↓
MoveSpeed 증가

이런 흐름으로 동작한다.


GameplayEffect의 대표적인 종류

1. Instant

즉시 한 번 적용된다.

예시

  • 데미지
  • 즉시 회복
Damage Effect
↓
HP -20
↓
끝

2. Duration

일정 시간 동안 유지된다.

예시

  • 이동속도 증가
  • 공격력 증가
5초 동안

MoveSpeed +30%

시간이 지나면 자동으로 사라진다.


3. Infinite

제거될 때까지 계속 유지된다.

예시

  • 장비 효과
  • 패시브 버프
장비 착용
↓
공격력 +10
↓
장비 해제 전까지 유지

GameplayEffect는 어떻게 Attribute를 변경할까?

예를 들어

현재 체력이

Health = 100

이라고 해보자.

데미지 Effect를 적용하면

Damage Effect
↓
Health -20

결과

Health = 80

이번에는 회복 Effect를 적용하면

Heal Effect
↓
Health +10

결과

Health = 90

GameplayEffect는 이런 식으로 Attribute를 변경한다.


실제 실행 흐름

플레이어가 공격을 받는 상황을 보자.

Enemy Attack
        ↓
Attack Ability
        ↓
Damage GameplayEffect
        ↓
ASC
        ↓
Health Attribute 변경
        ↓
AttributeSet
        ↓
PostGameplayEffectExecute()

Attribute가 변경되면 AttributeSet에서 후처리를 수행할 수 있다.

예를 들어

  • HP가 0 이하인지 확인
  • 사망 처리
  • UI 갱신

등을 여기서 진행한다.


여러 GameplayEffect도 동시에 적용 가능하다

플레이어가

  • 에너지 드링크를 마시고
  • 독에 걸렸다고 해보자.

현재 적용 중인 Effect는

ASC

Active Effects
├─ Speed Buff
└─ Poison

결과

MoveSpeed +20%

HP -5/sec

처럼 여러 GameplayEffect가 동시에 적용될 수 있다.


GameplayEffect와 GameplayAbility의 차이

많이 헷갈리는 부분이다.

GameplayAbility는

"무엇을 할 것인가"

GameplayEffect는

"능력치를 어떻게 바꿀 것인가"

를 담당한다.

예시

GameplayAbility
↓
Sprint

GameplayEffect
↓
MoveSpeed +50%

Attribute
↓
MoveSpeed 변경

즉,

Ability는 행동이고,

Effect는 결과를 적용하는 규칙이다.


정리

GameplayEffect

  • Attribute를 변경하는 객체
  • Ability가 적용한다.
  • ASC가 관리한다.

대표적인 종류

  • Instant : 즉시 적용
  • Duration : 일정 시간 유지
  • Infinite : 제거 전까지 유지

실행 흐름

GameplayAbility
        ↓
GameplayEffect
        ↓
ASC
        ↓
Attribute 변경
        ↓
AttributeSet 후처리

핵심 한 문장

GameplayEffect는 GAS에서 Attribute를 변경하는 규칙이며, 데미지·회복·버프·디버프를 모두 담당하는 핵심 요소이다.