포스트

[Review] NDC 매칭 시스템 만들기

넥슨 인텔리전스랩스에서는 어떻게 매칭 시스템을 만들까

[Review] NDC 매칭 시스템 만들기

soft skill에 집중하고 있는 와중에 내가 보고있는 강의에서 여러가지 목적과 의사결정을 하는데 있어 다른 회사의 레퍼런스를 참고하는 경우가 있다고 한다.

아직 목적과 의사결정에 약한 나는 여러가지 회사 기술 블로그를 참고하여 어떻게 실무에서 목적을 세우고 분석을 하며, 의사결정을 내리는지 블로그에 기록을 남기기로 했다.

오늘은 내가 가고싶은 게임 회사의 기술 블로그를 Review하고자 한다. 앞으로 천천히 기술 블로그들을 뜯어보고 내 생각을 확장하고자 한다.

[NDC] 어떻게 매칭시켜드릴까요? - 매칭 시스템 만들기

[NDC] 어떻게 매칭시켜드릴까요? - 매칭 시스템 만들기

권리자명: (주)넥슨코리아

홈페이지: [NDC] 어떻게 매칭시켜드릴까요? - 매칭 시스템 만들기

문제정의

Matchmaking이란 무엇일까? 메칭메이킹이란 사업, 스포츠, 게임에서 상대를 찾는 과정으로 게임판을 짜주는 작업이다. 즉, PvP(Player versus Player)에서 실력 또는 자본 등을 바탕으로 균형이 맞는 플레이어를 이어주는 작업이다.

위 발표도 비슷한 실력을 매칭하기 위해 어떻게 실력을 측정하지를 생각하고 있다.

기존의 접근으로는 실력점수(skill rating, MatchMaking Rating...)을 도입한다. 이는 게임의 랭킹, MMR 등을 나타낸다.

실력점수

실력점수는 초기값에서 시작해서 게임결과에 따라 점수를 갱신한다. 동일한 점수에서 시작하여 이기면 점수를 얻고, 지면 점수를 잃는다. 이를 반복하여 실력을 측정한다.

발표에서는 실력을 측정하기 위해서는 단위가 필요하다고 한다. 가령 실력평가 중에 하나인 [1]ELO같은 경우 점수 차이(내 점수 - 상대점수)를 사용한다.

[1] ELO: 물리학자 교수이자 체스 마스터였던 엘로(Arpad Elo)가 만든 선수 평가 시스템이다. ELO는 플레이어들의 능력 수준은 정규 분포를 따른다고 가정한다.

ELO

ELO_Schema

Elo에서 상대 전적을 계산하는 공식

 

발표에서는 상대방과의 실력차이에서의 예상이 들어간다고 한다.

  • 상대가 나보다 실력점수가 높다
    • 예상 외의 승리라면 -> 실력 점수를 많이 얻음
    • 당연한 패배라면 -> 실력 점수를 적게 얻음
  • 상대가 나보다 실력점수가 낮다.
    • 예상 외의 패배라면 -> 실력 점수를 많이 잃음
    • 예상 가능한 승리라면 -> 실력 점수를 적게 얻음

ELO 실력 점수의 점수 갱신식 ELO_Schema2 R’_A: 유저A의 새로운 점수
R_A: 이전 점수
S_A: 실제 결과. 이기면1 지면0
E_A: 예상 승률
K: 튜닝 파라미터

만약 내가 1600점일 때 1800점의 상대를 만난다면?

  • K = 24
  • R_A = 1600
  • S_A = 1
  • E_A = 0.25

이겼다면?

  • R’_A = 1600 + 24(1-0.25) = 1618

졌다면?

  • R’_A = 1600+24(0-0.25) = 1594

ELO외에도 다양한 실력점수가 있다.

  • Glicko: ELO에서 가중치를 더 수학적으로 다듬은 수식 Glicko
  • TrueSkill: Microsoft에서 개발한 실력 기반 랭킹 시스템 TrueSkill

※ 위 Glicko는 2버전이다. TrueSkill은 2가 존재하며 이는 2024년에 리그 오브 레전드(LOL)의 매칭 시스템에 적용하였다.

실력기반 매치메이킹 절차 순서

매칭을 요청 -> 실력점수에 따라 정렬 -> 제한시간내에 인접한 실력의 유저를 탐색 -> 게임을 시작 -> 게임 결과를 점수에 반영

