1. 긴글 읽기 귀찮으면 스크롤을 쭈욱~ 당깁니다 -> 맨밑의 그림2개를 봅시다
2. 퍼온걸로 생색내냐고는 묻지마세요. 자게에서 랭겜레이팅으로 허구한날 싸우는 너님들때문에 이러는거니까
3. 수학공부시켜서 죄송

=================================================================================

설정조건>
1) 신규사용자(이하 유저와 사용자, 게이머는 같은 의미)는 1000점으로 시작한다(0점 미만은 없다).
2) 1000점을 평균으로 유저를 분포시킨다.
3) 최대 2000점이다(2000점 초과는 없다).
4) 한 경기에서 얻을 수 있는 최대 점수는 20점이다(1000점까지 도달하는데 최소 50경기).
 
                          
 [그림 1. 평균 1000점이고 0점과 2000점 사이에 정규분포를 보이는 래더시스템의 유저분포 예상도]
 
rating(p1), rating(p2) : p1,p2의 래더점수이고,
per_win(p1,p2), per_win(p2,p1) : p1,p2의 이길 확률(점수로 계산되는 가상의 승률)이라고 할 때,
각각 다음과 같이 정의할 수 있다.
 
공식 A)
per_win(p1,p2)=min{1, max{0, (rating(p1)-rating(p2))/400+min{rating(p1), 1000}/2000}}
per_win(p2,p1)=min{1, max{0, (rating(p2)-rating(p1))/400+min{rating(p2), 1000}/2000}}
 
(rating(p1)-rating(p2))/400에서 400의 의미는 래더점수가 400점 이상 차이나면 거의 이기기 힘든 승부라고 설정한 수치다. 따라서, 게임마다 실제 적용후 조정이 필요할 수 있으며, 이 차이 이상이 나는 두 사람의 래더점수는 승부후에도 변동이 없다. 이긴 사람이 얻는 점수도, 진 사람이 잃는 점수도 없다. 신규유저의 래더점수가 1000에서 출발하도록 설정하였다.
 
min{1, max{0, x}}의 의미는 x값이 승률을 나타내기 때문에, 최소값을 0으로 최대값 1로 제한한 수식이다.
 
    ELO 시스템에서는 logistic curve(sigmoid function : cumulated distribution function)을 사용했지만, 여기에서는 계산상의 편의를 위해 0~2000에서 1차함수를 사용하고, 0미만 2000초과에서는 값의 변화가 없도록 설정하였다. 이렇게되면, 경계부근에서 사라지는 값이 존재한다(경계에서 제로섬이 아니다).
 
1) 1:1일 때
    Ex) p1이 이겼을 때,
        rating(p1)+=(1-per_win(p1,p2))*20
        rating(p2)-=per_win(p2,p1)*20
 
2) N:N일 때
    p1, p2, …, pN, q1,q2,…,qN : 양 팀의 플레이어
    A의 공식을 (pn,q1), (pn,q2),…, (pn,qN)에 대해 N만큼 나눠서 적용한다.
    Ex) p팀이 이겼을 때,
        for (i=1~N, j=1~N)
               rating(pi)+=(1-per_win(pi,qj))*20/N
               rating(qi)-=per_win(qi,pj)*20/N
         end
 
3) FFA(Free For All)일 때
    p1,p2,…,pN : 각각의 플레이어
    A의 공식을 (pn,pm)에 대해 (N-1)만큼 나눠서 적용한다.
    Ex)
        for (i=1~N, j=1~N, i≠j)
               if (pi beat pj), rating(pi)+=(1-per_win(pi,pj))*20/(N-1)
               if (pi draw with pj), rating(pi)+=(0.5-per_win(pi,pj))*20/(N-1)
               if (pi beaten by pj), rating(pi)-=per_win(pi,pj)*20/(N-1)
        end
 
이상이다.
 
 
2. 적용결과 및 분석
 
1) 개요
게임A의 12일간 래더포인트의 변화를 분석하여, 유저들의 실력 분포 및 플레이성향을 파악하고, 추후 대책을 논의하기 위한 자료로 활용한다.
 
2) 분석 방법
유저들의 실제 실력 분포와 플레이성향에 대한 몇 가지 가정을 바탕으로 분석을 전개한다.
 
3) 가정
유저들의 skill은 평균 1000점인 정규분포를 이룬다.
여기서 skill은 실제로는 알려지지 않은 유저들의 진정한 실력을 말하며, 수치가 말하는 것은 게임A에서 사용되는 래더포인트의 의미와 동일하다. (대전시 100점 차이당 승률 25% 차이를 나타낸다.)
단, 여기서 분산의 값은 알 수 없으며, 추후 분석을 통해 밝힐 것이다.
 

                                        [그림 2. 유저 스킬 분포의 예시]
 
