피드로 돌아가기
Dev.toInfrastructure
원문 읽기
Meta Attribute와 ExecCalc 기반의 관심사 분리형 데미지 파이프라인 설계
How to Deal Damage in Unreal's GAS: Meta Attribute and Execution Calculation Pattern
AI 요약
Context
기존의 단순 속성 변경 방식으로는 방어력, 버프, 저항력 등 복잡한 데미지 계산 로직을 처리하기에 한계가 있음. 공격자와 피격자 간의 강한 결합으로 인해 데미지 처리 로직이 파편화되는 구조적 문제 발생.
Technical Solution
- Meta Attribute 도입을 통한 데미지 계산용 중간 매개체 확보로 공격자와 피격자의 관심사 분리
- Execution Calculation(ExecCalc) 활용을 통해 다중 속성 변경 및 복잡한 커스텀 계산 로직을 서버 사이드에서 전담 처리
- PostGameplayEffectExecute 단계에서 Meta Attribute 값을 로컬 변수로 추출 후 즉시 0으로 초기화하는 일회성 처리 구조 설계
- SetByCaller Magnitude를 통해 런타임에 가변적인 데미지 값을 ExecCalc에 전달하는 유연한 데이터 흐름 구축
- 서버 전용 Non-replicated 속성 설계를 통한 네트워크 트래픽 최적화 및 권한 검증 일원화
- 최종 Health 적용 단계에서 Clamp 로직을 수행하여 ExecCalc의 PreAttributeChange 미지원 제약 사항 해결
실천 포인트
- 복잡한 수치 계산이 필요한 경우 단순 MMC 대신 다중 속성 제어가 가능한 ExecCalc 검토 - 서버 전용 데이터의 경우 Replication을 제외하여 불필요한 네트워크 오버헤드 제거 - 일시적인 계산 값이 필요한 경우 Meta Attribute를 도입하여 상태 변화와 계산 과정을 분리 - ExecCalc 사용 시 Prediction 미지원 및 Infinite Effect 사용 불가 제약 사항 확인