본문 바로가기

Free Talk

극대화 관련 실험내용 및 설명 | Description of experiment about Maximize

2015.10.22 추가된 "극대화"라는 이상한 스탯에 대해서 실험한 내용을 정리해두겠습니다.

우선, 빠른 링크로써, 실험한 데이터의 엑셀파일을 올려둡니다.

 

maxexp.xlsx

 

 

 

이 스탯이 추가되면서 이렇게 무기에 범위가 생기면서, 게임 내에서 타격시 적용되는 무기의 공격력이 랜덤하게 적용되는 시스템이 생겼습니다.

 

다행히도 무기의 공격력만 랜덤이고 방어구나 악세사리, 칭호등의 공격력은 고정공격력으로 추가됩니다. 모든 공격력의 합계는 스탯창에 표시됩니다.

 

 

공격력 변동폭은 착용한 무기의 변동폭과 동일합니다.

이런 상태로 게임내에서 공격을 하면 데미지가 랜덤하게 뜹니다! 뭐 이런!! ?!?

 

하지만 모든 구간에서 확률이 동일한 것은 아니며, 원래의 공격력(중간 공격력)이 나올 확률이 높습니다.

그림으로 표현하면

 

대~충 이런느낌입니다.

실험한 데이터를 그래프화시키면

 

또 요런 느낌입니다. 이 그래프는 극대화가 0%인 경우의 실제 데미지 분포도입니다. 이 데이터의 타격횟수는 1000회입니다.

막대기의 가로폭은 수학계에선 보통 dx라고 표현합니다. 저 막대기의 가로폭 안에 들어간 데미지가 뜬 횟수가 막대기의 높이가 됩니다.

저런 느낌이긴한데 최대치와 최소치의 확률이 좀 높아보입니다. 양쪽 끝이 세워져 있지요?

극대화가 0%인 경우 최대치가 뜰 확률이 약 2%가 나왔고, 최소치가 뜰 확률이 약 2%가 나왔습니다.

이렇게 최대치가 뜰 확률이 아주 없는 건 아니고 생각보다 다른 수치보다 좀 높게 뜹니다.

 

극대화 스탯을 올리면 어떻게 될까요. 이것에 대해서 제가 처음 아이디어를 제공받은 게시물이 있습니다. 공식홈페이지에 "토오야마킨지"라는 분이 쓴 [외부링크]글입니다. 극대화 스탯을 올리면 저 확률의 산의 중심이 오른쪽으로 이동하며 극대화가 100%가 되면 오른쪽에 딱 붙는다라는 내용입니다.


정말로 그럴까요.

 

80레벨 기준 20480이면 100%가 됩니다.

 

시간 순서상 이것을 먼저하지는 않았지만 우선 보여드리겠습니다.

이 데이터는 극대화 100%, 1000회 타격 데이터입니다.

 

그리고 이 데이터는 극대화 80.4%, 1516회 타격 데이터입니다.

봉우리 부분이 대충 80%근처인것처럼 보이나요? 그리고 100%보다 왼쪽으로 더 많이 나와있습니다.

 

그리고 극대화 41.49%의 708회 타격데이터입니다.

대충 중앙이 40%정도인 것처럼 보이시는지?

 

와우, 저분이 말씀하신대로 되는군요. 최소값이 안떠서 모르는데 어떻게 최소값 기준을 잡냐구요? 기존 데미지 공식대로 데미지 계산을 해서 최대값이 얼마면 최소값이 얼만지 알 수 있죠~

그런데 극대화가 0%일 때 왼쪽 끝에 보였던 뾰족한 부분이 없어졌습니다. 오른쪽 끝은 끝없이 올라가고 있습니다. 이것은 왜 이럴까요?

 

그것은 아마도 게임 내 알고리즘에 의해 최대값이나 최소값을 넘어가는 값이 있으면 제한을 걸어 똑같은 숫자가 나오도록하기 때문일 것입니다. 이것을 이해하기 위해선 연속확률분포나 확률밀도함수에 대해서 알고 있어야 합니다. 위에 그려둔 세개의 막대그래프가 모두 확률밀도함수와 동일한 구조를 하고있으며, 막대들의 면적이 곧 확률입니다.