실력과 플레이타임의 관계는 특정 함수를 따른다.
간단히 말하자면, 잘하는 사람일수록 게임을 즐길 확률이 높다는 가정이다.
여러 가지 함수로 시뮬레이션 했을 때, 가장 현재 결과를 잘 반영해 주는 arcTan 함수를 사용했으며, 세부적으로는
arcTan((실력-상수1)/상수2)/pi+0.5 로 설정했다. 플레이빈도는 랜덤하게 한 유저가 선택되었을 때, 실제로 플레이
할 확률을 말한다. 상수1과 상수2 역시 추후에 구해야 할 부분이다.
 

                                   [그림 3. 플레이빈도의 예시]
 
신규 유입 및 유저들의 실력 변화는 없다고 가정한다.
이는 추후 분석에선 도입될 수 있으나, 아직은 시기상조라 판단된다.
 
4) 분석
위 가정들을 바탕으로 게임A의 래더시스템을 시뮬레이션하여, 12일간 수집된 데이터에 가장 부합되는 상수들 – 실력의 편차, 플레이타임의 상수1,2 – 을 찾아낸 결과는 다음과 같다.(시간관계상 매우 단순한 minimization만을 수행했다.)
 
유저들의 실력의 표준편차 : 200
상수 1 : 1400, 상수 2 : 50
 
위 상수들에 의한 결과는 다음과 같다.
 
                                        [그림 4. 유저들의 실제 실력 분포]
 
 
평균을 1000, 표준편차를 200으로 설정했을 때의 유저들의 실력 분포는 위 그래프와 같다. 600~1400점대의 유저가 95% 정도를 차지하게 되며, 1400점대 이상의 유저는 대략 2%라 할 수 있다.
위 분포 자체는 크게 문제가 될 부분이 없으나, 다음의 실력별 플레이빈도와 합쳐지면 상당한 위험을 내포하게 된다.
 
                                          [그림 5. 실력에 따른 플레이빈도]
 
위 그래프는 시뮬레이션에서 추정된 유저의 실력별 플레이 빈도이다. 2%에 불과한 1400점대 이상 유저들의 플레이 비율이 다른 유저에 비해 극단적으로 높다는 것을 볼 수 있다. (200점 이상 차이가 나는 상대와의 대결은 점수를 변화시킬 확률이 극도로 낮다는 것을 생각할 때, 실제 플레이횟수의 비중은 이와 다를 수 있으나, 추세 자체는 거의 비슷하리라 생각된다.)
여기서 판단할 수 있는 것은, 초보 유저들끼리의 대전은 매우 일어나기 힘들다는 것이며, 유저풀이 작아지는 것을 고려하더라도 어느 정도 초보 유저들간의 대결을 강제해야 할 필요가 있다고 생각된다.
그 외 플레이빈도와 관련된 시뮬레이션 결과는 다음과 같다.
 
                               [그림 6. 플레이빈도 분포]
 
                                 [그림 7. 실력별 플레이빈도]
 
                               [그림 8. 래더포인트별 플레이빈도]
 
                                 [그림 9. 시뮬레이션 결과] 
 
위 그래프는 시뮬레이션 결과와 실제 자료를 비교한 그래프이다. 어느 정도 오차는 있지만 양쪽 다 노이즈가 끼어있다는 부분을 감안할 때, 매우 흡사한 추세를 보여준다.
 
                                 [그림 10. 래더포인트와 실력분포]
 
위 그래프는 실제 실력과 래더포인트의 관계를 나타낸다. 검은 점선은 래더포인트와 skill의 비율이 같은 기준이며, 유저풀이 부족한 상위층에서 실제 실력의 반영 비율이 약해지는 것을 볼 수 있다. 파란 점선은 skill이 1000점, 1300점(어새신, 마스터의 기준 점수)인 사람들이 현재 래더포인트 상으로 어디에 위치해 있는지를 나타낸다. 그래프에서 나타나는 상황으로 볼 때 현재 게임A에서 채널 분리가 반드시 필요하며, 500점 이하의 ROOKIE 구간을 200점, 500점으로 세분화할 필요가 있다. (구간의 세분화는 시간이 지나 래더포인트의 평균이 100점 부근으로 가게 된다면 무의미할 수 있지만, 현재 상황으로 볼 때 그렇게 되기까지는 상당히 오랜 시간이 필요하다.)
 
5) 추후 예상 및 대책
기본적으로 계급 체계를 유지한다는 가정하에서, 적용 가능한 해결책 몇 가지를 제시한다. 단, 다음의 시뮬레이션은 각각의 대책을 적용했을 시의 단순한 지표 및 상황을 판단하기 위한 것이고, 실제 대책의 목적은 충분한 유저풀을 유지하면서 유저를 실력별로 분리하고, 유저 각각의 실력에 맞는 매치메이킹에 있음을 주지해야 할 것이다. 궁극적으로는, 그러한 실력에 맞는 매치메이킹을 통해 유저들이 보다재미있게 게임을 즐길 수 있게 하여, 앞에서 분석된 실력별 플레이빈도의 함수 자체를 변화시키는 것을 목표로 한다.
 
<200점, 500점 구간으로 분리시>
                                      [그림 11. 래더포인트별 유저분포]
 

                                     [그림 12. 래더포인트와 실력분포]
 
 래더포인트    0~200  200~500  500~1000
 유저비율     31.15%  55.96%   12.89% 
                                      (신규 유입 유저는 없다고 가정시)
 
