이전 글의 내용에 이어서 조금 더 진척이 있었던 부분에 대해 이야기해 봅시다.
한 달 쯤 전에 레딧에 올라온 자동 편성툴의 제작자가 최근에 관련 계산방식을 정리한 사이트를 만들었습니다. 본디 github에 중문으로 설명이 있었지만, 사용된 언어와 작성된 언어포맷 문제로 이해하기가 매우 어려웠는데, 이번에는 영문으로 설명을 해두었습니다. 그리고 여기서 중점적으로 살펴 볼 부분은 판정강화, 그 가운데 아이콘 수 기반의 판정강화 부분입니다. 링크된 글의 내용을 추려서 설명해보자면 이렇습니다.
판정강화가 발동하는 동안 다시 한번 트리거 조건을 만족하는 경우, 발동 체크를 대기하는 상태가 되고, 이 횟수와 무관하게 대기상태이면 발동 종료 후 1번 발동 체크를 하게 된다. 따라서, 한 번의 발동 도중에 여러 번 발동 조건을 만족하더라도 실질적으로 1번 밖에 발동 기회가 발생하지 않는다. 만일 2회 만족했다면 1번은 잃어버리는 셈이 되는데, 이것을 자가판정손실 이라고 부르자. 예를 들어, 노트 밀도(전체 노트 수/전체 시간)가 6이라고 할 때, 발동 간격이 17개이고 42% 확률로 9.5초간 지속되는 마술사 마키 특기가 발동하면 9.5초 동안 9.5×6=57개의 아이콘이 지나가게 된다. 간격이 17개이므로 3.353번의 발동 조건을 만족하지만, 실질적으론 발동이 완료된 후 1번만 체크하기 때문에 2.353번의 발동 기회는 발휘되지 못하고 잃어버리는 것이 된다. 따라서 매번 특기가 발동할 때마다 2.353... 번을 잃어버리기 때문에, 실제 발동되는 횟수는 1 / (2.353×0.42+1) 의 비율로 줄어든다. 이를 이용해서, (발동 확률 × 유지 시간 × 발동 횟수) ÷ 전체 시간으로 구한 기초적인 발동확률 계산식에서 잃어버리는 비율을 곱하면 평균적인 특기의 발동비율을 알 수 있다.
판정발동 비율 계산을 정확하게 구하려면 리듬아이콘의 시간에 따른 분포를 파악해야 하지만 그것이 여의치 않기 때문에, 공개되어 있는 대부분의 계산 툴은 모든 아이콘이 균등하게 분포되어 있다고 가정하고 있습니다. 그리고 이 글에서도 그 가정을 유지하고 이야기를 전개하겠습니다.
우선 제가 이상하다고 느꼈던 부분은, 위 방식으로 계산했을 때의 결과입니다. 문제가 생기는 것은 중첩구간이 발생하는 경우이기 때문에, 1회의 중첩만 꾸준히 발생할 수 있는 경우에 대해서만 살펴보았습니다. 저의 이전 글에서 사용했던 방식은 중복발동으로 인한 판정시간 연장을 전혀 고려하지 않은 방식이었고, 이는 2회 이상의 구간중첩(한 순간에 3번 이상의 발동기회범위가 중복됨)이 일어나지 않는 한, 실제보다 낮은 결과가 나오는 저평가 근사입니다. 따라서 실제 값은 이렇게 계산한 것보다 높아져야 합니다. 그러나 위 글의 방식대로 연산할 경우, 대부분의 경우 저의 계산방식보다 낮은 결과가 나왔습니다. 실제보다 많은 부분을 쳐내고 있다는 겁니다.
우선 눈에 띄는 부분은 마지막 부분의 처리에 관한 언급입니다. 마지막 발동 순서 이후의 잔여 노트들은 영향을 받지 않는다고 언급하고 확률연산에서 제외하고 있는데, 실제로는 길이 대비 커버율이 가장 높은 구간이 가장 마지막의 잔여 구간입니다. 반대로 영향을 받지 않는 부분은 첫 발동 체크가 발생하기까지의 대기시간이구요. 따라서 이 부분을 적절하게 수정해 보았습니다. 당연히 결과값은 작아질 수밖에 없고, 여전히 제 계산식보다 낮은 값이 나옵니다. 근본적으로 기댓값 계산의 핵심적인 부분에서 오차가 발생하고 있다는 의미로 판단됩니다.
그래서 곰곰이 생각해 보니, 의아한 부분은 판정 기회의 손실이 과연 저 비율대로 일어나는가 하는 점입니다. 예를 들어 4초마다 발동 체크를 하고, 지속시간이 5초인 특기가 있다고 한다면, 위 계산방식으로는 매 발동마다 0.25회의 손실이 발생합니다. 따라서 전체 평균 발동횟수가 4회를 넘길 때마다 1회의 발동 기회 손실이 발생하게 되겠죠. 하지만 실제로 수직선으로 나타내어 보면, 4번 연달아 특기가 발동해서 판정 시작점이 4초가 밀려나지 않는다면 기회 손실은 전혀 발생하지 않습니다. '발동할 때마다 0.25회'가 아니라, '4번 연달아 발동할 때마다 1회'가 되어야 적절한 근사인 셈입니다. 여기까지 생각이 도달한 시점에서 이미 자정을 훌쩍 넘겼기 때문에 일단 보류하고 있지만, 이렇게 연산방식을 바꾼다면 위 계산방식보다는 높은 값이 나오게 될 겁니다. 그게 정확한가는 또 다른 문제일 테고, 그 부분은 더 생각해 봐야겠죠.
그리고 판정 근사에 대한 또 다른 생각 하나는 이 근사방식이 모든 아이콘의 밀도가 동일하다고 가정하고 있다는 점에서 출발하는데, 계산상의 편의를 위한 가정과는 달리, 실제 플레이 중에는 밀도가 수시로 변합니다. 발동 간격이 작은 카드는 이런 밀도 변화에 크게 반응해서 수시로 성능이 변하고, 간격이 큰 카드는 상대적으로 밀도 변화에 둔감합니다. 마술사 마키처럼 발동 간격이 작고 유지시간이 길다면 느슨한 구간에서 효율이 크게 상승했다가 조밀한 구간에서 효율이 크게 떨어지지만, 마린걸 노조미처럼 간격이 길고 유지시간이 짧다면 상대적으로 고르게 유사한 성능을 내게 됩니다. 하지만 조밀한 구간에서 잃는 손실에 비해 느슨한 구간에서 얻는 이득이 상대적으로 더 크기 때문에, 균일한 분포에서는 마린걸 노조미의 성능이 우위로 나타나지만, 복합적인 분포에서는 마술사 마키의 우위로 역전되는 일이 쉽게 발생합니다. 그리고 이게 계산기 혹은 성능 서열화에 관한 자료를 볼 때 주의해야 하는 점이기도 합니다. 그런 자료에서는 대개 간격이 좁고 유지시간이 긴 카드는 저평가되기 쉽거든요. 물론 판정강화의 발동이 끝났을 때 연이어 발동할 가능성은 얼마냐 되느냐는 또 다른 문제인데, 이 경우에는 간격이 좁은 카드가 크게 불리해집니다. 평균적으론 많은 구간을 덮고 있지만, 판정 발동이 끊어지는 횟수는 더 많이 나타나게 됩니다. 끊어졌을 때, 비는 구간의 길이는 더 짧겠지만요.
일단 여기서 생각을 마친 후 세부적인 연산은 시간이 더 걸릴 듯해서 보류하고 있는 상황인데, 혹시 이에 관한 오류지적이나 더 정확한 근사 혹은 적절한 계산 방법, 계산상의 가정과 실제의 괴리를 적절하게 수치적으로 수용할 방법 등에 대해 의견이 있으시다면 부담없이 댓글 달아주시면 감사합니다.
(IP보기클릭)115.160.***.***