PlayFab Multiplayer SDK는 PlayFab Lobbies용 API도 제공합니다. * C++ API에 대한 자세한 내용은 Lobby SDK quickstart를 참조하세요. * Unity API에 대한 자세한 내용은 Quickstart for Unity를 참조하세요. * Unreal API에 대한 자세한 내용은 Quickstart for Unreal을 참조하세요.
사전 요구 사항
PlayFab Matchmaking을 사용하려면 PlayFab 계정이 필요합니다. 계정 생성 방법은 Quickstart: Game Manager를 참조하세요.Game Manager에서 매치메이킹 큐 구성
이 라이브러리는 Game Manager에서 구성된 큐에 대한 티켓을 만드는 사용자들을 서로 매칭합니다. 큐 설정 방법에 대한 자세한 내용은 Configuring matchmaking queues를 참조하세요.PlayFab Multiplayer SDK 다운로드 및 설정
플랫폼용 C/C++ SDK를 다운로드하고 공급자 헤더와 라이브러리 파일을 빌드에 통합하세요.이 빠른 시작은 C/C++ SDK 사용에 초점을 맞춥니다. Unity 및 Unreal 인터페이스에 대해서는 다음 문서를 참조하세요. * Quickstart for Unity * Quickstart for Unreal
PlayFab 엔터티 로그인
PlayFab Lobby SDK를 사용하려면 PlayFab 엔터티 키와 엔터티 토큰을 사용하여 클라이언트를 인증해야 합니다. LoginWithCustomId REST API로 로그인하여 PlayFab 엔터티 키와 토큰 쌍을 획득하세요. 이 API는 PlayFab REST SDK를 통한 C/C++ 프로젝션으로도 사용할 수 있습니다.LoginWithCustomId는 PlayFab 기능을 빠르게 시작할 수 있는 방법이지만 제품 출시 시 사용할 로그인 메커니즘으로 설계된 것은 아닙니다. 로그인 가이드는 Login basics and best practices를 참조하세요.
PlayFab Multiplayer SDK 초기화
다음 기본 단계에 따라 PlayFab Multiplayer SDK를 초기화합니다.- PFMultiplayerInitialize를 호출하여 SDK를 초기화합니다.
- PFMultiplayerSetEntityToken을 호출하여 라이브러리가 플레이어를 대신하여 사용할 엔터티 키와 토큰을 설정합니다.
매치메이킹 티켓 생성
PFMultiplayerCreateMatchmakingTicket을 사용하여 매치메이킹 티켓을 만들며, 여기에서 매치에 포함되어야 하는 모든 로컬 사용자와 이러한 사용자에 연결하려는 모든 특성을 지정합니다. 이 함수는 또한 PFMatchmakingTicketConfiguration을 받아 티켓이 대상으로 하는 큐, 티켓의 타임아웃, 이 티켓과 매치되기를 원하는 원격 사용자를 지정합니다.단일 로컬 사용자를 사용한 매치메이킹
PFMultiplayerCreateMatchmakingTicket 호출을 통해 단일 로컬 사용자에 대해 매치메이킹을 시작할 수 있습니다.원격 사용자 그룹을 사용한 매치메이킹
원격 사용자와 함께 그룹 매치메이킹을 시작할 때는 한 클라이언트를 리더로 생각하는 것이 유용합니다. 리더가 PFMultiplayerCreateMatchmakingTicket을 사용하여 티켓을 만들고 configuration 매개 변수를 통해 그룹의 다른 사용자를 지정하도록 합니다. 티켓이 생성된 후에는 GetTicketId를 호출하여 티켓 ID를 얻습니다. 이 ID를 네트워킹 메시나 공유 PlayFab Lobby 같은 외부 메커니즘을 통해 다른 각 사용자에게 보내고, 각 클라이언트가 티켓 ID로 PFMultiplayerJoinMatchmakingTicketFromId를 호출하여 매치메이킹 티켓에 참가하도록 합니다. 지정된 플레이어들이 참가하기를 기다리는 동안 티켓 상태는 PFMatchmakingTicketStatus::WaitingForPlayers이고, 모든 플레이어가 티켓에 참가한 이후에는 PFMatchmakingTicketStatus::WaitingForMatch로 변경됩니다.여러 로컬 사용자를 사용한 매치메이킹
여러 로컬 사용자와 매치메이킹할 때는 PFMultiplayerCreateMatchmakingTicket 또는 PFMultiplayerJoinMatchmakingTicketFromId 함수에 하나의 PFEntityKey를 전달하는 대신 키 목록을 전달해야 합니다. 마찬가지로 각 사용자의 특성 목록도 전달해야 합니다. 각 목록 항목 위치는 서로 대응해야 합니다. 즉, attributes 목록의 첫 번째 항목은 PFEntityKey 목록의 첫 번째 플레이어에 대한 특성이어야 합니다.매치메이킹 티켓 상태 확인
PFMultiplayerStartProcessingMatchmakingStateChanges를 호출하여 상태 변경을 받고, 해당 상태 변경 처리를 완료한 후 PFMultiplayerFinishProcessingMatchmakingStateChanges를 호출하여 티켓 업데이트를 확인해야 합니다. SDK는 티켓의 상태가 변경될 때마다 TicketStatusChanged 상태 변경을, 매치메이킹이 완료되었을 때는 TicketCompleted 상태 변경을 반환합니다.Matchmaking 클라이언트 SDK 사용 예시
매치 가져오기
PFMatchmakingStateChangeType::TicketCompleted 상태 변경을 받은 후 PFMatchmakingTicketGetMatch를 호출하여 매치의 세부 정보를 가져옵니다. 이러한 세부 정보에는 매치 ID, 함께 매치된 사용자, 매치의 선호 지역, 매치와 연결된 lobby에 대한 arrangement 문자열이 포함됩니다. PFMatchmakingMatchDetails 구조체에서 필요한 정보를 검색한 후에는 PFMultiplayerDestroyMatchmakingTicket으로 티켓을 삭제해야 합니다.Matchmaking 클라이언트 SDK 사용 예시
매치메이킹 티켓 취소
어떤 이유로든 클라이언트가PFMatchmakingTicketConfiguration에 설정된 타임아웃 이전에 매치메이킹 프로세스를 취소하려는 경우, 티켓 핸들과 함께 PFMatchmakingTicketCancel을 호출하세요.
이 API를 호출한다고 해서 티켓이 반드시 취소된다는 보장은 없습니다. 취소가 처리되기 전에 티켓이 완료될 수도 있고, 네트워킹 또는 서비스 오류로 인해 취소 요청이 실패할 수도 있습니다. 이후 단계로 넘어가기 전에 티켓 취소가 완료되었는지 확인하려면 매치메이킹 상태 변경을 계속 처리하여 티켓 결과를 얻을 수 있습니다. 그렇지 않으면 즉시 PFMultiplayerDestroyMatchmakingTicket을 호출할 수 있습니다.
Matchmaking 클라이언트 SDK 사용 예시
(선택 사항) 플레이어를 Lobby에 함께 연결
플레이어들이 매치된 후에는 lobby에서 함께 참가할 수 있습니다. 매치된 티켓의 PFMatchmakingMatchDetails에는 사용자를 동일한 Lobby에 참가시키는 데 사용할 수 있는 lobbyArrangementString 필드가 포함되어 있습니다. Lobby와 Matchmaking이 함께 상호 작용하는 방식에 대한 자세한 내용은 Use lobby and matchmaking together를 참조하세요. PlayFab Lobbies에 대한 자세한 내용은 PlayFab Lobby Overview를 참조하세요.Matchmaking 클라이언트 SDK 사용 예시
결론
이 빠른 시작을 사용하여 이제 게임에 성공적인 매치메이킹 흐름을 갖추었을 것입니다. 또한 다음 사항을 고려해야 합니다.- 타이틀이 그룹 형성을 처리하는 방식.
- 사용자가 매치를 기다리는 동안 타이틀에 표시되는 내용.
- 실패 및 재시도를 처리하는 방식.