실력 격차에 따른 유저들의 분리를 강하게 하는 방안으로, 유저풀은 크게 줄어들 수 있으나 여러 긍정적 효과 – 초보 학살 방지 및 실력에 맞는 매치메이킹 등 - 를 기대할 수 있다.
 
<500점 구간으로 분리시>
                                    [그림 13. 래더포인트와 유저분포]
 
                                     [그림 14. 래더포인트와 실력분포]
 
 
 래더포인트   0~200    200~500   500~1000
 유저비율    24.91%    64.97%     10.12% 
                                      (신규 유입 유저는 없다고 가정시)
 
고수들만을 분리하는 방식으로, 고수들의 유저풀에 문제가 있을 수 있고, 중급 이하의 플레이어들에게 실력에 맞는
매치메이킹을 제공하지 못하는 단점이 있으나, 어느 정도 초보 학살의 방지가 가능하다.
 
<현 상황 유지시>
 
 
                                    [그림 15. 래더포인트와 유저분포]
 
                                     [그림 16. 래더포인트와 실력분포]
 
유저풀의 보존에는 문제가 없겠지만, 현재 존재하는 아무런 문제도 해결할 수 없으므로 결국 피해야 할 방법이라 생각된다.
 
 
3. 문제점과 생각해볼 점
 
    위에서 2501이 제기한 문제점과 그 이외의 문제점을 제기해보자.
 
대전채널을 구분하는 문제 : 래더점수에 관계없이 모든 이와 대전이 가능할 경우 초보자보호에 문제가 발생한다.
래더점수가 반영된 후 실시간으로 랭킹을 업데이트할 때 : 유저가 많을 경우 실시간으로 랭킹을 업데이트하지 못하고, 정해진 시간마다 업데이트를 하는데 이 때 본인의 점수에 해당하는 대전채널이 바뀌는 경우가 있다. 또는 빈번한 유저들이 있다.
신규유입자가 변화 : 신규유입자(신규유저)가 많다면 상관이 없다. 신규유입자들끼리 대전을 하면서 자신의 실력에 맞는 위치로 이동할 수 있다. 그러나, 신규유입자가 별로 없는 경우 신규유입자가 게임에 익숙해지기 전에 대전에 임하게 된다.
래더시스템을 강제 적용할 경우 개인들은 승률이 50%로 수렴한다. 과연 유저들은 만족해하는가?
밸런스입장에서 래더점수를 바꾸는(승률에 영향을 주는) 변수와 크기를 정확히 알 수 있는가?
 
[그림 17. 등간격의 래더포인트로 유저를 구분하여 대전하는 경우]
 
    [그림 17]은 등간격의 래더점수로 대전풀을 구분하는 경우이다. 이 때, 평균부근은 대전할 수 있는 유저수가 충분하지만 양쪽 끝은 유저수가 충분하지 않아 매치메이킹이 원활하지 않을 수 있다.
 
 
[그림 18. 인원수가 같도록 구간을 나누어 대전하는 경우]
 
    [그림 18]은 동일한 인원수로 대전구간(채널)을 나누는 경우이다. 우선 동일한 인원수로 나누기도 힘들거니와 양쪽 끝에서 실력차가 너무 많이 나는 사람들끼리 대전이 이루어져야하는 문제가 있다.
 
    래더시스템을 온라인게임에 적용하는 경우 보상과의 관계는 논외로 삼았다. 유저들의 플레이가 자발적이길 바란다면, 래더시스템을 강제하기보다는 자발적으로 래더시스템에 참여하기 위한 경제적 유인이 있어야한다. 보상과 래더시스템을 연동하면 어뷰징(abusing)의 문제가 발생할 가능성이 매우 크지만, 추후 고려해봐야할 사항이라고 생각한다.

==========================================================================


이거고, 퍼간다는 리플정돈 남길줄아는사람이긴한데.. 08년도글이라 글쓴분이 과연 볼지도 의문이긴하네;;


긴글 보기가 귀찮다는 분을 위한


간단표 ^^

자신보다 높은 점수를 가진 게이머와의 승률쪽 50은 42.9%입니다. 표가 좀 짤린듯하네요
그리고 150 과 250 사이의 300은 알아서 200으로 필터링 'ㅅ';;

위의 내용들이 통상 elo레이팅 400당 실력차가 2배라고하는 근거


그리고 언제부터인지 랭겜 레이팅 논쟁이 무지막지하게 많아지는느낌인데..

배치고사같은 단기전에서는 어쩔수없이 실력도 실력이지만 운의 작용이 높을수밖에 없습니다. 표본이 적거든요

하지만 준배치까지 끝내고 게임수가 많아질수록 점수는 자기 실력에 맞게 갈수밖에 없습니다.

그러니까 제발 그만싸우라고 자게이들아 ㅡㅡ






그래프보느라 머리아플 자게이들을 위해 안구정화짤 첨부