저 확률의 산이 오른쪽으로 이동해서 최대치를 넘어가버린 부분의 "면적"이 곧 최대데미지가 되어 수직으로만 쌓이게 되는 것입니다. 저 수직으로 쭉 뻗은 막대기 하나의 면적이 넘어가버린 면적과 동일한 것입니다.

더 설명하는 건 의미가 없을 것 같고 [외부링크]위키백과의 확률분포 항목에 있는 그림을 보면 면적이 곧 %의 확률이라는 것이 나와있습니다. 내용은 무척 간략하니 링크들을 타고 다니면서 공부하는 것도 나쁘지 않을 듯합니다. 사람이름 붙어있는 분포들은 빼고.

 

어쨌든 그래서 넘어가버린 부분의 면적이 끝에 있는 수직 막대기의 확률입니다. 그런데 저 위키에 보면 몇가지 확률분포 모델들이 있습니다. 그러면 엘소드는 어떤 모델을 사용할까요? 대충 그린 저 삼각형? 이제 확률분포모델을 어떻게 찾고있는지 보여드리겠습니다. 극대화 0%인 경우로 돌아와서, 최소치와 최대치가 뜰 확률이 약 2%라고 했지요.

 

일단 모델을 가장 흔한 [외부링크]표준분포와 대충 생각해본 삼각형 두가지를 가설 후보로 정하고 테스트해보겠습니다.

 

우선 삼각형 모델의 경우입니다.

극대화가 0인경우, 저 끝에 넘어가버린 부분의 면적이 2%가 되도록해야하며, 이등변삼각형의 전체 면적이 100%인 삼각형 함수를 만들었습니다. 그리고 극대화 수치를 올린 뒤 최대치가 뜨는 확률을 조사하면 오른쪽 끝에 넘어가버린 면적을 알 수 있죠. 제가 극대화 41.49%인 경우와 80.4%인 경우를 추가로 더 했는데 각각 약 12.5%(700회)와 34%(1500회)정도의 최대값이 뜰 확률이 나왔습니다. 그럼 삼각형의 중심을 41.49%와 80.4%이동시키면 오른쪽 면적은? 계산하면 21.9%와 40.6%가 나왔습니다. 좀 차이가 많이 나는군요...

삼각형은 일단 보류해야겠습니다.

 

그리고 표준확률밀도함수입니다.

 

 

이렇게 생겼습니다. 이 녀석의 이름이 표준, 혹은 정규와 같은 뭔가 정품같은 이름을 하고 있는 이유는 우리가 평소에 생활하면서 발생하는 다양한 일들의 확률 분포를 모아서보면 저런 모양에 점점 가까워지기 때문입니다. 딱히 저 함수에 사용되는 수학식이 없어도 특별한 일이 없으면 대체로 저렇게 됩니다.

이 함수의 면적을 구하는 일은 그냥하기엔 무척어렵기 때문에 저 함수 전용으로 면적만 구해주는 표준누적분포함수라는 함수가 따로 있습니다.

어쨌든 표준누적분포함수를 사용하면 실제 게임에서 제가 측정한 데이터를 맞춰볼 수 있을 겁니다.

 

표준누적분포함수에는 두가지 변수가 사용되는데 평균값(중간값)과 표준편차(sigma로 표현)입니다. 우선 평균값은 공격력과 극대화 수치로 이미 정확하게 아는 값이므로 넘어갑니다. 표준편차가 모르는 값입니다.

 

우선 극대화가 0%일 때, 끄트머리 데미지가 뜰 확률이 2%가 되게하려면 표준편차값을 0.244를 써야했습니다. 근데 2%라는게 너무나도 작은 값이라 오차가 클 것이라 생각해서 비교적 깔끔한 수치인 0.25를 사용했습니다. 0.25를 사용하면 끄트머리 데미지가 뜰 확률이 2.26%가 됩니다.

극대화 41.49%인 경우와 80.4%인 경우, 각각 약 12.5%(700회)와 34%(1500회)의 최대값 확률이 나왔다고 했죠?

그럼 표준편차가 0.25일 때는? 12.1%와 34.7%가 계산됩니다. 굉장히 잘 일치하지 않습니까? 그런 경위로 엘소드 랜덤데미지의 확률분포 모델을 정규분포라고 추정하게 되었습니다.