> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 서버 백필 티켓 사용 - REST API

> REST API를 통해 PlayFab 매치메이킹 백필 티켓을 만들고 관리하여 이미 진행 중인 매치에 플레이어를 추가하고 게임 서버를 가득 채우세요.

<Note>
  Multiplayer SDK는 폴링 필요성을 줄이는 실시간 메시지 지원을 포함하고 있어 매치메이킹 환경을 개선하고 지연 시간을 줄여줍니다. Multiplayer SDK 사용을 강력히 권장합니다. [서버 백필 티켓 사용 - Multiplayer SDK](/services/playfab/multiplayer/matchmaking/backfill-tickets-multiplayer-sdk)
</Note>

서버에서 호스트되는 게임에서는 때때로 추가 플레이어를 검색해야 합니다. 이 상황은 대부분 게임 진행 중에 하나 이상의 플레이어가 연결을 끊었을 때 발생합니다. 서버 백필 티켓을 사용하면 게임 서버가 현재 진행 중인 게임에 맞는 추가 플레이어를 검색할 수 있습니다.

서버 백필 티켓은 다음과 같은 여러 방식에서 일반 매치메이킹 티켓과 다릅니다.

1. 매칭
   * 백필 티켓끼리는 서로 매칭될 수 없습니다.
   * 검색 중에 백필 티켓에 우선순위가 부여됩니다. 이렇게 하면 플레이어 기반의 분산화가 감소합니다.
2. 계약
   * 백필 티켓은 `ServerDetails` 필드로 만들 수 있습니다. 이를 통해 서버는 매칭된 플레이어가 서버에 연결하는 방식을 나타낼 수 있습니다.
   * 백필 티켓은 팀 할당으로 만들 수 있습니다. 이를 통해 팀이 있는 게임에서 팀 정보를 유지 관리할 수 있습니다.
3. 큐 속성
   * 백필 티켓은 [Multiplayer Server 할당](/services/playfab/multiplayer/matchmaking/multiplayer-servers)을 트리거하지 않습니다.
   * 백필 티켓의 플레이어는 이미 게임을 플레이하고 있어 대기 시간을 부정확하게 왜곡하므로 [큐 통계](/services/playfab/multiplayer/matchmaking/display-statistics)에 반영되지 않습니다.
4. 소유권
   * 백필 티켓은 사용자가 아니라 게임 서버가 소유합니다. 사용자는 어떤 방식으로든 백필 티켓을 보거나 상호 작용할 수 없습니다.

## 서버 백필 티켓 만들기

