GS2-Matchmaking API 레퍼런스

매치메이킹 기능

대전 상대와 협력 상대를 찾아주는 서비스입니다.

매치메이킹의 흐름은 다음과 같습니다.

호스트가 개더링을 생성

참가자가 조건에 맞는 개더링을 검색

규정 인원이 모이면 매치메이킹 완료

GS2-Matchmaking은 이 흐름 중 참가자가 조건에 맞는 개더링을 검색하는 부분에서 최대한 많은 요구 사항을 충족하도록 설계되어 있습니다.
여기에서는 유스케이스를 곁들여 그 설계 예시를 설명합니다.

  • 같은 게임 모드를 원하는 상대를 찾고 싶다

게임 내에는 캐주얼 플레이어용과 코어 게이머용, 두 가지 게임 모드가 있습니다.
이러한 플레이어를 섞지 않고 매치메이킹 처리를 하고 싶다고 가정합니다.

개더링을 생성할 때나 개더링을 검색할 때 모두 최대 5개의 속성값을 지정할 수 있습니다.
개더링을 생성할 때는 모집할 플레이어가 가진 속성값의 범위를 지정하고,
개더링을 검색할 때는 자신의 속성값을 지정하여 처리를 요청합니다.

즉, 호스트가 개더링을 생성할 때 속성값1에 모집할 게임 모드를 지정하고,
검색하는 쪽도 자신이 참가하고 싶은 게임 모드를 속성값1에 지정함으로써, 원하는 게임 모드가 같은 플레이어끼리 매치메이킹됩니다.

  • 1에 더해 같은 레벨대의 상대를 찾고 싶다

호스트는 개더링을 생성할 때 속성값2에 모집할 레벨의 최솟값과 최댓값을 지정합니다.
검색하는 쪽은 자신의 레벨을 속성값2에 지정함으로써, 같은 레벨대의 플레이어끼리 매치메이킹됩니다.

여러 속성값을 지정한 경우에는 모든 속성값의 범위를 충족하는 상대를 찾도록 처리됩니다.

  • 2에 더해 대기 시간이 길어졌을 때 모집할 레벨대를 넓히고 싶다

처음에는 좁은 범위로 모집하여 가능한 한 같은 레벨의 플레이어끼리 매치메이킹하지만, 좀처럼 상대를 찾지 못하는 경우 모집할 레벨대를 넓혀서 모집하고 싶다고 가정합니다.
개더링을 생성한 후 약 1분마다 실행되는 GS2-Script 이벤트가 있습니다.
이 스크립트에서 개더링의 속성값 범위를 완화함으로써, 점차 원하는 조건을 완화하는 처리를 구현할 수 있습니다.

  • 친구만 참가할 수 있는 개더링 만들기

개더링을 생성할 때 옵션으로 참가를 허용할 사용자 ID 목록을 지정할 수 있습니다.
이를 사용해 친구의 사용자 ID 목록을 지정함으로써 참가자를 제한할 수 있습니다.

  • 괴롭힘을 가한 플레이어와 매치메이킹되지 않도록 하고 싶다

개더링 생성 시·검색 시에 사용자 ID의 블랙리스트를 지정할 수 있습니다.
검색 시 지정한 블랙리스트는 조건에 일치하는 개더링을 발견하여 참가한 개더링의 블랙리스트에 추가됩니다.
검색할 때 자신이 블랙리스트에 포함되어 있는 경우에는 매치메이킹 대상에서 제외됩니다.

  • 역할별 매치메이킹

게임에 따라서는 방어역 1명, 회복역 1명, 공격역 2명으로 매치메이킹을 하고 싶은 경우가 있습니다.
이때 사용할 수 있는 것이 역할 속성입니다.

방어역으로 tank를, 회복역으로 healer를, 공격역으로 attacker라는 역할을 가정합니다.
개더링을 생성할 때 각 역할의 모집 인원을 설정합니다.
개더링 검색 시 자신의 역할을 설정함으로써, 해당 역할에 여유가 있는 개더링만 참가 가능한 개더링으로 처리됩니다.

모집 역할에는 별칭(에일리어스)을 설정할 수도 있습니다.
예를 들어, tank를 더 구체적인 역할로 표현하여 paladin, warrior, dark_knight 중 하나로 개더링 검색을 수행한다고 가정합니다.
개더링을 생성할 때 tank의 별칭으로 paladindark_knight를 지정한 경우, warrior는 참가할 수 없는 개더링을 만들 수 있습니다.

  • 추가 모집