즉, 상대와 실력 동등함과 대기시간의 트레이드 오프

무엇을 원했을까?

실력의 동등함 프레임

실력이 비슷한 사람과 게임하면

  • 너무 많이 지거나 많이 이기지도 않고
  • 일방적인 게임은 적어지며
  • 지더라도 남득할 수 있다.

끝나지 않는 문제

하지만 매칭으로 인해 다양한 문제가 발생한다.

  • 대결에 의한 스트레스
  • 채팅에 의한 스트레스(ex. [2]아니시에이팅)
  • 운영상의 문제
    • 게임핵, 어뷰징, 대리게임
    • 패작, 부계정, 양민학살, 주차
  • 측정의 문제
    • 단차원의 실력
    • 오직 승패만의 반영
  • 동등함의 문제
    • 동등한 게임과 재미있는 게임 사이의 찾는 무언가
    • 실력의 동등함 != 좋은 매칭

[2] 아니시에이팅: “아니”와 “이니시에이팅”의 합성어. 나는 너의 플레이를 더 이상 이해할 수 없으며, 이내심의 한계가 오고 있다.

위 문제를 보완하기 위해 기획, 운영요소가 필요하다.

해결을 위한 고민

넥슨이 오랫동안 운영한 수많은 게임에서 발생하는 데이터 및 유저 프로필 + 머신러닝을 결합하여 매칭 시스템을 해결하고자 한다.

실력점수보다는 매칭 결과의 품질

단일 유저에 대한 측정이 아니라 게임 참여자의 조합을 평가 -> 같이 플레이할 유저들이 어떤 정보를 가지고 있으며 어떤 상태인가?

  • 각 유저의 선호 무기 혹은 캐릭터 선택은?
  • 선호하는 포지션과 전략, 맵리딩 능력
  • 선택 캐릭터의 숙련도와 평균 퍼포먼스
  • 최근겡임의 격차 수준, 연승연패
  • 파티 상태, 아군팀과의 상성
  • 트롤이나 비매너 행위 등

동등함을 생각하더라도 유저의 상태게임의 맥락으로 더 정밀하게 매칭 시스템 구현

주어딘 데이터로부터 입력변수를 출력변수에 매칭하는 함수를 학습을 시행했다.(출력변수 = f(입력변수))

그 결과 실력점수를 바탕으로 예측했을 떄는 60.2% 정확도를 가지고, 게임 맥락을 바탕으로 예측했을 떄는 65.9%의 정확도를 가진다.

동등함의 프레임 벗어나기

매칭에 대한 평가가 실력의 동등함일 필요가 없다.

  • 실력 점수가 아니라 매칭 조합에 대한 품질평가
  • 실력의 동등함이 아니라 대결의 재미를 정조준

즉, 동등함이 아닌 대결과 협력의 재미를 목표로 매칭 시스템을 만들고 있다.

마치며

MVP MVP(Minimum Viable Product)는 실제 기능이 동작하는 최소한의 기능을 개발하고 피드백을 받으며 기능을 개선해 나가는 방법으로 매칭팀에서 위 방식으로 실험을 진행하고 있다고 한다.

게임서버와 통신하고 -> 매칭풀과 필요한 정보를 읽고 -> 게임 상대를 찾고 품질을 평가하고 -> 매칭상황을 보여주고 설정을 변경하면서 매칭팀은 시스템을 만들고 있다.

더 나아가서, 게임 세상의 수많은 요소가 상용작용하는 요소들을 가지고 관계의 질을(상관관계가 높은지) 측정하고 재미를 찾을 수 있도록 매칭해주는 것을 목표로 삼고 솔루션을 만들고 있다.

회고

게임을 하다가 연패를 하게되면 매칭시스템이 잘못되었다고 생각을 하였다. 그리고 매칭 시스템이 공정성을 위해서 비슷한 실력을 연결해주는 것으로만 단순히 생각을 하였다. 하지만 발표를 듣고 생각을 달리하게 되었다. 공정성을 위해 만드는 것이 아니 대결과 협력의 재미를 위해서 만든다는 것에 과거를 생각하게 되었다. 내가 게임을 좋아하게 된 것은 재미있었기 때문에 좋아했다는 것을 다시한번 깊이 새기고 재미를 목표로 데이터 분석을 공부하고 준비해야겠다.

 

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.