다음을 통해 공유


PlayFab 멀티 플레이 서버와 통합

매치 메이킹에는 결과 일치 항목의 게임 서버를 자동으로 만들 수 있는 옵션이 있습니다. 할당된 서버는 큐의 구성에 구성된 빌드를 실행합니다. 시작 시 서버는 일치 항목의 멤버에 초기 플레이어 목록으로 전달됩니다.

매치 메이킹 큐는 단일 멀티 플레이어 서버 빌드 또는 빌드 별칭에 연결됩니다.

매치 메이킹과 서버의 직접 통합을 사용하기 위한 요구 사항

매치 메이킹에서 멀티 플레이어 서버를 할당하려면 먼저 빌드를 구성하고 배포해야 합니다. 선택적으로 빌드 별칭을 만들고 사용할 수도 있습니다. 빌드 별칭은 타이틀 사용에 더 많은 유연성을 허용하므로 선호됩니다. 여기에 제공된 링크를 따라 멀티 플레이어 서버 빌드멀티 플레이어 서버 빌드 별칭에 대한 자세한 내용을 확인하세요.

또한 매치 메이킹에서는 빌드를 위한 최적의 지역에 일치 항목을 할당할 수 있도록 큐에 지역 선택 규칙을 추가해야 합니다. 지역 선택 규칙에 전달되는 대기 시간 측정값은 빌드가 활성화된 지역과 일치해야 합니다. 지역 선택 규칙에 특성을 전달하는 방법에 관한 자세한 내용은 지역 선택 규칙을 참조하세요.

큐의 서버 할당 활성화

큐에 서버 할당을 사용하도록 설정하려면 큐 구성 페이지에서 서버 할당 사용 확인란을 활성화해야 합니다. 사용하도록 설정했으면 빌드 별칭 또는 빌드 ID를 선택합니다. 큐에서 사용할 올바른 값을 드롭다운에서 선택합니다. 이 기능을 사용하도록 설정하면 매치 메이킹이 큐 내에서 생성된 모든 일치 항목에 대해 서버를 할당하려고 합니다.

다음 예는 빌드 ID를 사용하여 멀티플레이어 서버 통합을 사용하는 큐의 구성이 어떻게 보여야 하는지 보여줍니다.

"MatchmakingQueue": {
    "Name": "ServerEnabledQueue",
    "MinMatchSize": 2,
    "MaxMatchSize": 2,
    "ServerAllocationEnabled": true,
    "BuildId": "88b3e315-829c-4b6d-9872-74f427ad5331",
	"RegionSelectionRule": {
		"MaxLatency": 1000,
		"Path": "Latencies",
		"Weight": 1.0,
		"Name": "RegionSelectionRule"
	}
}

다음은 빌드 별칭이 사용된 동일한 예입니다.

"MatchmakingQueue": {
    "Name": "ServerEnabledQueue",
    "MinMatchSize": 2,
    "MaxMatchSize": 2,
    "ServerAllocationEnabled": true,
    "BuildAliasParams": {
        "AliasId": "d14e2ac7-ea51-47aa-a7ba-cc427ab74f9s"
    },
	"RegionSelectionRule": {
		"MaxLatency": 1000,
		"Path": "Latencies",
		"Weight": 1.0,
		"Name": "RegionSelectionRule"
	}
}

매치 메이킹의 호출 흐름은 서버 할당을 사용하도록 설정한 경우와 동일합니다. 매치 메이킹이 일치 항목에 서버를 할당하면 GetMatch를 호출하여 Match 개체 자체에서 결과 서버 정보를 읽을 수 있습니다.

서버 할당을 사용하도록 설정한 큐의 GetMatch 호출에 대한 샘플 응답이 아래에 나와 있습니다.

{
    "MatchId": "7c36330d-46b5-443f-8d8f-10390bce09d5",
    "Members": [{
        "TeamId": "",
        "Entity": {
            "Id": "67282A13A1A58910",
            "Type": "title_player_account",
            "TypeString": "title_player_account"
        },
        "Attributes": {
            "DataObject": null,
            "EscapedDataObject": "{\"StringEqualityRulePath\":\"0bc42969-76b1-4dcb-871d-d6e19cee741b\"}"
        }
    },
    {
        "TeamId": "",
        "Entity": {
            "Id": "6DB2B17FD21CC230",
            "Type": "title_player_account",
            "TypeString": "title_player_account"
        },
        "Attributes": {
            "DataObject": null,
            "EscapedDataObject": "{\"StringEqualityRulePath\":\"0bc42969-76b1-4dcb-871d-d6e19cee741b\"}"
        }
    }],
    "RegionPreferences": ["WestUs", " EastUs"],
    "ServerDetails": {
        "IPV4Address": "40.76.31.170",
        "Ports": [{
            "Name": "game_port",
            "Num": 30003
        }]
    }
}

클라이언트는 응답의 서버 세부 정보 섹션에 있는 IP 및 포트를 사용하여 서버에 연결할 수 있습니다. 클라이언트를 멀티 플레이 서버에 연결하는 방법에 관한 자세한 내용은 클라이언트를 서버에 연결을 참조하세요.

참고 항목

빌드 지역의 용량이 부족하면 매치 메이킹이 해당 지역에서 큐에 일치 항목을 할당할 수 없습니다. 매치 메이킹은 티켓이 만료될 때까지 계속 할당을 다시 시도합니다. 멀티 플레이어 용량을 늘리려면 향상된 코어 제한 및 추가 Azure 지역 액세스를 참조하세요.

게임 서버에 전달되는 정보

매치 메이킹이 서버에 전달할 정보 목록은 다음과 같습니다.

  • SessionId - 서버의 SessionId은(는) 일치 항목의 MatchId와 같습니다.
  • InitialPlayers - 이 값은 일치 항목의 멤버 목록으로 설정됩니다. GSDK를 사용하여 게임에서 플레이어 목록을 읽을 수 있습니다.
  • PreferredRegions - 이 필드는 일치 항목의 RegionPreferences 필드로 설정됩니다. 게임 서버 서비스는 이 목록에서 서버에 적합한 지역을 선택합니다.

매치 메이킹은 티켓 특성을 게임 서버에 전달하지 않습니다. 게임에서 서버의 티켓 특성에 액세스해야 하는 경우 ReturnMemberAttributes 헤더를 true로 설정하고 GetMatch를 호출하여 액세스할 수 있습니다.

참고 항목

최근 서버 할당 중에 큐 이름을 전달할 수 있도록 했습니다. 이 기능은 미리 보기로 제공되며 여기에서 자세히 확인할 수 있습니다.