对等连接的解决方法

匹配的最终结果是一个匹配项 - 满足队列规则的票证集合。 对于具有专用服务器的游戏,匹配项 ID 是唯一的,可以用于标识应该一起玩游戏的玩家组。

但是在对等情况下,游戏需要相互传递连接信息。 本教程介绍执行此操作的解决方法。

注意

当前未正式支持匹配中的对等连接。 请考虑 PlayFab Party,或联系我们以了解详细信息。

指定 IP 地址作为属性

使用票证指定属性类似,可以将任意值(如 IP 地址)指定为属性。 无需符合规则。

POST https://{{TitleId}}.playfabapi.com/Match/CreateMatchmakingTicket
{
    "Creator": {
        "Entity": {
            "Id": "A8140AB9109712B",
            "Type": "title_player_account",
            "TypeString": "title_player_account"
        },
        "Attributes": {
            "DataObject": {
                "IP": "123.234.123.12"
            }
        }
    },
    "MembersToMatchWith": [],
    "GiveUpAfterSeconds": 2,
    "QueueName": "IPExampleQueue"
}

从比赛中检索所有玩家 IP

调用 GetMatch 时,将标志 ReturnMemberAttributes 指定为 true 可返回每个票证的属性。 这会包括指定 IP 地址。

{
    "code": 200,
    "status": "OK",
    "data": {
        "MatchId": "3d58dc0f-2eb6-4162-a2e0-1ed6ac5ea551",
        "Members": [
            {
                "TeamId": "",
                "Entity": {
                    "Id": "A8140AB9109712B",
                    "Type": "title_player_account",
                    "TypeString": "title_player_account"
                },
                "Attributes": {
                    "DataObject": {
                        "IP": "123.234.123.12"
                    }
                }
            },
            {
                "TeamId": "",
                "Entity": {
                    "Id": "562D72A5B184F612",
                    "Type": "title_player_account",
                    "TypeString": "title_player_account"
                },
                "Attributes": {
                    "DataObject": {
                        "IP": "123.234.123.12"
                    }
                }
            }
        ]
    }
}

注意

虽然这可用于交换 IP,但无法保证客户端之间的连接。