매치메이킹 완료 후 1명이 이탈하여 1명만 보충하고 싶을 때 사용합니다.
이때 사용하는 것이 파티 토큰입니다. 파티 토큰을 발급하려면 파티를 편성하는 플레이어의 플레이어 토큰이 필요합니다.
플레이어 토큰은 플레이어 본인이 자신을 대신하여 파티 대표자가 매치메이킹을 수행하는 것을 허용하는 토큰으로, 3분간의 유효기간이 있습니다.
파티 멤버는 각자 플레이어 토큰을 발급하는 API에 요청하여 플레이어 토큰을 입수하고, 파티 대표자에게 전송합니다.
파티 대표자는 파티 멤버로부터 플레이어 토큰을 받아 3분 이내에 파티 토큰 발급 API로 전송함으로써 파티 토큰을 입수할 수 있습니다.
파티 토큰에는 10분의 유효기간이 있으며, 10분 이내에 파티 토큰을 사용하여 개더링 생성 처리 또는 개더링 검색 처리를 호출합니다.
이렇게 함으로써 파티 멤버 전원이 참가한 상태의 개더링을 생성하거나, 파티 멤버 전원이 참가할 수 있는 개더링에 참가할 수 있습니다.

  • 파티 간 매치메이킹

4 대 4로 대전하는 게임에서, 사전에 편성한 파티를 아군과 적군으로 분산시키지 않고 대전하고 싶을 때가 있습니다.
예를 들어, 사전에 3명으로 편성한 파티와 사전에 4명으로 편성한 파티, 그리고 1명의 솔로 플레이어를 매치메이킹하여,
사전에 3명으로 편성한 파티 + 1명의 솔로 플레이어 vs 사전에 4명으로 편성한 파티라는 대전을 실현하고 싶다고 가정합니다.
이러한 경우에는 먼저 4명 단위의 매치메이킹을 실행합니다.
그러면 3명으로 편성한 파티 + 1명의 솔로 플레이어사전에 4명으로 편성한 파티라는 2개의 개더링이 만들어집니다.
그 후 각 파티의 대표자가 정원 2명의 매치메이킹을 수행하여 파티끼리 매치메이킹됩니다.
이렇게 함으로써 사전에 3명으로 편성한 파티 + 1명의 솔로 플레이어 vs 사전에 4명으로 편성한 파티를 실현할 수 있습니다.

  • 매치메이킹 중 플레이어 간 통신

매치메이킹이 완료되지 않은 상태에서 플레이어 간의 소통이 필요한 경우가 있습니다.
GS2-Matchmaking에서는 개더링 생성 시 플레이어 간 통신 수단으로 두 가지 방법을 제공합니다.

  • GS2-Chat과 연동한 채팅방 생성
  • GS2-Realtime과 연동한 게임 서버 기동

모집이 끝나지 않은 상태에서도 플레이어 간 메타데이터를 낮은 빈도로 교환하고 싶은 경우에는 전자를,
모집하면서 NPC를 포함시키거나 인원이 부족한 상태에서 게임을 진행하고 싶은 경우에는 후자를 사용합니다.

저빈도·고빈도를 판단하는 기준으로 사용할 수 있는 것이 GS2-Chat이 가진 제한입니다.
GS2-Chat은 하나의 채팅방에 대해 초당 3회만 발언할 수 있습니다. 이 빈도를 초과하는 경우에는 GS2-Realtime을 사용하십시오.

  • 매치메이킹 완료 후 처리 방법

매치메이킹이 완료되었을 때 GS2-Gateway를 사용한 게임 내 푸시 알림 또는 GS2-JobQueue에 의한 작업 등록으로 플레이어에게 매치메이킹 완료를 알릴 수 있습니다.
또한 GS2-Script를 사용하여 임의의 스크립트를 실행할 수도 있습니다.
GS2-Realtime을 사용하여 매치메이킹 후의 대전·협력 플레이를 실현하는 경우에는, 매치메이킹 완료 후 실행되는 GS2-Script에서
GS2-Realtime의 개더링을 생성하고, 해당 개더링의 IP 주소·포트 정보를 GS2-Gateway를 사용한 게임 내 푸시 알림 또는 GS2-JobQueue에 의한 작업 등록을 사용하여 알림으로써 게임 서버로 유도할 수 있습니다.


GS2-Matchmaking SDK for Game Engine API 레퍼런스

게임 엔진용 GS2-Matchmaking SDK의 모델 사양과 API 레퍼런스

GS2-Matchmaking SDK API 레퍼런스

각종 프로그래밍 언어용 GS2-Matchmaking SDK의 모델 사양과 API 레퍼런스

GS2-Matchmaking 스크립트 트리거 레퍼런스

확장 스크립트를 호출하는 이벤트 트리거의 레퍼런스

GS2-Matchmaking Deploy/CDK 레퍼런스

GS2-Deploy의 스택을 생성할 때 사용하는 템플릿 포맷과, CDK를 이용한 각종 언어의 템플릿 출력 구현 예제

GS2-Matchmaking 마스터 데이터 레퍼런스

마스터 데이터 포맷과 임포트할 각종 모델의 레퍼런스

GS2-Matchmaking 트랜잭션 액션

검증/소비/입수 각 트랜잭션 액션의 사양