"아니, 방 왜 이렇게 안 잡힘", "아, 고수 버스는 못 탈 망정, 발목 잡는 사람들하고만 잡히네!"
대전, 경쟁, 협동 등 매칭 기반의 온라인게임을 해본 사람들이라면 한 번은 입 밖에 내뱉어본 말일 것이다. <철권>이나 <LoL>처럼 PvP 게임이라면 꽤 직관적으로 매칭의 중요성을 떠올리지만, PvE 게임은 이러나저러나 실력빨(?) 아닌가 하는 생각을 하기 쉬운데, 결론을 먼저 말하면 절대 그렇지 않다. 매칭이 엉키면 게임 접고 떠나는 유저도 꽤나 많이 발생하게 되기 때문이다.
국내뿐만 아니라 해외에서도 매치 메이킹에 관한 경험이 공유되는 사례는 극히 드문 편이다. PvE에 대한 매치 메이킹은 더더욱 정보가 없다. 그래서 이와 관련된 고민을 하는 분들에겐 이번 NDC 2025에서 <퍼스트 디센던트> 사례 중심으로 공유되는 정보가 큰 도움이 되리라 생각한다.
초보 고수 유저가 서로 다른 문제를 겪었던 이야기, 라이브 서비스가 진행되며 또 매칭 시스템도 바뀌어야 했던 점, 또한 글로벌 크로스 플랫폼 지원 안에서 겪은 어려움 등 다양한 층위의 문제 해결 사례가 이번 강연 안에 모두 있었다.


김무성 게임 데이터 분석가가 일하고 있는 매칭팀에서는 라이브 운영에 필요한 매칭 서버 운영 및 관리, 솔루션 고도화에 필요한 분석 및 연구도 진행하고 있다고 한다.
<퍼스트 디센던트>는 넥슨게임즈의 3인칭 루트 슈터로, 매칭 콘텐츠는 요격, 침투, 특수, 침공 등으로 7가지이며 여기에 세부 설정과 난이도 등의 요소를 더하면 100여 개 이상의 풀이 존재한다. 출시 당시에도 엄청난 동시 접속자 수를 기록했지만 현재도 월 단위 3,000만 개 이상의 매치를 만들어내고 있는 게임이다. PvP 위주로 접근하게 되는 매치 메이킹 분야에서 PvE를 깊게 다룰 수 있던 게임이기도 하다.
김무성 게임 데이터 분석가는 "대상을 적절히 연결하는 것, 대결 상대를 정하는 일"이라는 매칭의 일반적인 의미 외에도 영어인 Matching을 중매 매(媒), 저울 칭(秤)으로 같은 발음의 한자에 연결 짓기도 했다. 여러 요소를 고려해 대상들을 연결하는 작업이라 소개했다.
그는 <퍼스트 디센던트>의 경험을 마라톤에 비유했다. 유저들이 다음 콘텐츠와 목표로 하는 파밍을 향해 함께 달려나가는 마라톤 레이스와 비슷하다는 것이다. 특정 지역에서 콘텐츠를 깨고 막혀 있는 보스를 잡고, 그 후에 다음 지역으로 나아가는 <퍼스트 디센던트>의 구조가 비슷하다는 설명이다.

여기서 PvE 콘텐츠를 수월하게 플레이하려면 비슷한 실력대의 유저가 매치에 함께 잡혀야 하는 니즈가 발생하게 된다. 보이드 요격전 같은 보스 레이드 콘텐츠는 비숙련 유저, 다시 말해 초보 유저가 함께 잡히면 클리어하기 어려워질 수 있는 콘텐츠다. 현재는 업데이트로 수정됐지만, 서비스 초기엔 데스 카운트가 공유되어서 가장 취약한 유저가 자주 죽으면 전체가 실패하는 구조였기 때문이다. 이전엔 인원수에 비례해 보스의 스펙과 난이도가 스케일링되는 시스템도 있었다.
그 결과, 마스터리 랭크, 계승자 레벨, 보스 기믹 숙지 여부 등 실력 차이가 나는 파티가 잡혔을 때 경험에 만족하지 못했고, 매치 탈주 비율도 증가하는 패턴을 볼 수 있었다. 실력 차이가 가장 적은 파티 대비 실력 차이가 가장 큰 파티에서 매치 탈주 발생 비율이 11%p(퍼센트 포인트) 이상 높은 현상이 나타나기도 했다. 유저들은 비슷한 실력을 가진 파티원들이 던전 클리어에 함께 하길 원했던 것이다.
이런 문제를 해결하기 위해 <퍼스트 디센던트>엔 '실력 점수'라는 개념이 도입됐다. 타 게임의 MMR과 비슷한 개념이라고 보면 된다. 서비스 초기엔 유저 실력에 영향을 주는 클리어 여부, 계승자 레벨 등 여러 선별 기준으로 적용했고, 이후 다양한 지표를 활용하며 시스템을 고도화해왔다.
그렇게 매칭이 개선되자, 클리어 가능한 실력 구간에서 매치 탈주율은 33% 감소했고, 던전 성공률은 29% 증가했다. 충분히 클리어할 수 있는 1인분의 실력을 갖춘 유저들이 각자 자신의 역할을 충실히 하면서 다음 콘텐츠로 나아갈 수 있었던 것이다.


