기획관련/기획 공부

PvP 콘텐츠에서 매칭 밸런스 설정하기 - 2부 Elo 레이팅 편

청우운 2022. 7. 8. 12:18

이전글 보기

 

 

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

 

 

 

오늘은 제임스킴 선생님의 '제임스킴의 RPG게임 밸런스 기획' 중

9번째 강의이자 마지막 강의인 'PvP 콘텐츠에서 매칭밸런스 작업하기'를 따라해봤습니다.

 

강의 하나하나가 보석 같았던 제임스킴 선생님의 강의는 오늘이 마지막입니다.

 

스승의 은혜는 하늘같습니다.

 

감사합니다. 샘샘ㅁ미.

 

 

아래 제작한 모든 피피티와 자료는 해당 강의와 강의자료를 토대로 제작한 것입니다.

 

저번 시간엔 PvP 콘텐츠와 온라인 게임 전반에서 '공정성'이 지니는 의미와

 

공정한 콘텐츠 제공을 위해서 고려해야할 점을 알아봤습니다.

 

플레이어의 강함을 객관화 할 수 있는 기준을 세우고,

 

또한 결과로 주어지는 보상 (점수)에 대한 분배가 어떻에 이루어져야 합리적일까? 라는 고민까지 했었죠.

 

이번 포스팅에선 Elo 레이팅 시스템에 대해 알아보고, 해당 시스템이 어떠한 방법으로 문제를 해결하는지 알아보겠습니다.

 

그런데, Elo가 무엇일까요?

 

Elo Rating System을 고안한 Elo 아저씨.

00. Elo 아저씨

 

[에로 아닙니다. 줄임말 아닙니다]

 

Elo Rating System은 헝가리계 미국 물리학자이자 체스 플레이어인 Arpad. E. Elo 가 고안한 점수 측정 방식입니다.

 

사담으로 이 아저씨, 발음 하실 때 [엘뢰] 라고 발음하신답니다.

 

헝가리쪽 본명은 Élő Árpád Imre으로, [엘뢰 아르파드 임레]라고 읽습니다.

 

어디가서 아는 척 합시다.

 

Elo 레이팅 시스템에서 기본적인 가정은 두가지 입니다.

 

  • 첫째, 유저의 퍼포먼스는 항상 일정하다.
  • 둘째, 모든 유저의 실력은 정규분포를 따른다.

 

그러면 각종 사례와 수식을 보면서 두 가정이 어떻게 작용하여 공정한 매치를 성사시키는 지 알아보겠습니다.

손쉬운 상대와는 적은 이득, 큰 위험을
어려운 상대와는 일발역전의 기회를

01. 점수 부여 방식

 

[합리적인 점수 부여 방식은?]

 

01) 점수가 낮은 상대와 겨루는 경우

 

약한 상대와 겨루는 경우엔 승리할 시엔 점수는 적게,

 

패배할 시 잃어버리는 점수는 크게 변동합니다.

 

자신보다 약한 상대에게 졌으니 해당 점수에 알맞지 않은 플레이어라는 결론이 내려지는 것이지요.

 

유저는 점수를 잃은것에 애통해 하겠지만,

 

이러한 결과가 나온 것에 대한 확실한 근거가 존재하므로 

 

승부 결과에 납득할 수 있게 됩니다.

 

01) 점수가 높은 상대와 겨루는 경우

 

자신보다 강한 상대와 겨루는  경우엔 승리 시 점수는 크게,

 

패배 시 점수는 적게 변동합니다.

 

쉽게 말해서, 여기 있을 사람이 아니니 올라가라는 겁니다.

 

강한 상대와 맞닥뜨려도 잃어버리는 점수가 적기 떄문에

 

유저는 부담없이 계속 도전할 수 있습니다.

 

02. 점수 부여 공식

그렇다면 Elo 레이팅 시스템에서 점수 변동값은 어떻게 산출해내는 것일까요?

 

먼저, 들어가기에 앞서 필요로 하는 정보는 다음과 같습니다.

 

01) 양 측 플레이어의 점수 & 상대 승률

 

양 측 플레이어의 점수를 통해 상대 승률을 구할 수 있습니다. 

 

점수를 구하는 공식은 다음과 같습니다.

 

아앗~ 복잡해~

 

넵. 복잡합니다.

 

우리는 왜 이런 식이 나왔는지는 둘째 치고,

 

이러한 식을 이용해서 어떻게 활용할지 중요한거니까요.

 

다음은 상대 승률을 이용해 새로운 점수 구하는 방법입니다.

02) k 상수

새로운 점수 구하는 공식을 보면, k 상수라는 값이 등장합니다.

 

승패 여부 상수에서 상대 승률을 뺀 값이 k 상수에 곱해져 변동하는 점수 값이 되기 때문에

 

k 상수가 점수 변동값을 결정하게 됩니다.

 

k 상수 값에 따라서 증감값이 달라집니다.

 

k = 24의 경우와 k = 30인 경우의 증감 값을 정리한 표입니다.

 

k 값과 점수 변동폭이 정비례하는 모습을 볼 수 있습니다.

 

그렇다면 k 상수의 크기는 어떻게 정해야 할까요?

 

하위권의 경우는 변동폭을 크게

하위권 유저의 경우를 살펴보겠습니다.

 

