멀티 플레이어 매치 메이커 참조 아키텍처

디자인 고려 사항

매치 메이커를 구현하려면 매치 메이킹 세션을 찾고 있는 플레이어의 데이터를 저장하는 데이터베이스가 필요하며, 서버에서 실행되는 프로세스 또는 논리를 처리하는 서버리스 Azure Functions 집합이 필요합니다.

  1. 큐에 플레이어 추가 - 플레이어가 멀티 플레이어 세션을 검색하기 시작하면 호출됩니다.
  2. 큐에서 플레이어 삭제 - 플레이어가 멀티 플레이어 세션 검색을 중단하면(매치 메이킹 취소) 호출됩니다.
  3. 플레이어 매칭 폴링 메커니즘을 통해 호출되며 게임 세션 서버 연결 세부 정보 또는 시간 제한 이벤트를 반환합니다.
  4. 서버 추가 - 새 서버를 만들 때 데이터베이스에 추가되는 관련 연결 정보(IP:포트)를 전달합니다.
  5. 상위 수준 관리자 - 시작할 수 있는 게임 세션을 찾고 각 세션을 위한 서버를 검색합니다.

선택적으로 서버가 충분하지 않은 것을 감지하면 다른 프로세스 또는 Azure 함수를 통해 확장을 요청할 수 있습니다. 다른 방법은 게임 호스팅 오케스트레이터를 사용하는 경우 이를 오케스트레이터에 위임하는 것입니다.

매치 메이킹 논리를 빌드할 때 세 가지 주요 변수를 고려해야 합니다. 적어도 2/3의 성공 확률을 목표로 합니다.

  • 최적 기량 매치 - 게임 세션에 고려된 모든 플레이어에서 각 플레이어가 게임 전문 지식 측면에서 얼마나 근사한가요?
  • 최적 대기 시간 - 각 플레이어가 대기 시간 측면에서 얼마나 근사한가요?
  • 최적 큐 시간 - 플레이어가 참가할 게임 세션을 찾는 데 얼마나 오래 걸립니까?

또한 고려해야 할 관련 개념이 몇 가지 있습니다.

  • 허용 목록 작성/차단 목록 작성 - 플레이어 또는 게임 작성자가 특정 플레이어를 차단하거나 특정 플레이어를 게임 세션에 참가하도록 허용할 수 있습니까?
  • 진행 중 참가 - 플레이어가 게임 세션이 시작된 후에도 참가할 수 있나요?
  • 자동 취소 - 특정 게임 세션이 일정 시간 후 시작되지 않는 경우 자동으로 취소할 수 있는 제한을 설정합니까?

요약하면, 랜덤 매치 메이킹 시간을 줄이는 좋은 방법은 게임에서 지원하는 각 유형에 대한 큐를 사용하고 요청과 일치하는 모든 큐에서 각 플레이어의 매치 메이킹을 시도하는 것입니다. 그런 다음 큐가 꽉 차면 특정 게임 세션을 시작하고 모든 큐에서 관련 플레이어를 제거하면 됩니다.

즉시 사용할 수 있는 매치 메이킹 솔루션을 찾고 있는 경우 PlayFab매치 메이킹 지원이 포함된 클라우드 연결 게임을 빌드, 출시 및 확대하기 위한 완전한 백엔드 플랫폼입니다.

참조 구현 세부 정보

다음은 동일한 사용 사례를 활용하여 바로 시작할 수 있는 다양한 구현입니다.

  • 서버리스 - Azure Functions 및 Azure Cache for Redis를 사용