지금까지 글에서 예시로 썼던 코코미 점수의 계산이 최근 완료됐습니다.

그래서 이 점수를 구하는 과정과 이 점수를 통해 얻을 수 있는 간단한 정보들을 예시로써 적어 보겠습니다.

이 글을 통해 실제로 점수를 어떻게 계산하는지, 어떤 정보를 얻을 수 있는지를 보실 수 있다면 좋겠습니다.

그리고 더 나아가, 이 점수를 또 어떻게 활용할 수 있을지 의견을 제시해 주신다면 더욱 좋을 것 같습니다.


성유물 점수 계산

성유물 점수 보충 설명

성유물 점수를 통한 캐릭터 분석의 예시

성유물 점수에서 생각해 봐야 할 것들



1. 성유물 점수의 구현

성유물 점수를 구하는 과정은 가치함수를 설정하는 것에서부터 시작합니다.

저는 가치함수를 위해 지금까지 예시로 들었던 것을 사용할 생각입니다.

가치함수를 간단히 정리하자면 다음과 같습니다.


1순위: 의식의 날개옷 상태에서 코코미의 평균 일반 공격 대미지

2순위: 코코미의 원소 충전 효율

3순위: 코코미의 원소 마스터리

4순위: 코코미의 방어력


1.1. 가치함수 분석

먼저 실제로 계산하기 전에 가치함수 자체를 분석해 보겠습니다.

성유물 점수는 가치함수에 의존하기 때문에, 성유물 점수의 특성은 크게 점수를 구하는 공식에서 나오는 특징과, 가치함수에서 나오는 특징으로 나눌 수 있습니다.

전자는 점수의 공식을 바꿔야 달라지기 때문에 쉽게 바뀌지 않습니다.

하지만, 후자는 가치함수에 따라 달라지기 때문에, 실제로 계산하기 전에 가치함수를 분석해 봄으로써, 생길만한 단점을 보완하는 게 가능합니다.


일단 제가 사용할 가치함수는 평균 대미지를 최우선적으로 비교하게 됩니다.

원소 충전 효율은 1순위인 평균 대미지가 같아야 비교 대상이 됩니다.

따라서, 평균 대미지가 0.1이라도 높아진다면 원소 충전 효율이 크게 낮아지더라도 좋은 성유물로 판단할 수 있습니다.

쉽게 말해 평균 대미지를 조금이라도 올리는 공격력(깡공)을 원소 충전 효율보다 더 좋은 스탯으로 판단한다는 뜻입니다.


저는 일단 이를 그대로 사용할 생각입니다.

이는 가치함수의 이러한 특성(원충이 떨어져도 대미지를 조금이라도 올리면 좋게 판단하는 것)이 제가 원하는 목적과 같기 때문입니다.

물론 다른 사람들은 이렇게 판단하지 않을 수 있습니다.

이 경우에는 제가 여기서 쓰는 가치함수를 그대로 쓰지 않고, 다른 방식으로 가치함수를 생각해야 할 것입니다.

예를 들자면, 원소 충전 효율의 현재 값에 목푯값을 나누고, 이 값이 1보다 작다면 해당 값을 그대로 대미지에 곱하고, 1보다 크거나 같다면 1을 대미지에 곱하는 방식으로 가치함수를 만들 수 있을 것입니다.

이러면, 원충이 목푯값보다 작으면 대미지 자체가 작아지기 때문에 원충을 더 챙기도록 점수가 계산될 것 같습니다.


1.2. 가치함수 구현

이제 실제로 위 가치함수를 구현할 것입니다.

저는 Python으로 계산을 하고 있기 때문에 가치함수도 이로 구현했습니다.


[그림 1: 가치함수]


위 함수를 간단하게 설명드리겠습니다.

먼저 이 함수는 순서대로 캐릭터의 기초 공격력, 기초 방어력, 기초 HP와 스탯을 받습니다.

스탯은 다음과 같은 순서로 들어갑니다.


0: 미사용

1: 공격력

2: 공격력 백분율

3: 방어력

4: 방어력 백분율

5: HP

6: HP 백분율

7: 치명타 확률

8: 치명타 피해

9: 원소 마스터리

10: 원소 충전 효율

11: 치유 보너스

12: 물리 피해 보너스

13: 불 원소 피해 보너스

14: 물 원소 피해 보너스

15: 풀 원소 피해 보너스

16: 번개 원소 피해 보너스

17: 바람 원소 피해 보너스

18: 얼음 원소 피해 보너스

19: 바위 원소 피해 보너스


그 다음은 실제 공격력과 방어력, HP 등을 계산합니다.

원소 마스터리, 원소 충전 효율, 치유 보너스와 물 원소 피해 보너스는 값을 그대로 사용하지만, 통일성을 위해 적었습니다.

이후 실제 대미지를 계산합니다.

일반적으로는 치명타 관련한 공식이 곱해져야 하지만, 코코미의 경우 무의미하므로 계산을 줄이기 위해 생략했습니다.

