내일배움캠프_Unreal/TIL

내일배움캠프_Unreal/TIL - Day 123 (260527)

하임 2026. 5. 27. 23:23

GAS 기반 콤보 공격 및 전투 시맨틱 시스템

1. 콤보 공격의 GAS식 상호 차단 메커니즘

  • 상태의 태그화 (ActivationOwnedTags): 공격 어빌리티(GA_Attack)가 실행되는 동안 캐릭터에게 State.Player.Attacking 태그를 자동으로 부여하도록 설계함.
  • 상호 배타적 제어: 이를 통해 후속 방어 어빌리티(GA_Guard)의 ActivationBlockedTags에 해당 태그를 등록하는 것만으로, 다른 능력을 직접 수정하지 않고 콤보 도중 방어 동작이 조용히 차단되는 액션 게임의 정석적인 룰을 구현할 수 있었음.
  • 최상위 취소 권한 분리: 반면, 회피(GA_Dash)는 공격을 끊고 나가야 하므로 CancelAbilitiesWithTag에 공격 태그를 등록하여 GAS가 제공하는 강력한 라이프사이클 제어 능력을 체감함.

2. DynamicAssetTags를 활용한 전투 시맨틱(Semantic) 전달

  • 정적 에셋의 한계 극복: 공격의 성격(Normal, Heavy, Unblockable)을 GameplayEffect 에셋에 고정하면 무기나 콤보 단계별로 무수한 GE를 새로 만들어야 하는 폭발적 자산 증가 문제가 발생함.
  • 런타임 동적 주입: 데미지를 적용하기 직전, C++ 코드 단에서 DamageSpecHandle.Data->DynamicAssetTags.AddTag(Attack_Type_Normal) 구조로 공격 타입을 동적으로 주입함.
  • 결과: 단 하나의 기본 데미지 GE를 재사용하면서도, 피격자(UCombatAttributeSet) 측에서 무겁거나 방어 불가능한 공격을 동적으로 판정할 수 있는 유연하고 확장성 높은 데미지 파이프라인 계약을 성립시킴.

3. 애니메이션 판정 제어와 슬롯 규칙

  • 정밀한 타격 윈도우: AnimNotifyState와 AnimNotify를 조합하여 콤보 입력 유효 타임과 실제 LineTrace 판정 영역을 애니메이션 프레임 단위로 완벽히 동기화함.
  • 전신 통제 규칙: 공격 및 후속 연출 몽타주들이 하반신만 따로 노는 '좀비런 버그'를 예방하기 위해, 모든 전투 몽타주는 애니메이션 블루프린트 최종 출력 직전의 DefaultGroup.FullBody 슬롯을 경유해야 한다는 강력한 애니메이션 계약을 수립함.