Version: en

Contracts - Backfill

warning

This documentation is now deprecated. If you are using Matchmaker Self Serve though UDash, please use the documentation here.

BackfillTicket#

{
"Id" : "9c452395-d2e2-4ba3-bdde-125c75a98114",
"Created" : 1601585418595,
"RecordVersion" : 4,
"Connection" :"123.20.220.8:900",
"attributes": {
"mode": 1,
"playerCount": 2,
"teamSkill": 15.34
},
"properties": {
"data": "ewogICAgICAgICJNYXRjaFByb3BlcnRpZXMiOiB7CiAgICAgICAgICAgICJUZWFtcyI6IFt7CiAgICAgICAgICAgICAgICAgICAgIlRlYW1OYW1lIjogImh1bnRlcnMwIiwKICAgICAgICAgICAgICAgICAgICAiVGVhbURlZmluaXRpb25OYW1lIjogImh1bnRlcnMiLAogICAgICAgICAgICAgICAgICAgICJQbGF5ZXJJZHMiOiBbCiAgICAgICAgICAgICAgICAgICAgICAgICJhYWJiIiwKICAgICAgICAgICAgICAgICAgICAgICAgImJiY2MiLAogICAgICAgICAgICAgICAgICAgICAgICAiY2NkZCIKICAgICAgICAgICAgICAgICAgICBdCiAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgIlRlYW1OYW1lIjogIm1vbnN0ZXJzMCIsCiAgICAgICAgICAgICAgICAgICAgIlRlYW1EZWZpbml0aW9uTmFtZSI6ICJtb25zdGVycyIsCiAgICAgICAgICAgICAgICAgICAgIlBsYXllcklkcyI6IFsKICAgICAgICAgICAgICAgICAgICAgICAgImRkZWUiLAogICAgICAgICAgICAgICAgICAgICAgICAiZWVmZiIsCiAgICAgICAgICAgICAgICAgICAgICAgICJmZmdnIgogICAgICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgXQogICAgICAgIH0sCiAgICAgICAgIlRlYW1EZWZpbml0aW9ucyI6IFt7CiAgICAgICAgICAgICAgICAiTmFtZSI6ICJodW50ZXJzIiwKICAgICAgICAgICAgICAgICJUZWFtQ291bnQiOiB7CiAgICAgICAgICAgICAgICAgICAgIk1pbiI6IDEuMCwKICAgICAgICAgICAgICAgICAgICAiTWF4IjogMS4wLAogICAgICAgICAgICAgICAgICAgICJSZWxheCI6IG51bGwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAiUGxheWVyQ291bnQiOiB7CiAgICAgICAgICAgICAgICAgICAgIk1pbiI6IDMuMCwKICAgICAgICAgICAgICAgICAgICAiTWF4IjogMy4wLAogICAgICAgICAgICAgICAgICAgICJSZWxheCI6IG51bGwKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIk5hbWUiOiAibW9uc3RlcnMiLAogICAgICAgICAgICAgICAgIlRlYW1Db3VudCI6IHsKICAgICAgICAgICAgICAgICAgICAiTWluIjogMS4wLAogICAgICAgICAgICAgICAgICAgICJNYXgiOiAxLjAsCiAgICAgICAgICAgICAgICAgICAgIlJlbGF4IjogbnVsbAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICJQbGF5ZXJDb3VudCI6IHsKICAgICAgICAgICAgICAgICAgICAiTWluIjogMy4wLAogICAgICAgICAgICAgICAgICAgICJNYXgiOiAzLjAsCiAgICAgICAgICAgICAgICAgICAgIlJlbGF4IjogbnVsbAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICAiUGxheWVycyI6IFt7CiAgICAgICAgICAgICAgICAiSWQiOiAiYWFiYiIsCiAgICAgICAgICAgICAgICAiRGF0YSI6IHsgImN1c3RvbSIgOiIiLCAicHJpdmF0ZSIgOiAwLCAiZGF0YSIgOiAzMi4zNDJ9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJJZCI6ICJiYmNjIiwKICAgICAgICAgICAgICAgICJEYXRhIjogeyAiY3VzdG9tIiA6IiIsICJwcml2YXRlIiA6IDAsICJkYXRhIiA6IDMyLjM0Mn0KICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIklkIjogImNjZGQiLAogICAgICAgICAgICAgICAgIkRhdGEiOiB7ICJjdXN0b20iIDoiIiwgInByaXZhdGUiIDogMCwgImRhdGEiIDogMzIuMzQyfQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAiSWQiOiAiZGRlZSIsCiAgICAgICAgICAgICAgICAiRGF0YSI6IHsgImN1c3RvbSIgOiIiLCAicHJpdmF0ZSIgOiAwLCAiZGF0YSIgOiAzMi4zNDJ9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJJZCI6ICJlZWZmIiwKICAgICAgICAgICAgICAgICJEYXRhIjogeyAiY3VzdG9tIiA6IiIsICJwcml2YXRlIiA6IDAsICJkYXRhIiA6IDMyLjM0Mn0KICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIklkIjogImZmZ2ciLAogICAgICAgICAgICAgICAgIkRhdGEiOiB7ICJjdXN0b20iIDoiIiwgInByaXZhdGUiIDogMCwgImRhdGEiIDogMzIuMzQyfQogICAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICAiUmVnaW9uIjogIlVTLVdFU1QiCiAgICB9"
}
}
FieldDescriptionType
createdUnix time in miliseconds that the backfill ticket was created.long
recordVersionRepresents the latest version of the backfill ticket. This field is managed by the matchmaker. Match functions returning modified backfill tickets will not modify this field.int
connectionThis is the "ip:port" of the server that tickets are assigned to. When allocation is complete, any ticket associated with this backfill ticket will be assigned this connection.string
idThe id of the backfill ticket, used for update/approve/delete operationsstring
attributesThese indexable fields are available to match functions as queryable fields for retrieving backfill tickets from the matchmaking pool. Match functions and DGS may update these to reflect the latest state of the ticket.