이후 대미지, 원소 충전 효율, 원소 마스터리, 방어력을 출력합니다.

이렇게 하면 해당 값을 가지는 tuple형 자료가 반환됩니다.

tuple형 자료는 처음 자료부터 시작해, 자료가 같으면 다음 자료를 비교하는 방식으로 크기 비교가 이루어집니다.

이는 제가 원하는 1순위, 2순위, 3순위, 4순위 비교와 일치합니다.


1.3. 캐릭터

가치함수는 성유물 스탯을 입력으로 받아 가치를 출력해야 합니다.

위에서 구현한 가치함수는 캐릭터의 스탯을 입력으로 받기 때문에, 앞에서 성유물 스탯을 캐릭터의 스탯으로 바꾸는 함수가 더 필요합니다.

이를 위해서는 캐릭터를 정의해야 합니다.


제가 계산에 쓰고자 하는 캐릭터는 다음과 같습니다.

일반적이지 않은 무기를 끼고 있다는 점은 참고해 주시기 바랍니다.


캐릭터: 산고노미야 코코미(Lv.90)

무기: 맹세의 눈동자(Lv.90, 5재련)

성유물: 바다에 물든 거대 조개 4세트

운명의 자리: 0

특성: 일반 공격 Lv.10, 원소전투 스킬 Lv.10, 원소폭발 Lv.10


실제로 계산할 때는 위와 같은 상태에서 캐릭터의 기본 스탯을 계산한 뒤, 성유물을 받아 성유물 스탯까지 올린 후 위의 함수로 스탯을 넘겨주도록 했습니다.


1.4. 이론상 종결 성유물

기본적으로 성유물은 5부위를 장착해야 합니다.

그래서 점수를 구하고자 하는 성유물을 장착했을 때, 다른 부위는 무엇을 장착해야 하는지에 대한 고민이 필요합니다.

저는 다른 부위에는 이론상 종결 성유물을 장착했다고 가정했습니다.

이는 이론상 종결 성유물의 점수가 최대가 되도록 보장하기 위해서입니다.


그러기 위해서는 이론상 종결 성유물이 무엇인지 구해야 합니다.

위의 상황에서 이론상 종결 성유물의 스탯을 구해 보면 다음과 같습니다.


주 옵션

공격력: +311

HP: +4780

HP 백분율: +46.6%

치유 보너스: +35.9%

물 원소 피해 보너스: +46.6%


부 옵션

공격력: +78

공격력 백분율: +58.3%

HP: +1195

HP 백분율: +139.9%

원소 충전 효율: +19.4%


이를 만족하기 위한 경우의 수는 다음 하나뿐입니다.


(HP)

공격력: +19

공격력 백분율: +5.8%

HP 백분율: +35.0%

원소 충전 효율: +6.5%


깃털(공격력)

공격력 백분율: +5.8%

HP: +299

HP 백분율: +35.0%

원소 충전 효율: +6.5%


시계(HP 백분율)

공격력: +19

공격력 백분율: +35.0%

HP: +299

원소 충전 효율: +6.5%


성배(물 원소 피해 보너스)

공격력: +19

공격력 백분율: +5.8%

HP: +299

HP 백분율: +35.0%


왕관(치유 보너스)

공격력: +19

공격력 백분율: +5.8%

HP: +299

HP 백분율: +35.0%


보시면 HP 백분율, 공격력 백분율, HP, 공격력, 원소 충전 효율 순으로 가치가 평가됐습니다.

보통은 HP를 공격력 백분율보다 좋다고 평가하는 것과는 약간 다른 모습입니다.

이는 가치함수에서 성유물 4세트 효과 등을 생각하지 않고 일반 공격의 대미지만을 측정하기 때문으로 보입니다.

하지만, 두 스탯 사이의 가치 차이는 계산해 보면 그렇게 크지 않고, 실제로 계산했을 때도 그렇게 차이가 나지는 않습니다.



2. 성유물 점수의 적용

이제 계산에 필요한 모든 것을 준비했습니다.

컴퓨터에게 점수 계산을 시키기만 하면 되고, 실제로 계산한 결과를 가지고 적용해 보겠습니다.

실제 성유물의 점수를 계산하는 것은, 첫 글에 꽃과 깃털로 해 봤으므로 여기서는 다른 계산을 해 봤습니다.


2.1. 이론상 종결 성유물의 점수

가장 처음 해 본 것은 이론상 종결 성유물의 점수입니다.

위에서 구한 종결 성유물의 점수를 구하고, 해당 성유물을 얻기 위해 필요한 평균 레진을 구해 봤습니다.

그리고 매일 160레진씩 사용한다는 가정하에 얼마나 걸릴지도 계산해 봤습니다.


참고로 성배의 경우에는 필요한 레진과 시간을 절반으로 줄여서 계산했습니다.

