티스토리 뷰

Derived Attributes

현재 목표는 기본 Attributes 값이 변경되면 이에 파생된 보조 Attributes 값도 자동으로 갱신되도록 만드는 것이다.

이 보조 Attributes 값들은 초기값만 설정하고 끝나는 것이 아니기 때문에, 한 번 적용 후 끝나는 Instant가 아닌 항상 유지되는 Infinite Gameplay Effect 방식을 사용한다.

 

이를 위해서 가장먼저 AuraCharacterBase에서 보조 Attributes를 위한 GameplayEffect 클래스 변수를 만들고 또 초기화를 위한 함수도 만들어 줄 것이다.

초기화 함수의 경우 기존 InitalizePrimaryAttributes() 함수와 같이 변수만 바꿔서 만들어도 되지만, 상당 부분이 겹치기에 구조를 개선해줄 것이다.

 

먼저 기존의 내용은 ApplyEffectToSelf 함수로 바꾸고, Input으로 GameplayEffectClass와 Level을 받을 것이다.

그리고 초기화하는 함수에서 원하는 GameplayEffectClass를 초기화할 수 있도록 구조를 바꿔주자.

 

이에 맞춰 AuraCharacter InitAbilityActyorInfo() 함수에서 마지막에 Attributes를 초기화하는 함수도 바꿔주어야 한다.

 

그리고 MaxHealth와 MaxMana의 경우도 Derived Attributes로 다룰 것이기에 기존에 초기화하던 부분을 없애준다.

 

이제 컴파일을 하고 GameplayEffectClass를 생성해주자.

우선 Duration을 처음에 언급했던 것처럼 Infinite로 바꿔준다.

 

그리고 BP_AuraCharacter에서 Attributes도 알맞게 할당해줄 것이다.

 

이제 첫 번째 Derived Attribute 값인 Armor를 구현해보자.

해당 값은 Resilience 값을 기반으로 한다.

 

Snapshot의 경우 값을 실시간 반영해야 하기에 Fasle로 둔다.

만약 True로 하면 원본 Attribute가 바뀌어도 다시 계산하지 않고 최초로 저장된 값만 사용한다.

 

그리고 자신의 Attribute 값을 기반으로 Derived Attribute 값을 계산하기에 Source는 Target이다.

만약 Source로 두면, 플레이어의 Resilience 값 기반이 아니라 몬스터의 Resilience 값을 기반으로 하게 되는 경우가 생긴다.

지금은 ApplyEffectToSelf로 자기 자신에게 효과를 적용하여 Source=Target=나 이기에 Source로 해도 결과는 동일하다.

 

이제 테스트로 값을 확인하면 Armor 값이 Resilience 값과 동일한 12로 뜨는 것을 볼 수 있다.

 

TestActor를 통해서 Resilience 값이 2 증가하도록 해보자.

그리고 Coefficeint = 0.25, PostAdd = 6으로 두었다.

 

마찬가지로 증가한 Resiliecne 값에 따라서 Armor 값이 변화한다.

 

다음은 나머지 Dervied Attribute 값들을 설정한 것이다.

강의에서 할당한 값들을 그대로 사용하였다.

ArmorPenetration (Resilience 기반)
BlockChance (Armor 기반)
CriticalHitChane (ArmorPenetraion 기반)
CriticalHitResistance (Armor 기반)
CriticalHitDamage (ArmorPenetration 기반)
HealthRegeneration (Vigor 기반)
ManaRegeneration (Intelligence 기반)
MaxHealth (Vigor 기반)
MaxMana (Intelligence 기반)

 

이 상태로 컴파일을 해보면, Attribute 값들이 너무 많아서 화면에 다 출력되지않는 모습을 볼 수 있다.

 

이러한 Attribute 값들은 하나가 변경되면 다른 값들도 연쇄적으로 변화하여 서로 연결되어있다.

계수 값은 단순 랜덤이 아니라, 플레이 테스트나 밸런스 조정 성장 곡선 설계 등을 통해 세부적으로 조정할 필요가 있다.

이를 위해 CurveTable과 같은 값을 활용하는 것도 가능하다.

 

그리고 지금은 Attribute 수가 대폭 증가했기에, 이를 위한 Attribute Menu UI, 캐릭터 스탯 창, 능력치 분배 UI 등이 필요하다.

이를 위해서 Attribute Menu UI, Attribute Point System 등을 차차 구현해나갈 예정이;다.

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2026/05   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
글 보관함