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를 변경하는 규칙이며, 데미지·회복·버프·디버프를 모두 담당하는 핵심 요소이다.
'TIL' 카테고리의 다른 글
| 트러블슈팅 - 레벨 전환/Restart 중 크래시 해결 (0) | 2026.06.27 |
|---|---|
| [언리얼 GAS 이해하기] #5 GameplayTag는 왜 필요할까? (0) | 2026.06.26 |
| [언리얼 GAS 이해하기] #3 Attribute와 float 변수의 차이 (0) | 2026.06.24 |
| [언리얼 GAS 이해하기] #2 AttributeSet은 왜 따로 존재할까? (0) | 2026.06.23 |
| [언리얼 GAS 이해하기] #1 ASC(Ability System Component)란? (0) | 2026.06.22 |