이는 다른 부위와는 달리 일반적으로 성배는 다른 세트의 성유물도 활용하는 것을 반영하기 위함입니다.


점수: 11.068745

레진: 약 22조 레진

시간: 약 3억 7600만 년


깃털

점수: 11.068745

레진: 약 22조 레진

시간: 약 3억 7600만 년


시계

점수: 11.563562

레진: 약 68조 7000억 레진

시간: 약 11억 7500만 년


성배

점수: 12.511951

레진: 약 305조 레진

시간: 약 52억 년


왕관

점수: 12.210921

레진: 약 305조 레진

시간: 약 52억 년


2.2. 주 옵션 비교

이번에는 시계, 성배, 왕관에 대해 주 옵션에 따라 점수가 어떻게 되는지 확인해 보겠습니다.

가장 좋은 주 옵션과 그 다음으로 좋은 주 옵션에 대해, 가능한 점수의 범위가 어떻게 되는지 확인했습니다.


시계

HP 백분율: 0.573790~11.563562

공격력 백분율: 0.241881~1.858081


성배

물 원소 피해 보너스: 1.301030~12.511951

HP 백분율: 0.616592~1.301030


왕관

치유 보너스: 1.000000~12.210921

HP 백분율: 0.488212~1.000000


시계의 경우, HP 백분율 시계의 부 옵션이 너무 안 좋으면 부 옵션이 매우 좋은 공격력 백분율 시계를 장착하는 게 더 좋을 수도 있습니다.

하지만 성배와 왕관의 경우, 부 옵션이 어떻게 되더라도 주 옵션을 맞추는 게 가장 좋음을 알 수 있습니다.


2.3. 점수에 따른 대미지

저는 가치함수에서 평균 대미지를 1순위로 사용했기 때문에, 성유물의 점수가 높을수록 평균 대미지도 높아집니다.

하지만, 이는 비례 관계는 아니기 때문에 실제로 어떻게 증가하는지를 확인해 볼 필요가 있습니다.

점수에 따른 대미지를 그래프로 나타내면 다음과 같습니다.

참고로 몬스터의 레벨은 Lv.90, 내성은 10 %일 때의 대미지입니다.


[그림 2: 성유물별 점수에 따른 대미지]


주 옵션이 고정되는 꽃과 깃털의 경우, 점수가 증가함에 따라 어느 정도 부드럽게 증가함을 확인할 수 있습니다.

하지만 성배와 왕관의 경우, 주 옵션을 맞추는 순간 급격히 증가하는 모습을 확인할 수 있습니다.

시계의 경우는 약간 겹쳐지는 부분이 있기 때문에 특정 점수에서 갑자기 증가하는 형태는 아니지만, 그래도 주 옵션을 맞추기 전까지는 크게 증가하는 모습을 확인할 수 있습니다.


위의 그래프는 다른 부위가 이론상 종결일 때의 대미지이기 때문에 점수가 낮은 상황에도 대미지가 어느 정도 큰 값을 가지게 됩니다.

그래서 이번에는 이론상 종결 성유물이 없을 때의 대미지를 확인해 봤습니다.

여기서 점수 1점이라 함은, 모든 부위의 점수가 1점 이하 성유물 중 가장 점수가 높은 성유물일 때의 상태를 말합니다.

단, 여기서 성배의 점수는 상용로그 2점(약 0.3점)을 감하고 반영했는데, 이는 역시 성배의 경우 다른 세트의 성배도 쓰일 수 있다는 점을 감안하기 위함입니다.

따라서 점수 1점일 때 성배는 약 1.3점이라고 생각하시면 됩니다.


[그림 3: 점수에 따른 대미지]


마지막은 성유물을 아예 착용하지 않았을 때(약 1943)에 비해 증가한 대미지를, 필요한 평균 레진으로 나누어 봤습니다.

이는 레진당 증가한 대미지이므로 높을수록 효율이 높다고 할 수 있을 것입니다.

쉽게 말해 1이라는 뜻은, 필요한 평균 레진만큼 평균 대미지가 증가한다는 뜻입니다.


[그림 4: 점수에 따른 레진당 증가한 대미지]


결과만 보자면, 레진 효율을 따질 거면 그냥 성유물 세트 옵션만 맞추면 된다고 볼 수 있을 것 같습니다.

물론 아무도 그렇게 하지는 않을 것이고, 그냥 생각해 보자면 특정 수치가 될 때까지 성유물을 캐는 게 일반적일 것입니다.



3. 결론

이번에는 실제로 성유물 점수를 어떻게 계산하고, 성유물 점수로 주 옵션이나 점수에 따른 대미지를 확인해 봤습니다.

이번 예시가 제가 쓰려고 만들다 보니 대중적인 상황에서의 세팅이 아니라는 점은 아쉽지만, 위와 같은 방법으로 점수를 활용할 수 있다는 가능성은 보여주지 않았나 싶습니다.

감사합니다.