그러나 이 시스템이 모든 문제를 해결해주진 못했다. 초보 유저들의 경우 초보끼리 매칭이 되는 구조가 될 수 있었기 때문에, 실패 경험을 반복하면서 게임을 이탈하기도 했다. 김무성 게임 데이터 분석가는 이런 문제를 해결하는 것을 "마라톤 레이스 초반에 넘어진 유저들을 일으켜 세우는 것"에 비유했다.
메인 스토리 중에 만나는 특정 요격전 구간에서 성공률이 떨어지면서 유저 잔존율도 하락하는 모습이 확인됐다.
이에 대한 해결책으로 계속해서 실패하는 유저들은 게임에서 이탈하기 전에, 더 강한 팀원과 만날 수 있게, 소위 버스를 태워주는 식으로 매칭을 돕는 방식을 택했다. 단, 그렇게 초보 유저들과 한 파티에 잡힌 고수 유저에게 부담이 되지 않는 선을 파악하고 그에 맞는 파티 매칭을 지원했다.
결과적으로 이전엔 클리어하지 못하고 탈주하던 초보 유저들도 클리어율이 50%p 대폭 상승하고, 매치 탈주율도 11%p 감소하는 결과가 나타났다. 버스를 태워주는 역할을 하게 된 고수 유저의 경우, 게임 흐름에 큰 영향을 받지 않는 모습도 확인할 수 있었다.
재밌는 점은, 이 과정에서 초보 유저를 세부 그룹으로 나눈 게 도움이 됐다. 초보 유저 중에서도 버스를 태워줘야 할 정도로 고전하던 유저 그룹이 있고, 초보 유저끼리 노력하면 해결할 수 있던 그룹이 있는데, 후자에 해당하는 상대적으로 더 나은 실력을 가진 초보 유저 그룹의 경험이 소폭 개선된 것이다.


대부분 RPG와 루트 슈터가 겪는 현상이지만, 오픈 초기엔 모두가 초반 저레벨 콘텐츠에 몰리고, 서비스가 지속될수록 중후반 콘텐츠에 매칭이 몰리는 모습이 나타난다.
초반 콘텐츠의 경우, 서비스가 지속될수록 유저 매칭이 전보다 어려워지게 된다. 오픈 시점과 동일한 로직을 적용하면 안 된다는 의미다. 전보다 적은 인원이 초반 콘텐츠에 있기 때문에, 매칭 요청 수가 줄어 결과적으로 긴 대기시간이라는 문제를 마주하게 된다. 콘텐츠 흐름 외에도 국가별 시차와 시간대에 따른 차이로도 비슷한 문제가 발생하기도 한다. 새벽에 매칭이 잘 안 잡히는 게 대표적인 예시다.
결과적으로 콘텐츠가 어느 구간에 해당하는지, 어느 지역 어떤 시간대의 매칭 요청인지에 따라 다른 매칭 로직이 필요하다는 뜻이고, 이런 변화에 선제 대응 또는 자동 대응을 할 수 있게 해야 한다는 의미다.
그렇게 매칭팀이 제시한 답은 '동적 최적화'였다. 목표한 지표 달성을 위해서 주어진 매칭 요청량 안에서 탐색 조건을 유연하게 맞추고 자동화하는 것을 말한다. 실력 지표를 예시로 들면, 대기 시간을 적절히 조정하기 위해선, 서비스 초기보다 조금 더 유연하게 매칭을 해줘야 너무 오래 기다리지 않는 환경을 제공할 수 있다. 과거의 최선을 고집하지 말고, 그때의 차선을 지금의 최선으로 만들어야 한다는 것이다.
세부적으로는 과거의 데이터 집계를 기반으로 요청량과 대기 시간을 파악하고, 미래에 이 정도의 요청량이 있을 것이라 예측한 뒤, 그 예측된 요청량에 맞게 실력 탐색 범위를 조정해, 동적으로 '적응'시키는 구조다. 그렇게 요쳥 풀이 부족할 때도 충분할 때도 모두 일정한 매칭 경험(대기 시간)을 제공할 수 있게 된다.


