다음을 통해 공유


매치 메이킹 REST API 빠른 시작

참고 항목

멀티 플레이어 SDK는 폴링의 필요성을 줄이는 실시간 알림 지원이 포함되어 있으므로 사용하는 것이 좋습니다. 이를 통해 매치 메이킹 환경을 향상하고 지연을 줄일 수 있습니다. 빠른 시작 - 클라이언트 SDK

이 빠른 시작 가이드는 매치 메이킹 기능을 통합하는 전체 프로세스를 안내합니다. 이 빠른 시작 내의 모든 코드 예제는 Unity용입니다. 그러나 개념과 흐름은 (일반적으로) 다른 플랫폼에도 적용됩니다.

게임 디자인에 따라 단일 사용자여러 사용자 매치 메이킹 섹션을 고려하십시오.

이 자습서는 게임을 찾기 위해 특정 대기 목록에 티켓을 제출하는 방법을 보여줍니다. 대기 목록은 한 게임 모드 또는 여러 게임 모드에 매핑될 수 있습니다(예: 플래그 모드와 킹 오브 더 힐 모드를 같은 대기 목록에서 캡처).

매치 메이킹 서비스는 대기 목록에 있는 티켓 중에서 매치 찾기를 처리합니다. 매치가 발견되면 타이틀은 게임 플레이를 위해 플레이어를 함께 연결하는 기능을 처리해야 합니다.

게임 관리자에서 매치 메이킹 큐 구성

빠른 시작에서는 게임 관리자에 큐를 구성해 놓았다고 가정합니다. 설정 방법에 대한 자세한 내용은 매치 메이킹 큐 구성을 참조하세요.

단일 사용자 티켓 매치 메이킹

게임에 1대1 게임 모드가 있거나 단일 사용자가 매치 메이킹을 입력하는 것을 지원하는 경우 단일 사용자 매치 메이킹을 고려하십시오. 단일 사용자 매치 메이킹은 아래에 표시된 패턴을 따릅니다.

매치 메이킹 흐름

매치 메이킹 티켓 만들기

사용자는 CreateMatchmakingTicket을 사용하여 매치 메이킹 티켓을 만듭니다.. 티켓 생성이 성공하면 서비스는 TicketId를 반환합니다.

티켓을 생성하려면 Creator(사용자의 ID 및 특성), GiveUpAfterSeconds(서비스가 티켓 매치를 포기하기 전의 시간) 및 매치를 찾는 QueueName을 지정해야 합니다.

Creator 필드는 QueueName과 일치하는 대기 목록 구성에 필요한 사용자 특성을 포함해야 합니다. GiveUpAfterSeconds 시간 값은 사용자가 스스로 포기하지 못하도록 하기 위해 120초로 설정됩니다.

PlayFabMultiplayerAPI.CreateMatchmakingTicket(
    new CreateMatchmakingTicketRequest
    {
        // The ticket creator specifies their own player attributes.
        Creator = new MatchmakingPlayer
        {
            Entity = new EntityKey
            {
                Id = "<Entity ID goes here>",
                Type = "<Entity type goes here>",
            },

            // Here we specify the creator's attributes.
            Attributes = new MatchmakingPlayerAttributes
            {
                DataObject = new
                {
                    Skill = 24.4
                },
            },
        },

        // Cancel matchmaking if a match is not found after 120 seconds.
        GiveUpAfterSeconds = 120,

        // The name of the queue to submit the ticket into.
        QueueName = "myqueue",
    },

    // Callbacks for handling success and error.
    this.OnMatchmakingTicketCreated,
    this.OnMatchmakingError);

매치 메이킹 티켓의 상태 확인

매치 메이킹에서 티켓의 Status에 액세스하려면 TicketId로 서비스를 폴링해야 합니다. 이렇게 하려면 타이틀이 GetMatchmakingTicket을 호출하도록 하십시오. 분당 최대 10번 폴링할 수 있습니다. 예를 들어 6초마다 티켓 상태를 폴링합니다. 폴링은 티켓의 상태 검색할 때 지연을 증가시킬 수 있습니다. 그러므로 빠른 시작 - 클라이언트 SDK에 설명된 멀티 플레이어 SDK 메서드를 사용하는 것이 좋습니다. SDK 메서드의 실시간 알림 기능을 사용하면 폴링할 필요가 없습니다.

티켓의 상태가 Matched로 변경되면 클라이언트는 티켓 폴링을 중지할 수 있습니다. 그 시점부터 티켓에는 MatchId가 포함됩니다.

PlayFabMultiplayerAPI.GetMatchmakingTicket(
    new GetMatchmakingTicketRequest
    {
        TicketId = "<ticket ID goes here>",
        QueueName = "myqueue",
    },
    this.OnGetMatchmakingTicket,
    this.OnMatchmakingError);

매치 가져오기

클라이언트에서 GetMatchmakingTicket의 응답에 제공된 MatchId를 사용하여 GetMatch를 호출합니다. 이 매치는 서로 매치하는 사용자 목록을 포함합니다.