하위권에서 k 상수가 작다면 어떤 일이 벌어지게 될까요?

 

k 상수가 작다는 것은 점수 변동폭이 작다는 것을 의미합니다.

 

점수의 변동이 적은 만큼 순위 변동이 드물게 일어납니다.

 

자연스레 스펙과 순위가 좋아도 하위권에 머물 수 밖에 없어요.

 

따라서 점수를 빨리 얻어 상위권으로 상승하고 싶은 하위권 유저들은 지루함을 느끼게 됩니다.

 

그러므로 하위 티어의 경우는 k상수 값을 비교적 큰 값으로 설정하는 것이 좋겠죠?

 

 

상위권 유저의 경우는 변동폭을 작게 설정하는 것이 좋습니다.

이번엔 상위권 유저를 살펴보겠습니다.

 

반대로 상위 티어에서 k 상수가 커서 순위 변동이 자주 일어난다면 유저들은 어떤 느낌을 받게 될까요?

 

한 번의 전투로 순위가 급격하게 휘청인다면 순위에 민감한 상위권 유저들은 강한 스트레스를 받을 가능성이 높습니다.

 

또한 순위 유지가 힘들고 변동이 잦은 만큼 성취감과 긴장감이 줄어들게 되겠지요.

 

따라서 상위 티어의 경우는 k 상수의 값을 상대적으로 작게 설정하는 것이 좋습니다.

 

 

실제 체스의 경우 구간별로 다른 k 상수값을 채용하고 있습니다.

어느 점수 구간에 위치하느냐에 따라 적절한 k 상수의 값이 달라집니다.

 

실제로 미국 체스 협회의 경우 점수에 따라 변동적인 k 상수값을 채용하고 있는데요.

 

점수 구간 뿐만이 아니라 게임의 상황을 고려하여 점수를 설정하는 것이 좋습니다.

 

길드워의 사례를 들어보겠습니다.

 

길드워 서비스 초기 랭크 pvp에 사용된 k 값은 30이라고 합니다.

 

그러나 어느정도 게임이 안정된 시기에 접어들고, k 상수 값을 설정하기 위한 유의미한 데이터가 축적되면서

 

최근 변경된 k 값은 5입니다.

 

상수 설정이 어렵다면 데이터를 축적하고 최적의 값을 계산하여 설정하여도 좋습니다.

매칭에 필요한 조건을 설정해봅시다

03. 매칭 조건 설정

 

[매칭에 필요한 조건은?]

 

이제 매칭에 필요한 조건들을 설정해보도록 하겠습니다.

 

먼저, 점수를 세분화하여 구간을 나누는 작업을 하도록 하겠습니다.

 

점수는 총 4 구간으로 나누었으며, 각각 브론즈, 실버, 플래티넘, 다이아몬드로 이름 붙였습니다.

 

넵. 티어 시스템은 게임 외적으로는 유저에게 단기적인 목표를 제공해 게임을 플레이하게 만드는 동인(動因)으로 작용하는 한 편,

 

게임 내적으로는 유저에게 쾌적한 매치 환경을 제공할 수 있도록 비슷한 실력을 지닌 유저를 분리하는 역할을 하는 셈입니다.

 

또한 MORPG 특성 상 캐릭터 스펙의 영향이 적지 않으므로 레벨 제한을 넣어줬습니다.

 

매칭 점수 범위는 상대 플레이어를 검색하기 위한 임의의 값입니다.

 

해당 범위는 매칭 시간에 따라 증가할 수 있으며 적절한 매칭이 이루어지지 않을 시 추후 재설정이 가능합니다.

 

이번 시간은 매칭이 이루어지는 방식을 알아보기 위한 포스팅이므로, 변동값을 설정하진 않았습니다.

 

매칭 범위 내에서 상대를 찾자

첫번째 단계입니다. 

 

우선 매칭 범위 내에서 플레이어를 검색합니다. 

 

예시를 위해 레벨 20, 500점의 플레이어를 가정하겠습니다.

 

1,500점 미만이기 때문에 해당 플레이어는 브론즈 티어입니다.

 

브론즈 티어의 매칭 점수 범위는 150점이므로, 플레이어는 250 ~ 650점 사이의 플레이어와 겨루게 됩니다.

 

다음 단계를 위해 440점인 플레이어를 검색했다고 가정하겠습니다.

 

 

두번째 단계입니다.

 

매칭 제한 레벨을 확인합니다. 브론즈 티어이기 때문에 플레이어가 만날 수 있는 최고 레벨은 20으로 제한됩니다.

 

이 때 상대방이 440점의 15레벨 플레이어라면 매칭이 성사되고,

 

20 초과일 시 상대를 재탐색 하게 됩니다.

 

그러나 매칭이 길어진다면 플레이어는 불편함을 느끼게 됩니다.

 

원활한 매칭을 위해 조건을 확대하거나 변경해줍시다.

 

해당 포스팅에는 3회 이상 재탐색 시 플레이어의 레벨을 기준으로 ±5 의 유저를 매칭하도록 하겠습니다.

 

플레이어의 레벨은 20이므로 레벨 15 ~ 25 사이의 플레이어가 검색되나, 

 

첫번째 단계의 조건으로 점수는 350 ~ 650 사이로 유지됩니다.

 

해당 과정을 플로우차트로 만들어보자

해당 과정으로 만들어본 플로우차트입니다.