This field is optional.
Dictionary<string, double>
propertiesValues in properties are available to match functions to serialize/deserialize and use in matchmaking logic. Match functions and DGS may update these to reflect the latest state of the server. In the preceding example, data contains a Base64-encoded string containing the BackfillDataContract object :
TODO link to contract definition/sample

This field is optional.
Dictionary<string, byte[]>

BackfillData Contract#

When a matchmaking config has backfill enabled, matchmaking logic writes partial match data into a backfill ticket "data" property. This data has the following format, and DGS's must honor this format when updating backfill tickets.

{
"MatchProperties": {
"Teams": [
{
"TeamName": ". . .",
"TeamDefinitionName": ". . .",
"PlayerIds": [
. . .
]
},
. . .
],
"Region": ". . ."
},
"TeamDefinitions": [
{
"Name": ". . .",
"TeamCount": {
"Min": 1.0,
"Max": 1.0,
},
"PlayerCount": {
"Min": 3.0,
"Max": 3.0,
}
},
. . .
],
"Players": [
{
"Id": "aabb",
"Data": {"CustomData": ""}
},
. . .
]
}
FieldDescriptionType
MatchPropertiesThe match properties list all teams and thier players. If the DGS wants to indicate a player was dropped, it must modify this object by removing the player from the team and also update the Players array, defined below. This is the same contract as MatchProperties Contractobject
TeamDefinitionsThis is the same contract as is used in the matchmaking config file. Team Definition Contractobject
PlayersThis is the "ip:port" of the server that tickets are assigned to. When allocation is complete, any ticket associated with this backfill ticket will be assigned this connection.string
idThe id of the backfill ticket, used for update/approve/delete operationsstring
attributesThese indexable fields are available to match functions as queryable fields for retrieving backfill tickets from the matchmaking pool. Match functions and DGS may update these to reflect the latest state of the ticket.

This field is optional.
Dictionary<string, double>
propertiesValues in properties are available to match functions to serialize/deserialize and use in matchmaking logic. Match functions and DGS may update these to reflect the latest state of the server. In the preceding example, data contains a Base64-encoded string containing the BackfillDataContract object :
TODO link to contract definition/sample

This field is optional.
Dictionary<string, byte[]>

CreateBackfillTicketRequest#

{
"Connection" :"123.20.220.8:900",
"attributes": {
"mode": 1,
"playerCount": 2,
"teamSkill": 15.34
},
"properties": {
"qosConnector": "...",
"serverInfo": "eyAKICAgICJQbGF5ZXJzTmVlZGVkIiA6IDE0LAogICAgIlN1bU9mU2tpbGwiIDogIDIzOTcsCiAgICAiQ3VycmVudFBsYXllcnMiIDogMjYKfQ=="
}
}
FieldDescriptionType
connectionThis is the "ip:port" of the server that tickets are assigned to. Match functions may observe this as a null value while a server is still being allocated. When allocation is complete, any ticket associated with this backfill ticket will be assigned this connection.string
attributesThese indexable fields are available to match functions as queryable fields for retrieving backfill tickets from the matchmaking pool. Match functions and DGS may update these to reflect the latest state of the ticket.

This field is optional.
Dictionary<string, double>
propertiesValues in properties are available to match functions to serialize/deserialize and use in matchmaking logic. Match functions and DGS may update these to reflect the latest state of the server. In the preceding example, serverInfo contains a custom Base64-encoded string of:
{ "PlayersNeeded" : 14, "SumOfSkill" : 2397, "CurrentPlayers" : 26}

This field is optional.
Dictionary<string, byte[]>

CreateBackfillTicketResponse#

{
"Id" : "9c452395-d2e2-4ba3-bdde-125c75a98114"
}
FieldDescriptionType
IdThe id of the backfill ticket, used for update/approve/delete operationsobject