서버 백필 티켓 사용 - REST API
참고 항목
멀티 플레이어 SDK는 폴링의 필요성을 줄이고 매치 메이킹 환경을 개선하고 지연을 줄이는 실시간 알림 지원을 포함하므로 사용하는 것이 좋습니다. 서버 백필 티켓 사용 - 멀티 플레이어 SDK
서버에서 호스트되는 게임은 경우에 따라 추가 플레이어를 검색해야 합니다. 대부분 이 경우는 게임 진행 중 한명 이상의 플레이어가 연결을 끊을 때 발생합니다. 서버 백필 티켓을 사용하면 게임 서버에서 현재 플레이 중인 게임에 맞는 추가 플레이어를 검색할 수 있습니다.
서버 backfill 티켓은 여러 가지 면에서 일반 매치 메이킹 티켓과 다릅니다.
- 매치 중
- 백필 티켓은 서로 일치할 수 없습니다.
- backfill 티켓은 검색할 때 우선 순위가 부여됩니다. 이렇게 하면 플레이어 기반의 조각화가 줄어 듭니다.
- 계약
- 백필 티켓은 필드로
ServerDetails
만들 수 있습니다. 이렇게 하면 서버가 일치하는 플레이어를 어떻게 연결해야 하는지 나타내는 것을 허용합니다. - 백필 티켓은 팀 할당을 사용하여 만들 수 있습니다. 게임의 팀을 팀 정보와 함께 유지하도록 허용합니다.
- 백필 티켓은 필드로
- 대기 속성
- 백필 티켓은 멀티 플레이어 서버 할당을 트리거하지 않습니다.
- 백필 티켓은 플레이어가 이미 게임을 하고 있으며 대기 시간을 부정확하게 왜곡하기 때문에 큐 통계에 반영되지 않습니다.
- 소유권
- backfill 티켓은 게임 유저가 아니라 서버가 소유합니다. 사용자는 어떤 식으로든 백필 티켓을 보거나 상호 작용할 수 없습니다.
서버 backfill 티켓 생성하기
backfill 프로세스는 정규 매치 메이킹 티켓을 만드는 것과 비슷하지만 CreateServerMatchmakingTicket 호출과는 달리 CreateServerBackfillTicket 호출로 시작합니다. 게임 서버는 현재 호스팅 중인 게임에 대한 모든 멤버 정보를 제공해야 합니다. 이것은 이전 매치 결과에 반환된 속성을 저장함으로써 가장 효율적으로 수행됩니다. 이 속성들은 매치하기 를 ReturnMemberAttributes
플래그와 함께 호출함으로 검색할 수 있습니다. 또는 게임 서버에서 사용자에게 특성 정보를 쿼리할 수 있습니다.
게임 서버는 멤버 외에도 두 가지 추가 정보를 지정할 수 있습니다.
서버 세부 정보
이 구조는 매치하기 호출에서 반환된 구조와 동일하며, 서버가 연결에 필요한 모든 정보를 지정할 수 있습니다. 백필 티켓이 일치하면 해당 ServerDetails 구조가 결과 일치 시 GetMatch 를 호출하는 모든 플레이어에게 반환됩니다. 이 구조의 모든 필드는 선택 사항입니다. 타이틀은 클라이언트가 게임 서버에 연결할 수 있는 충분한 정보를 제공하기 위해 이러한 하위 집합만 필요할 수 있습니다.
참고 항목
필드의 유효성이 IPV4Address
검사되지 않으며 임의의 연결 문자열 정보를 클라이언트에 제공하는 데 사용할 수 있습니다.
{
"ServerDetails": {
"IPV4Address": "123.234.123.234",
"Ports": [
{
"Port": {
"Name": "portname",
"Num": 12345,
"Protocol": "UDP"
}
}
],
"Region": "EastUS"
}
}
팀 지정
백필 티켓이 팀과 함께 큐에 제출되는 경우 각 멤버는 TeamId로 지정되어 현재 팀임을 나타낼 수 있습니다. 이 멤버 자격은 Match가 반환될 때 유지됩니다. TeamId가 사용자에 대해 지정되지 않은 경우 모든 팀에 배치될 수 있습니다.
{
"Members": [
{
"TeamId": "red",
"Entity": {
"Id": "6570DE3537DC9DF6",
"Type": "title_player_account",
"TypeString": "title_player_account"
},
"Attributes": {
"DataObject": {
"Skill": 25
}
}
}
]
}
backfill 티켓과 상호 작용하기
일단 생성되면, backfill 티켓은 규칙 기준을 충족시키는 정규 매치 메이킹 티켓을 찾기 시작합니다. 백필 티켓의 흐름은 유사한 API를 제외하고 일반 매치 메이킹 티켓의 작동 방식과 동일합니다. 게임 서버는 GetServerBackfillTicket호출을 통해 티켓 상태를 확인할 수 있습니다. GetServerBackfillTicket호출을 통해 티켓을 취소할 수도 있습니다.
참고 항목
클라이언트는 backfill 티켓을 취소할 수 없습니다. 클라이언트가 4v4 매치에 있었고 상대 팀의 플레이어가 떨어졌다고 가정합시다. 클라이언트는 백필 티켓을 지속적으로 취소하여 이점을 유지할 수 있습니다. 그러므로 이를 방지하기 위해 게임 서버만 backfill 티켓을 취소할 수 있습니다.
맴버십 제한 및 분실된 backfill 티켓 복구
정규 매치 메이킹 티켓과 마찬가지로 항상 유저는 대기 목록당 하나의 backfill 티켓에만 있을 수 있습니다. 이 제한은 클라이언트가 제어하는 일반 티켓과 별도로 추적됩니다.
게임 서버가 backfill 티켓을 만든 다음 충돌이 발생하는 경우 손실된 backfill 티켓의 사용자는 멤버십 제한으로 인해 다른 backfill 티켓에 제출할 수 없습니다. 게임 서버는 본문에 미해결 백필 티켓 errorDetails
이 있는 사용자 목록과 함께 오류를 MatchmakingTicketMembershipLimitExceeded
수신하여 이를 검색합니다.
{
"code": 400,
"status": "BadRequest",
"error": "MatchmakingTicketMembershipLimitExceeded",
"errorCode": 2055,
"errorMessage": "User is a member of too many backfill tickets.",
"errorDetails": {
"UsersExceedingMembershipLimit": [
"title_player_account!562D72A5B184F612"
]
}
}
게임 서버는 유저가 있는 모든 backfill 티켓을 제거하는 CancelAllServerBackfillTicketsForPlayer을 호출하여 이 상황에서 유저를 복구할 수 있습니다. ListServerBackfillTicketsForPlayer 또한 플레이어가 어떤 backfill 티켓을 발견했는지를 알 수 있는 방법으로 제공됩니다.
지역 선택 규칙과의 상호 작용
지역 선택 규칙은 일반적으로 티켓이 해당 속성에 대한 대기 시간 측정 배열을 지정하도록 요구합니다. 그러나 backfill 티켓은 특정 데이터 센터에서 이미 진행 중인 게임을 나타냅니다. 생성된 요청은 대기 시간 측정 배열 대신 ServerDetails 구조에서 지역을 지정해야 합니다. backfill 티켓과 일치하는 티켓의 경우 backfill 티켓에서 지정한 영역에 대해 허용되는 핑 (ping) 시간을 가져야 합니다.
팀 티켓 크기 유사성 규칙과의 상호 작용
팀 티켓 크기 유사성 규칙은 많은 수의 플레이어 그룹이 다른 대규모 그룹의 플레이어와 매치하게 합니다. 그러나 백필 티켓에는 어떤 플레이어가 그룹으로 게임에 참가했는지에 대한 정보가 포함되어 있지 않습니다. 따라서 backfill 티켓을 매칭할 때는 티켓 크기 유사성 규칙이 무시됩니다.