그런데 후반 콘텐츠에서는 또 다른 변수가 있었다. 바로 특정 콘텐츠에서 특정 계승자의 인기가 많았던 것이다. 해당 계승자를 사용하는 유저가 파티에 없으면 동료들이 탈주하는 현상이 확인됐던 것이다.
실력이 비슷한 유저끼리 매칭이 됐음에도 불구하고, 특정 계승자가 없다는 것이 확인되면 게임 시작 전에 탈주하는 유저들이 있었다. 반대로 실력이 낮아도, 특정 계승자가 포함되면 매치 탈주율이 낮았다.
그래서 일정 시간 동안 특정 계승자가 무조건 한 명은 포함되게 하기도 하고, 동시에 특정 계승자를 너무 많이 포함하는 매치는 지양하는 로직을 마련했다. 그렇게 특정 계승자가 한 명도 없는 매치 비중이 감소하면서, 전체 매치의 탈주율도 감소하고 유저들의 목표 성공률도 증가하는 동향이 나타났다.

<퍼스트 디센던트>는 PC와 콘솔을 모두 지원하고 있다. 그런데 PC와 콘솔 유저들의 요청이 조금 달랐다. 플랫폼별로 최적화 및 성능, 컨트롤러에 따른 실력 차이가 있어 PC 플랫폼 유저들이 크로스 매칭 기능을 끄길 원했던 것이다. 다시 말해 PC 유저끼리만 매칭을 해달라는 요청이었다. 반면, 콘솔 플랫폼에선 자체 플랫폼별로 이러한 기능이 제공되고 있었지만, 크로스 플레이 기능을 끄는 유저들은 드물었다.
이런 기능을 지원하기 이전에 면밀한 검토가 필요했다. 한 번 적용한 이후 라이브 서비스에선 되돌리기 어렵다는 점, 플랫폼별로 매칭 풀을 나눌수록 유저들의 대기 시간은 더 길어진다는 점, 국가와 권역별로 플랫폼 분포가 달라 글로벌 동일 로직을 적용하기 까다롭다는 점 등이 미리 고려해야 할 사항이었다.
그래서 매칭팀은 ON/OFF 버튼으로 완전 분리하는 로직은 지역 특성과 유저들의 ON/OFF 선택 비율에 따라 일부 플랫폼 유저들이 고립될 수 있다는 점을 인지하고 있었다.
그래서 완전 분리 대신 '소프트' 분리를 지원하는 방향을 제안했다. 일정 시간 동안의 분리 매칭을 유도하고, 특정 유저들이 고립되는 상황을 막기 위해 일정 대기 시간 이후에는 로직을 해제하는 방식인 것이다. 그러나 이를 바로 라이브 서비스에 적용하기엔 리스크가 있어, 매칭 시뮬레이션 과정을 거쳤다. 실제 라이브 과정 중에 오는 매치 요청을, 다른 로직의 툴에서 별도로 시뮬레이션을 거친 것이다. 가상의 요청을 생성해 시뮬레이션을 하기도 했다.
이러한 시뮬레이션은, 유저들이 실제로 플레이하는 동향(클리어 비율/ 탈주 등)을 동일하게 구현하긴 어렵지만, 변경된 로직 안에서 특정 매치 생성이 어느 정도 되는지, 그 과정에서 유저들의 대기 시간은 얼마나 짧고 긴지 확인할 수 있다.
결국 이후 실제 라이브에 적용한 과정에서도 시뮬레이션으로 미리 파악했던 것과 유사하게 부작용이 없는 것을 확인할 수 있었다.



