로비와 매치 메이킹을 함께 사용
멀티 플레이어 게임을 설계할 때 사람들이 함께 플레이할 그룹을 형성하는 데 도움이 되도록 매치 메이킹과 로비를 함께 사용하는 경우가 많습니다.
PlayFab 로비 및 PlayFab 매치 메이킹은 다양한 멀티 플레이어 시나리오를 구현하는 데 도움이 됩니다.
이 문서에서는 이 두 서비스 간의 관계를 설명하고 아래에 지정된 게임 시나리오를 구현하기 위해 함께 사용할 수 있는 방법을 보여줍니다.
로비와 매치 메이킹의 관계 이해
로비와 매치 메이킹은 원활하게 함께 작동하여 타이틀에 대한 응집력 있는 멀티 플레이어 매치 메이킹 환경을 생성합니다.
- 매치 메이킹은 게임 세션에 참여하기를 원하는 일련의 플레이어를 함께 모읍니다.
- 매치 메이킹에서 일련의 플레이어를 식별한 후 로비는 함께 게임 세션 참여를 조정할 수 있는 커뮤니케이션 매체를 제공합니다.
- 로비에 대한 일반적인 시나리오에는 게임 서버 연결 정보 공유, P2P 게임을 위한 클라이언트 IP 공유 및 플레이어 구성 공유가 포함됩니다.
정돈된 로비
타이틀은 "배열된 로비"를 사용하여 매치 메이킹을 통해 그룹화된 플레이어를 위한 로비를 쉽게 생성할 수 있습니다.
매치 메이킹 티켓이 플레이어 그룹과 성공적으로 매치되면 매치 메이킹 티켓에 lobbyArrangementString이 포함됩니다. 그런 다음 각 플레이어는 배열 문자열을 PFMultiplayerJoinArrangedLobby에 전달하여 동일한 로비에 참여할 수 있습니다.
예제 시나리오
플레이어는 다른 사람들과 플레이하기를 원합니다. 플레이어는 멀티 플레이어 게임을 시작하고, 친구를 초대하고, 다른 사람이 참여할 때까지 기다립니다.
디자인 사양
- 이 게임은 모든 사람이 참여할 수 있도록 열려 있습니다.
- 초기 플레이어 세트는 매치 메이킹을 통해 채워집니다.
- 로비 주인은 친구를 초대할 수 있습니다.
- 필요한 플레이어 수가 충족되면 로비에 있는 모든 플레이어에게 게임을 시작할 준비가 되었는지 묻는 메시지가 표시됩니다. 응답 시간은 1분입니다. 모든 플레이어가 게임을 시작할 준비가 되었음을 확인한 후 게임이 시작됩니다.
- 로비에 있는 플레이어가 플레이 준비 상태를 확인하지 않은 경우 로비 소유자는 비활성 플레이어에서 제거하고 매치 메이킹을 사용하여 새 플레이어를 찾아 신속하게 교체할 수 있습니다.
- 게임 도중 플레이어가 예기치 않게 연결이 끊어지면 타이틀은 서버 채우기를 사용한 매치 메이킹을 통해 드롭된 플레이어를 대체할 새로운 플레이어를 찾아야 합니다.
- 게임이 끝나면 모든 플레이어는 로비로 돌아갑니다. 플레이어는 팀 도전 과제를 동등하게 수여합니다. 그들은 함께 다른 게임을 시작하기 위해 머물거나 로비를 떠날 수 있는 옵션이 있습니다.
구현
이 섹션에서는 매치 메이킹 및 로비를 사용하여 위의 디자인 사양을 구현하는 방법에 대해 설명합니다.
매치 메이킹 로비 만들기
매치 메이킹 플레이어 그룹을 위한 공개 로비를 만듭니다.
- 각 플레이어는 지정된 매치 메이킹 속성으로 매치 메이킹 티켓을 생성합니다.
- 자세한 내용은 티켓 속성 지정을 참조하세요.
- 생성된 모든 티켓은 서로 매칭될 매치 메이킹 큐에 추가됩니다.
- 티켓은 규칙에 따라 매칭됩니다.
- 규칙은 매치 메이킹 큐 구성에서 정의할 수 있습니다.
- 자세한 내용은 매치 메이킹 큐 구성을 참조하세요.
- 매치 메이킹 후 각 플레이어는 매치 메이킹 티켓의 lobbyArrangementString을 통해 매치 메이킹 로비에 참여합니다.
- 배치된 로비에 참여할 때 로비의 accessPolicy를 Public으로 지정하여 로비를 열 수 있습니다.
- 자세한 내용은 정돈된 로비를 참조하세요.
- 배치된 로비에 가장 먼저 입장한 플레이어가 로비의 주인이 됩니다.
- 로비 속성을 사용하여 게임 세션에서 사용할 게임 맵을 지정할 수 있습니다.
- 자세한 내용은 로비 속성을 참조하세요.
- 검색 속성을 사용하여 플레이어가 타이틀의 모든 활성 로비에서 이 로비 및 게임 세션을 찾을 수 있도록 합니다.
- 자세한 내용은 검색 속성을 참조하세요.
친구에게 초대 보내기
로비 소유자가 친구를 선택하고 초대를 보낼 수 있도록 허용합니다.
- 로비 주인의 친구 목록 가져오기
- 로비 주인이 초대할 친구를 선택할 수 있도록 게임 UI 표시
- 선택한 친구에게 게임 내 초대를 보냅니다.
- 자세한 내용은 로비 초대를 참조하세요.
사람들이 게임을 찾고 참여하도록 허용
다른 플레이어가 로비를 찾을 수 있도록 로비의 검색 속성을 설정합니다.
- 게임 UI에 모든 로비를 표시합니다. 타이틀은 또한 플레이어의 검색어를 수락하는 방법을 제공해야 합니다.
- 플레이어의 검색 매개 변수를 사용하여 PFMultiplayerFindLobbies를 사용하여 기준과 일치하는 로비 목록을 반환합니다.
- 플레이어가 게임 참여를 선택한 후 PFMultiplayerJoinLobby를 사용하여 플레이어를 게임에 추가합니다.
플레이어에게 게임 시작 알림
로비에 있는 모든 플레이어에게 게임을 시작할 준비가 되었음을 알립니다.
- 필요한 수의 플레이어가 로비에 있으면 게임 UI를 표시하여 플레이어가 플레이를 시작할 준비가 되었는지 확인할 수 있습니다.
- 로비 소유자가 이러한 확인 응답을 볼 수 있도록 허용하세요.
비활성 플레이어 제거 및 교체
로비 소유자는 비활성 또는 연결 해제된 플레이어를 제거하고 매치 메이킹을 시작하여 나머지 자리를 채울 수 있습니다.
- 플레이어가 연결 해제되었거나 지정된 시간(1분) 내에 응답하지 않으면 PFLobbyForceRemoveMember를 사용하여 플레이어를 제거합니다.
- 로비 소유자는 CreateServerBackfillTicket을 사용하여 매치 메이킹 티켓을 생성합니다. 이 API를 사용하여 생성된 티켓은 검색 시 우선 순위가 부여됩니다. 이는 게임 플레이 중단을 최소화하기 위한 것입니다. 자세한 내용은 서버 채우기 티켓 사용을 참조하세요.
- 채우기 로비에 참가한 후 게임의 로비 소유자는 원래 로비의 연결 문자열을 새 채우기 플레이어와 공유할 수 있으며 원래 로비에 참가할 수 있습니다.
- 적절한 경우 게임 시작 시간을 연장하세요.
완료된 게임 처리
게임이 끝나면 모든 플레이어가 로비 화면으로 돌아가 게임 세션을 완료합니다.
- 로비는 일시적이므로 유지되어야 하는 로비의 모든 데이터는 이 시점에서 각 플레이어가 유지해야 합니다.
- 예를 들어, 일부 게임 시나리오는 멤버 속성에 저장된 데이터를 처리하고 해당 데이터를 플레이어 도전 과제로 전환함으로써 이점을 얻을 수 있습니다.
- 같은 그룹으로 계속 플레이하고 싶은 플레이어는 로비에 남게 됩니다.
- 같은 그룹과의 플레이를 중단하려는 플레이어는 PFLobbyLeave로 로비를 종료하고 새 매치 메이킹 그룹으로 프로세스를 다시 시작합니다.