티스토리 뷰
Custom Calculations
지금까지는 Modifier를 사용해서 Attribute를 다른 Attribue 기반으로 계산하는 방법을 사용했다.
하지만 이러한 방식은 단순한 Attribute 기반 계산만 가능하다.
따라서 플레이어 레벨, 외부 데이터, 여러 시스템 간 조합, 특수 조건 등 복잡한 계산은 기존 Modifier만으로는 부족하다.
그래서 필요한 것이 Custom Calculation으로, 정확히는 MMC라 불리는 Modifier Magnitude Calculation이다.
예시로 다음과 같은 MaxHealth Attribute가 있다고 가정해보자.
Max Health가 다른 Attribute에 따라 결정됨
ex) 80 + (2.5 * Vigor)
하지만 추가 조건으로, Player Level도 Max Health 계산에 적용시키고 싶을수가 있다.
예를 들어 플레이어가 레벨업할 때마다 Max Health가 10씩 증가하도록 할수도 있다.
이러면 계산식이 다음과 같다.
80 + (2.5*Vigor) + (Player Level*10)
하지만 이때 Player Level이 Attribute가 아니라 Player State의 내부 변수라고 가정하면 기존의 Attribute Based Modifier로는 접근이 불가능하다.
이를 위해 필요한 것이 MMC(Modifier Magnitude Calculation)이다.
MMC는 Modifier가 사용할 계산 로직 자체를 클래스에서 생성한다.
따라서 MMC 클래스를 참조하여 MMC 내부에서 원하는 계산을 수행하게된다.
이러면 단순 Attribute 계산을 넘어, 플레이어 레벨, 캐릭터 정보, 외부 데이터 등을 자유롭게 사용하여 커스텀 계산이 가능하다.
우선 이번 프로젝트에서는 플레이어 레벨을 Attribute 대신 Player State 내부 변수로 관리할 것이다.
이유는 다음과 같다.
1. Attribute는 보통 수치 연산 중심으로 Float 기반, 하지만 Level은 Integer로 사용할수도 있다.
2. Attribute는 GAS 시스템 내 복잡한 상호작용을 가진다.
반면 플레이어 레벨은 진행 상태를 나타내는 카운터에 가깝다.
3.플레이어 레벨 변화와 Attribute 변화는 성격이 다르다.
레벨업 시 트리거 되는 기능(스탯 증가, 스킬 해금 등)이 존재하지만, Attribute 변경 이벤트처럼 동작하는 것이 아니다.
그리고 우리는 MMC를 특정 클래스에 직접 의존하는 방식이 아니라, Interface를 사용하여 전투 관련 클래스들이 Player Level를 공유할 수 있도록 할 것이다.
이를 위해 다음 단계에서 먼저 Player State에 Level 변수와 Combat Interface를 생성해줄 것이다.
'Unreal > Udemy 강의' 카테고리의 다른 글
| Gameplay Ability System - Top Down RPG / Section 8-10 (0) | 2026.05.25 |
|---|---|
| Gameplay Ability System - Top Down RPG / Section 8-9 (0) | 2026.05.20 |
| Gameplay Ability System - Top Down RPG / Section 8-7 (0) | 2026.05.19 |
| Gameplay Ability System - Top Down RPG / Section 8-6 (0) | 2026.05.11 |
| Gameplay Ability System - Top Down RPG / Section 8-5 (0) | 2026.05.09 |
