최종 실습 3: 버프와 상태 이상 완성
45강. 최종 실습 3: 버프와 상태 이상 완성
1. 이번 강의에서 해결할 문제
상태 효과 하나는 쉽게 만들 수 있지만 여러 출처의 중첩, 면역, 사망 제거, UI 남은 시간, Cue 종료까지 합치면 책임이 흔들립니다. 최종 프로젝트에서는 효과별 데이터 계약과 공통 상태 표시 모델을 완성합니다.
2. 학습 목표
3. 핵심 개념
GE_Buff_Attack은 공격 Attribute를 수정하고 출처별 또는 대상별 중첩 정책을 가집니다. GE_Debuff_Slow는 MoveSpeed를 낮추되 최소값을 지키며, GE_Debuff_Stun은 State.CrowdControl.Stun을 부여합니다. GE_State_Invulnerable은 Tag와 면역/Execution 조건을 함께 사용합니다.
4. 구현
USTRUCT(BlueprintType)
struct FStatusEffectViewData
{
GENERATED_BODY()
UPROPERTY(BlueprintReadOnly) FGameplayTag StatusTag;
UPROPERTY(BlueprintReadOnly) float RemainingSeconds = 0.0f;
UPROPERTY(BlueprintReadOnly) int32 StackCount = 0;
UPROPERTY(BlueprintReadOnly) FText DisplayName;
};
UI Presenter는 GetActiveEffects 질의를 매 프레임 호출하지 않습니다. Effect 추가·제거와 Stack/시간 표시 갱신 시점에 모델을 갱신하고, 남은 시간 표시는 서버 기준 시간과 로컬 표시 계산을 조합합니다. Gameplay Cue는 Buff aura, Slow trail, Stun stars, Invulnerable shield를 표현하지만 판정에는 사용하지 않습니다.
| 데이터 | 원본 | 표현 |
|---|---|---|
| 공격력 증가 | Attribute Modifier | 버프 아이콘·Cue |
| 이동 감속 | MoveSpeed Attribute | 이동 UI·Slow Cue |
| 스턴 | Gameplay Tag count | 입력 차단 문구·Cue |
| 무적 | Tag + 서버 Effect 조건 | 방패 UI·Cue |
5. 코드가 동작하는 이유
각 상태의 원본과 표현을 표로 고정해 Cue 중복이나 UI 재생성이 게임 규칙에 영향을 주지 않습니다. Stack과 Duration은 Active Effect가 관리하고, Attribute Clamp와 면역은 서버의 단일 경로에서 적용됩니다.
6. 실패 사례와 해결
7. 직접 실습
8. 이해 점검 질문 3개
9. 핵심 요약
최종 실습 3: 버프와 상태 이상 완성 미니 퀴즈
선택 즉시 정답과 해설을 확인할 수 있습니다. 결과는 이 브라우저에만 저장됩니다.
학습을 마쳤나요?
직접 실습과 점검 질문까지 확인한 뒤 완료로 표시하세요.