PlayFabMultiplayerAPI.GetMatch(
    new GetMatchRequest
    {
        MatchId = "<match ID goes here>",
        QueueName = "myqueue",
    },
    this.OnGetMatch,
    this.OnMatchmakingError);

매치 메이킹 티켓 취소

어떤 이유로 클라이언트가 GiveUpAfterSeconds에 도달하기 전에 매치 메이킹 프로세스를 취소하려는 경우 TicketIdCancelMatchmakingTicket을 호출합니다. 매치가 아직 발견되지 않은 경우 티켓은 매치 메이킹 프로세스에서 제외되고 상태는 Canceled로 변경됩니다.

PlayFabMultiplayerAPI.CancelMatchmakingTicket(
    new CancelMatchmakingTicketRequest
    {
        QueueName = "myqueue",
        TicketId = "<ticket ID goes here>",
    },
    this.OnTicketCanceled,
    this.OnMatchmakingError);

여러 사용자 티켓 매치 메이킹

게임이 플레이어 그룹이 매치 메이킹 대기 목록에 함께 들어가도록 허용하는 경우 매치 메이킹에 참가하기 위해 해야 할 일이 몇 가지 더 있습니다. 불필요한 통화를 피하기 위해 타이틀이 그룹 리더(작성자)를 지정하는 것이 좋습니다. 리더는 티켓을 생성하지만 그룹의 모든 멤버가 이에 동의해야 합니다.

매치 메이킹 티켓 만들기(여러 사용자)

그룹은 타이틀에 티켓 작성자를 선출해야 합니다. 작성자는 CreateMatchmakingTicket을 사용하여 매치 메이킹 티켓을 작성하고, 성공하면 TicketId를 반환합니다. 티켓을 생성하려면 Creator(사용자의 ID 및 특성), GiveUpAfterSeconds(서비스가 티켓 매치를 포기하기 전의 시간), MembersToMatchWith(다른 그룹 멤버의 ID) 및 매치를 찾는 QueueName을 지정해야 합니다.

Creator 필드는 QueueName과 일치하는 대기 목록 구성에 필요한 사용자 특성을 포함해야 합니다. GiveUpAfterSeconds 시간 값은 사용자가 스스로 포기하지 못하도록 하기 위해 120초로 설정됩니다.

그룹의 멤버가 매치 티켓 참가

일단 매치 티켓이 생성되면, 그룹의 다른 멤버들은 매치 메이킹 프로세스를 따라 이동하기 위해 매치 티켓에 참가해야 합니다. 지금 티켓은 WaitingForPlayers 상태에 있습니다. 모든 MembersToMatchWith가 티켓에 참가할 때까지 다른 티켓과 매치를 시작하지 않습니다.

멤버가 참가하도록 하려면 Creator가 타이틀을 통해 다른 멤버에게 TicketId를 공유해야 합니다. 각 멤버는 자신의 필수 특성을 제공하여 JoinMatchmakingTicket을 호출합니다. 모든 멤버가 티켓에 참가하면 티켓 상태가 WaitingForMatch가 됩니다.

PlayFabMultiplayerAPI.JoinMatchmakingTicket(
    new JoinMatchmakingTicketRequest
    {
        TicketId = "<ticket ID>",
        QueueName = "myqueue",
        Member = new MatchmakingPlayer
        {
            Entity = new EntityKey
            {
                Id = "<Entity ID goes here>",
                Type = "<Entity type goes here>",
            },
            Attributes = new MatchmakingPlayerAttributes
            {
                DataObject = new
                {
                    Skill = 19.3
                },
            },
        }
    },
    this.OnJoinMatchmakingTicket,
    this.OnMatchmakingError);

나머지 프로세스는 단일 사용자 티켓 매치 메이킹과 동일합니다.

플레이어를 함께 연결

플레이어가 매치되면 서버를 통해 또는 피어-투-피어 연결을 통해 서로 참가하도록 할 수 있습니다.

전용 서버를 사용하는 경우 매치 ID를 사용하여 자신이 있어야 하는 플레이어 그룹을 고유하게 식별할 수 있습니다. PlayFab의 멀티 플레이 서버를 사용하는 경우 GetMatch에 플레이어와 연결할 수 있는 서버와 포트가 제공됩니다.

자세한 정보는 PlayFab 멀티 플레이 서버와의 통합을 참조하십시오.

이 릴리스부터 피어-투-피어 연결은 현재 매치 메이킹에서 공식적으로 지원되지 않습니다. 피어-투-피어가 필요한 경우 Playfab 파티 또는 임시 해결 방법 사용을 고려하십시오. 이에 대한 추가 지원을 요청하려면 Microsoft에 문의하십시오.

결론

이 빠른 시작을 사용하면 이제 게임에서 성공적인 매치 메이킹 플로우를 얻을 수 있습니다. 또한 다음 사항을 고려해야 합니다.

  • 타이틀이 그룹 구성을 처리하는 방법.
  • 사용자가 매치를 기다리는 동안 표시되는 타이틀.
  • 실패 및 다시 시도를 처리하는 방법.