백필 프로세스는 일반 매치메이킹 티켓 만들기와 비슷하게 시작되지만, [CreateServerMatchmakingTicket](xref:titleid.playfabapi.com.multiplayer.matchmaking.createservermatchmakingticket) 호출이 아니라 [CreateServerBackfillTicket](https://learn.microsoft.com/en-us/rest/api/playfab/multiplayer/matchmaking/create-server-backfill-ticket) 호출을 사용합니다. 게임 서버는 현재 호스트하고 있는 게임의 모든 멤버 정보를 제공해야 합니다. 이 작업은 이전 매치 결과에서 반환된 특성을 저장하여 가장 효율적으로 수행됩니다. 이러한 특성은 `ReturnMemberAttributes` 플래그를 사용하여 [GetMatch](xref:titleid.playfabapi.com.multiplayer.matchmaking.getmatch)를 호출하여 검색할 수 있습니다. 또는 게임 서버는 사용자에게 특성 정보를 쿼리할 수 있습니다.

멤버 외에도 게임 서버는 두 가지 추가 정보를 지정할 수 있습니다.

### ServerDetails

이 구조체는 [GetMatch](xref:titleid.playfabapi.com.multiplayer.matchmaking.getmatch) 호출에서 반환된 구조체와 동일하며, 서버가 연결에 필요한 모든 정보를 지정할 수 있게 합니다. 백필 티켓이 매칭되면 결과 매치에서 [GetMatch](xref:titleid.playfabapi.com.multiplayer.matchmaking.getmatch)를 호출하는 모든 플레이어에게 해당 [ServerDetails](xref:titleid.playfabapi.com.multiplayer.matchmaking.getmatch#serverdetails) 구조체가 반환됩니다. 이 구조체의 모든 필드는 선택 사항입니다. 타이틀은 클라이언트가 게임 서버에 연결하는 데 필요한 정보를 제공하는 데 이 중 일부만 필요할 수도 있습니다.

<Note>
  `IPV4Address` 필드는 유효성이 검증되지 않으며 클라이언트에 임의의 연결 문자열 정보를 제공하는 데 사용될 수 있습니다.
</Note>

```json theme={null}
{
  "ServerDetails": {
    "IPV4Address": "123.234.123.234",
    "Ports": [
      {
        "Port": {
          "Name": "portname",
          "Num": 12345,
          "Protocol": "UDP"
        }
      }
    ],
    "Region": "EastUS"
  }
}
```

### 팀 할당

백필 티켓이 팀이 있는 큐로 제출되는 경우 각 멤버는 현재 소속된 팀을 나타내는 TeamId도 지정할 수 있습니다. 이 멤버십은 매치가 반환될 때 보존됩니다. 사용자에 대해 TeamId가 지정되지 않은 경우 어떤 팀에도 배치될 수 있습니다.

```json theme={null}
{
  "Members": [
    {
      "TeamId": "red",
      "Entity": {
        "Id": "6570DE3537DC9DF6",
        "Type": "title_player_account",
        "TypeString": "title_player_account"
      },
      "Attributes": {
        "DataObject": {
          "Skill": 25
        }
      }
    }
  ]
}
```

## 백필 티켓과 상호 작용

만들어진 후 백필 티켓은 규칙 조건을 충족하는 일반 매치메이킹 티켓 검색을 시작합니다. 백필 티켓의 흐름은 유사한 API를 사용한다는 점을 제외하면 일반 매치메이킹 티켓 작동 방식과 동일합니다. 게임 서버는 [GetServerBackfillTicket](https://learn.microsoft.com/en-us/rest/api/playfab/multiplayer/matchmaking/create-server-backfill-ticket)을 호출하여 티켓 상태를 확인할 수 있습니다. 또한 [CancelServerBackfillTicket](https://learn.microsoft.com/en-us/rest/api/playfab/multiplayer/matchmaking/cancel-server-backfill-ticket?view=playfab-rest)을 호출하여 티켓을 취소할 수도 있습니다.

<Note>
  클라이언트는 자신이 포함된 백필 티켓을 취소할 수 없습니다. 클라이언트가 4대4 매치에 참여하던 중 상대 팀 플레이어가 나갔다고 가정해 봅시다. 이 클라이언트는 자신이 포함된 모든 백필 티켓을 지속적으로 취소하여 유리한 상황을 유지할 수 있습니다. 이를 방지하기 위해 백필 티켓은 게임 서버만 취소할 수 있습니다.
</Note>

## 멤버십 한도 및 손실된 백필 티켓에서 복구

일반 매치메이킹 티켓과 유사하게 사용자는 언제든지 큐당 하나의 백필 티켓에만 포함될 수 있습니다. 이 한도는 클라이언트가 제어하는 일반 티켓과 별도로 추적됩니다.

게임 서버가 백필 티켓을 만든 후 크래시되는 경우, 손실된 백필 티켓에 있는 사용자는 멤버십 한도로 인해 다른 백필 티켓에 제출될 수 없습니다. 게임 서버는 `MatchmakingTicketMembershipLimitExceeded` 오류와 함께 어떤 사용자가 처리되지 않은 백필 티켓을 가지고 있는지를 나타내는 사용자 목록을 `errorDetails` 본문에서 수신하여 이를 발견합니다.

```json theme={null}
{
    "code": 400,
    "status": "BadRequest",
    "error": "MatchmakingTicketMembershipLimitExceeded",
    "errorCode": 2055,
    "errorMessage": "User is a member of too many backfill tickets.",
    "errorDetails": {
        "UsersExceedingMembershipLimit": [
            "title_player_account!562D72A5B184F612"
        ]
    }
}
```

게임 서버는 [CancelAllServerBackfillTicketsForPlayer](https://learn.microsoft.com/en-us/rest/api/playfab/multiplayer/matchmaking/cancel-all-server-backfill-tickets-for-player)를 호출하여 사용자가 포함된 모든 백필 티켓을 제거함으로써 이 상황에서 사용자를 복구할 수 있습니다. 또한 [ListServerBackfillTicketsForPlayer](https://learn.microsoft.com/en-us/rest/api/playfab/multiplayer/matchmaking/list-server-backfill-tickets-for-player)가 플레이어가 포함될 수 있는 백필 티켓을 검색하는 방법으로 제공됩니다.

## 지역 선택 규칙과의 상호 작용

지역 선택 규칙은 일반적으로 티켓이 그 특성으로 대기 시간 측정값 배열을 지정해야 합니다. 그러나 백필 티켓은 특정 데이터 센터에서 이미 진행 중인 게임을 나타냅니다. 대기 시간 측정값 배열 대신, 만들어진 요청은 [ServerDetails](xref:titleid.playfabapi.com.multiplayer.matchmaking.getmatch#serverdetails) 구조체에서 Region을 지정해야 합니다. 티켓이 백필 티켓과 매칭되려면 백필 티켓에서 지정한 지역에 대한 허용 가능한 핑 시간이 있어야 합니다.

## 팀 티켓 크기 유사성 규칙과의 상호 작용

팀 티켓 크기 유사성 규칙은 대규모 플레이어 그룹이 다른 대규모 플레이어 그룹과 매칭되도록 적용합니다. 그러나 백필 티켓에는 어떤 플레이어가 그룹으로 게임에 참여했는지에 대한 정보가 포함되지 않습니다. 따라서 백필 티켓을 매칭할 때 티켓 크기 유사성 규칙은 무시됩니다.


## Related topics

- [서버 백필 티켓 사용 - Multiplayer SDK](/ko/services/playfab/multiplayer/matchmaking/backfill-tickets-multiplayer-sdk.md)
- [로비와 매치메이킹을 함께 사용](/ko/services/playfab/multiplayer/lobby/lobby-and-matchmaking.md)
- [PFMultiplayerCreateServerBackfillTicket](/ko/services/playfab/multiplayer/lobby/playfabmultiplayerreference-cpp/pfmatchmaking/functions/pfmultiplayercreateserverbackfillticket.md)
- [PFMatchmakingServerBackfillTicketConfiguration](/ko/services/playfab/multiplayer/lobby/playfabmultiplayerreference-cpp/pfmatchmaking/structs/pfmatchmakingserverbackfillticketconfiguration.md)
- [CreateServerBackfillTicket](/ko/services/playfab/multiplayer/lobby/unity-multiplayer-api-reference/PlayFab.Multiplayer/PlayFabMultiplayer.PlayFabMultiplayerServer/CreateServerBackfillTicket.md)
