티켓으로 특성 지정하기
규칙은 플레이어가 지정한 특성에 따라 일치하는 티켓을 결정합니다. 이러한 특성은 다음 두 가지 방법 중 하나로 지정할 수 있습니다.
- 티켓 만들기 요청 내에서
- 플레이어의 엔터티에서
이 자습서는 이러한 특성을 지정하는 방법을 설명합니다.
티켓 만들기 요청 내에서 지정
특성 유형 “User”로 구성된 규칙의 경우 특성은 특성 DataObject
내부의 플레이어 엔터티와 함께 CreateMatchmakingTicket
요청에 지정됩니다.
POST https://{{TitleId}}.playfabapi.com/Match/CreateMatchmakingTicket
{
"Creator": {
"Entity": {
"Id": "A8140AB9109712B",
"Type": "title_player_account",
"TypeString": "title_player_account"
},
"Attributes": {
"DataObject": {
"mu": 16.0,
"sigma": 1.8,
"nestExample": {
"exp": 1500
}
}
}
},
"MembersToMatchWith": [],
"GiveUpAfterSeconds": 2,
"QueueName": "SkillRuleQueue"
}
다음은 DifferenceRule
을 사용한 큐 목록 구성의 예입니다. 이 규칙은 위의 CreateMatchmakingTicket
요청에 의해 지정된 값 16.0을 선택할 특성 경로와 소스를 포함합니다.
"MatchmakingQueue": {
"Name": "SkillRuleQueue",
"MinMatchSize": 2,
"MaxMatchSize": 2,
"ServerAllocationEnabled": false,
"Rules": [
{
"Type": "DifferenceRule",
"Difference": 3,
"MergeFunction": "Average",
"Attribute": {
"Path": "mu",
"Source": "User"
},
"AttributeNotSpecifiedBehavior": "MatchAny",
"Weight": 1,
"Name": "SkillRule",
"SecondsUntilOptional": 10
}
]
}
참고 항목
규칙은 JSON 경로로 DataObject
를 통해 탐색할 수 있습니다. 경로 필드를 “nestExample.exp”로 바꾸면 규칙은 위에서 만든 티켓에 값 1500을 사용하게 됩니다.
플레이어 엔터티를 통해 지정
특성 유형이 “Player Entity”인 규칙의 경우, 특성은 SetObjects
API에 대한 별도의 호출을 통해 지정됩니다.
이렇게 하면 각 티켓 생성 호출에서 데이터를 지정해야 하는 타이틀이 아닌 사용자에 대한 데이터를 저장할 수 있습니다.
이렇게 하면 사용자에 대해 지속되는 값이나 사용자가 제출할 신뢰할 수 없는 값이 더 적합할 수 있습니다. 이 SetObjects
호출의 예는 아래와 같습니다.
POST https://{{TitleID}}.playfabapi.com/Object/SetObjects
{
"Objects": [
{
"ObjectName": "playerSkill",
"DataObject": {
"skillDetail": {
"mu": 16.0,
"sigma": 2.0
}
}
}
],
"Entity": {
"Id": "A8140AB9109712B",
"Type": "title_player_account",
"TypeString": "title_player_account"
}
}
다음 구성을 가진 큐는 이 플레이어로 티켓을 생성할 때 DifferenceRule
규칙에 사용할 값 16.0을 검색합니다.
참고 항목
Path
필드에서 루트 뒤에 오는 첫 번째 항목은 ObjectName
이며, 참조할 저장된 개체를 선택할 수 있습니다.
"MatchmakingQueue": {
"Name": "PlayerEntityRuleQueue",
"MinMatchSize": 2,
"MaxMatchSize": 2,
"ServerAllocationEnabled": false,
"Rules": [
{
"Type": "DifferenceRule",
"Difference": 1,
"MergeFunction": "Average",
"Attribute": {
"Path": "$.playerSkill.skillDetail.mu",
"Source": "PlayerEntity"
},
"AttributeNotSpecifiedBehavior": "MatchAny",
"Weight": 1,
"Name": "SkillRule",
"SecondsUntilOptional": 10
}
]
}
특수 형식
대부분의 규칙은 문자열 또는 숫자 속성을 사용하며 단순히 JSON 형식의 값입니다. 보다 복잡한 특성을 전달해야 하는 규칙은 다음과 같습니다.
지역 선택 규칙
지역 선택 규칙에는 지정된 스키마가 있는 대기 시간 측정 배열이 필요합니다. 다음 예제는 지역 선택 규칙의 예상 특성 형식이며, 비교를 위해 CreateMatchmakingTicket
요청 예제에서 사용된 두 특성과 함께 표시됩니다.
POST https://{{TitleId}}.playfabapi.com/Match/CreateMatchmakingTicket
{
"Creator": {
"Entity": {
"Id": "A8140AB9109712B",
"Type": "title_player_account",
"TypeString": "title_player_account"
},
"Attributes": {
"DataObject": {
"mu": 16.0,
"sigma": 1.8,
"Latencies": [
{
"region": "EastUs",
"latency": 150
},
{
"region": "WestUs",
"latency": 400
}
]
}
}
},
"MembersToMatchWith": [],
"GiveUpAfterSeconds": 2,
"QueueName": "ServerEnabledQueue"
}
이 예제에서 Latencies
는 규칙의 Path
필드가 참조하는 필드와 일치해야 합니다.
Latencies
필드를 사용할 규칙의 예는 아래의 큐에 포함되어 있습니다.
"MatchmakingQueue": {
"Name": "ServerEnabledQueue",
"MinMatchSize": 2,
"MaxMatchSize": 2,
"ServerAllocationEnabled": true,
"BuildId": "88b3e315-829c-4b6d-9872-74f427ad5331",
"Rules": [
{
"Type": "RegionSelectionRule",
"MaxLatency": 1000,
"Path": "Latencies",
"Weight": 1,
"Name": "RegionRule",
"SecondsUntilOptional": 60
}
]
}
참고 항목
서버 할당이 활성화된 큐에 대해 지역 선택 규칙을 사용하는 경우 지역은 유효한 Azure 지역이어야 합니다. 유효한 Azure 지역 목록은 여기에서 찾을 수 있습니다.