管理生成别名并分配给它

生成别名是基于生成的管理层,它允许调用 RequestMultiplayerServer 以受控方式分布在多个内部版本上。 这可以提高生成升级的简单性和可靠性,以及下面列出的一些其他方案。 别名通过指定生成 ID 列表以及每个 ID 的权重来实现此目的。 权重表示应转发到相应生成的分配调用的比率。

向后兼容的安全部署

这是生成以生成升级的最常见方案,你在其中更新游戏服务器和零售客户端与这两个服务器兼容。

客户端将引用别名 1,该别名具有以下配置:

  • 内部版本 1:权重 = 1

创建生成 2 后,别名 1 将更改为:

  • 内部版本 1:权重 = 8
  • 内部版本 2:权重 = 2

你可以逐渐更改权重,直到生成 2 完成所有新的服务器请求。 此时,内部版本 1 的权重为 0,可以从别名中删除。

别名的典型用例是将其关联到客户端兼容性版本和游戏模式。 例如“DeathMatch 客户端 2.2 零售”。使用别名可以管理此更高级别的抽象,同时持续更新支持此体验的生成。 如有必要,别名还使你能够更轻松地回滚生成。

不向后兼容的部署

在这种情况下,你希望在更新游戏客户端的同时更新游戏服务器,因为当前的游戏客户端与旧的服务器版本不兼容。 从一个生成转换到另一个生成将按如下所示完成:

旧客户端将引用别名 1,这将具有以下内容:

  • 内部版本 1:权重 = 1

创建生成 2 后,新客户端将引用别名 2,这将具有以下内容:

  • 内部版本 2:权重 = 1

在此方案中,别名与生成类似,不使用其多路复用功能。

向后兼容的爆炸式部署

这类似于生成升级方案的向后兼容生成,但需求行为出现更突然的切换。 从一个生成转换到另一个生成将按如下所示完成:

客户端将引用别名 1,这将具有以下内容:

  • 内部版本 1:权重 = 1

创建生成 2 后,别名 1 将更改为:

  • 内部版本 1:权重 = 0
  • 内部版本 2:权重 = 1

测试向后兼容的部署

如果要更新游戏服务器,并且客户端版本与这两个服务器兼容,但你希望在为所有玩家大规模部署第二个版本之前测试第二个版本。 测试和从一个生成转换到另一个版本可以执行以下操作:

客户端将引用别名 1,这将具有以下内容:

  • 内部版本 1:权重 = 1

创建生成 2 后。 测试客户端将引用别名 2,这将具有以下内容:

  • 内部版本 2:权重 = 1

验证生成 2 后。 别名 1 将更改为:

  • 内部版本 1:权重 = 8
  • 内部版本 2:权重 = 2

逐渐生成 2 将加权更多并占用所有流量。

回退到其他生成和区域

别名允许跨多个生成进行回退,从而使多人游戏服务器部署更具复原能力。 例如,假定面向生成别名的分配请求将 EastUS 排为区域#1,将美国西部列为区域#2。 此生成别名为两个内部版本(内部版本 1 和内部版本 2)提供类似的权重。

假定为给定的分配选择了生成 1。

  1. 已尝试在美国东部分配内部版本 1。
  2. 如果#1失败,则会尝试在美国东部分配内部版本 2。
  3. 如果#2失败,则尝试在 WestUS 中分配内部版本 1。
  4. 如果#3失败,则尝试在 WestUs 中分配内部版本 2。

特别是当你从一个内部版本逐渐升级到另一个版本时,此回退行为会得到优化,以便玩家获得最低延迟服务器,即使其中一个版本遇到问题。

使用 PlayFab REST API 管理生成别名

注意

现在可以在 Game Manager 中管理生成别名。 若要开始使用,请参阅 生成概述页

  1. 使用 API 创建生成别名。

    API:

    POST https://titleId.playfabapi.com/MultiplayerServer/CreateBuildAlias
    

    示例正文:

    {
        "AliasName":"TestingAlias",
        "BuildSelectionCriteria":
        [{
            "BuildWeightDistribution":{"9a8a4584-c81a-479c-9ef9-16d3743f7ca7":"1"}
        }]
    }
    

    示例响应:

    {
        "AliasId":"97d2b0a5-7c04-4593-8451-66bbb97f94b6",
        "AliasName":"TestingAlias",
        "BuildSelectionCriteria":
        [{
            "BuildWeightDistribution":{"9a8a4584-c81a-479c-9ef9-16d3743f7ca7":"1"}
        }]
    }
    

    生成别名 ID 作为响应的一部分提供。

  2. 更新生成别名的任何参数。

    API:

    POST https://titleId.playfabapi.com/MultiplayerServer/UpdateBuildAlias
    

    示例正文:

    {
        "AliasId":"97d2b0a5-7c04-4593-8451-66bbb97f94b6",
        "AliasName":"TestingAliasRenamed",
        "BuildSelectionCriteria":
        [{
            "BuildWeightDistribution":{"9a8a4584-c81a-479c-9ef9-16d3743f7ca7":"1",
            "7ac7f347-3d61-9fe9-c974-a18c4854a8a9":"1"}
        }]
    }
    

    示例响应:

    {
        "AliasId":"97d2b0a5-7c04-4593-8451-66bbb97f94b6",
        "AliasName":"TestingAliasRenamed",
        "BuildSelectionCriteria":
        [{
            "BuildWeightDistribution":{"9a8a4584-c81a-479c-9ef9-16d3743f7ca7":"1",
            "7ac7f347-3d61-9fe9-c974-a18c4854a8a9":"1"}
        }]
    }
    
  3. 删除生成别名。

    API:

    POST https://titleId.playfabapi.com/MultiplayerServer/DeleteBuildAlias
    

    示例正文:

    {
        "AliasId":"97d2b0a5-7c04-4593-8451-66bbb97f94b6"
    }
    
  4. 列出生成别名。

    API:

    GET https://titleId.playfabapi.com/MultiplayerServer/ListBuildAliases
    

    示例响应:

    [{
        "AliasId":"97d2b0a5-7c04-4593-8451-66bbb97f94b6",
        "AliasName":"TestingAliasRenamed",
        "BuildSelectionCriteria":
        [{
            "BuildWeightDistribution":{"9a8a4584-c81a-479c-9ef9-16d3743f7ca7":"1",
            "7ac7f347-3d61-9fe9-c974-a18c4854a8a9":"1"}
        }]
    }]
    

使用生成别名分配

若要使用生成别名进行分配,只需在 RequestMultiplayerServer 调用中指定生成别名 ID。

API:

POST https://titleId.playfabapi.com/MultiplayerServer/RequestMultiplayerServer

示例正文:

{
    "SessionId":"6a07440c-7bcc-4e23-8b81-4934543ff966",
    "PreferredRegions":["SouthCentralUs"],
    "BuildAliasParams":
        {"AliasId":"97d2b0a5-7c04-4593-8451-66bbb97f94b6"}
}