Unreal Engine GAS(Gameplay Ability System) 심화LESSON 02
GAS 핵심 구성: ASC, Ability, Attribute, Effect, Tag, Cue
난이도심화
예상 시간110분
선수지식1강의 GAS 도입 기준
2강. GAS 핵심 구성: ASC, Ability, Attribute, Effect, Tag, Cue
1. 이번 강의에서 해결할 문제
GAS 클래스를 따로 외우면 체력 변경을 Ability에서 할지 AttributeSet에서 할지, 피격 이펙트를 Effect와 Cue 중 어디에 둘지 결정하기 어렵습니다. 클래스 이름보다 한 번의 공격이 각 계층을 통과하는 방향을 이해해야 합니다.
2. 학습 목표
3. 핵심 개념
| 요소 | 책임 | 저장하면 안 되는 것 |
|---|---|---|
| ASC | Ability·Effect·Tag·Attribute와 예측 흐름 관리 | 게임 전체 Match 규칙 |
| Ability | 한 행동의 활성화·비동기 실행·종료 조정 | 영구 체력 원본 |
| AttributeSet | 수치 정의·Clamp·Effect 후처리 | 입력과 VFX |
| Gameplay Effect | 수치·태그 변경의 명세와 수명 | 타깃 조준 UI |
| GameplayTag | 계층적 상태·요구·차단 언어 | 임의 문자열 분기 |
| Gameplay Cue | VFX·SFX·일시 UI 피드백 | 데미지·쿨다운 원본 |
4. 구현
기본 공격 데이터 흐름을 실제 타입으로 표시합니다.
CombatFlowProbe.cpp
void LogCombatFlow(UAbilitySystemComponent* SourceASC,
UAbilitySystemComponent* TargetASC,
TSubclassOf<UGameplayEffect> DamageEffect)
{
if (!SourceASC || !TargetASC || !DamageEffect) return;
FGameplayEffectContextHandle Context = SourceASC->MakeEffectContext();
Context.AddInstigator(SourceASC->GetAvatarActor(), nullptr);
FGameplayEffectSpecHandle Spec =
SourceASC->MakeOutgoingSpec(DamageEffect, 1.0f, Context);
if (Spec.IsValid())
{
SourceASC->ApplyGameplayEffectSpecToTarget(
*Spec.Data.Get(), TargetASC);
}
}
서버가 유효한 타깃을 확정한 뒤 Spec을 만들고 Target ASC에 적용합니다. Effect가 Attribute를 변경하고 Granted Tag·Cue를 제공할 수 있습니다. UI는 Attribute Delegate를, 표현은 Cue를 구독합니다.
Input → ASC activation → Ability → server target validation
→ GameplayEffectSpec → Target ASC → Attribute/Tag
→ Attribute Delegate + Gameplay Cue → HUD/VFX/SFX
5. 코드가 동작하는 이유
Effect Spec은 Effect 클래스, 레벨, Context와 런타임 수치를 묶습니다. Source ASC가 만든 Context에 Instigator와 Effect Causer를 남기면 데미지 계산·로그·Cue가 출처를 추적할 수 있습니다. 지속 상태는 ASC의 Active Effect와 Tag·Attribute에 남으므로 Cue가 누락되어도 게임 규칙은 유지됩니다.
6. 실패 사례와 해결
7. 직접 실습
8. 이해 점검 질문 3개
9. 핵심 요약
MINI QUIZ
0 / 2GAS 핵심 구성: ASC, Ability, Attribute, Effect, Tag, Cue 미니 퀴즈
선택 즉시 정답과 해설을 확인할 수 있습니다. 결과는 이 브라우저에만 저장됩니다.
LESSON STATUS
2강. GAS 핵심 구성: ASC, Ability, Attribute, Effect, Tag, Cue 미완료 상태학습을 마쳤나요?
직접 실습과 점검 질문까지 확인한 뒤 완료로 표시하세요.