多人游戏会话模板

本主题描述了可以为多人游戏会话复制和修改模板的多人游戏会话模板,并提供了模板示例。

多人游戏会话模板是用于创建多人游戏会话的蓝图。 所有会话都必须根据预定义的模板创建。

模板可定义对通过模板创建的任何会话都相同的常量。 从模板创建会话时,可以向会话添加和修改会话的其他数据。 但是,无法修改模板中定义的常量。

有关详细信息,请参阅 多人游戏会话高级主题 中的会话概述部分。

可以从多人游戏会话目录 (MPSD) 中获得适用于服务配置标识符 (SCID) 的会话模板列表和特定会话模板的内容。

关于会话模板

创建或修改会话的会话模板使用与 HTTP PUT 请求相同的格式。 区别在于模板仅定义常量。 而未定义成员、服务器和属性。

可以定义任何会话常量,包括自定义部分和全部的系统常量。

会话模板版本

本主题中定义的会话模板是通过使用模板协定版本 107 构建的。 当使用它们来创建新的模板时,请确保将协定版本指定为 107。

如果使用 Xbox 服务 API (XSAPI) 并在调试器中观察所产生的请求,则可能会注意到这些请求使用了模板协定版本 105。 在运行时,MPSD 会将这些请求有效地“升级”到版本 107。

注意

可以在请求中使用与会话模板中不同的协定版本。

如有必要,可以将会话模板从版本 104 或 105 更改为版本 107。

返回到本主题顶部。

会话模板默认值

通过会话模板创建的每个会话都以模板副本的形式启动。 在模板中未指定的值可以在创建会话时指定。 如果未设置其他值,则在某些情况下将提供默认值。

协定版本 107 的默认超时集如下例所示。

    {
      "constants": {
        "system": {
          "reservedRemovalTimeout": 30000,
          "inactiveRemovalTimeout": 0,
          "readyRemovalTimeout": 180000,
          "sessionEmptyTimeout": 0
        }
      }
    }

您可以通过指定 null 使值保持未设置状态。 这将替代任何默认设置,并阻止在创建会话时设置值。

例如,若要删除 sessionEmptyTimeout,则即使是空会话也会无限期地继续下去,请在会话模板中添加以下内容。

    {
      "constants": {
        "system": {
          "sessionEmptyTimeout": null
        }
      }
    }

重要

通过模板设置的常量不能通过写入 MPSD 来更改。 要更改这些值,您必须创建并提交包含所需更改的新模板。

返回到本主题顶部。

示例会话模板

本部分提供用于各种目的和网络拓扑的会话模板示例。 可以对适当的模板进行任何必需的更改,并将其粘贴到服务配置中。

标准大厅会话

使用此模板为游戏创建大厅会话。

  • maxMembersCount 值更改为您希望在大厅会话中支持的最大玩家数。
  • 如果游戏不支持来自不同平台的玩家 (例如 Xbox 主机和 Windows 电脑) 一起玩,则可以删除 crossPlay 元素。
  • 也可以更改其他值。 如果不确定需要什么,则可以从以下值开始。
{
   "constants": {
        "system": {
            "version": 1,
            "maxMembersCount": 8,
            "visibility": "open",
            "capabilities": {
                "connectivity": true,
                "connectionRequiredForActiveMembers": true,
                "crossPlay": true,
                "userAuthorizationStyle": true
            },
        },
        "custom": {}
    }
}

不含匹配的标准游戏会话

如果游戏不包括匿名匹配,也不需要超过 100 个成员,请使用此模板为游戏创建一个游戏会话。

此模板仅在除标准大厅会话模板中指定值外添加两个新值。

  • constants.system.inviteProtocol : "game"
  • constants.system.capabilities.gameplay : true
{
   "constants": {
        "system": {
            "version": 1,
            "maxMembersCount": 8,
            "visibility": "open",
            "inviteProtocol": "game",
            "capabilities": {
                "connectivity": true,
                "connectionRequiredForActiveMembers": true,
                "gameplay" : true,
                "crossPlay": true,
                "userAuthorizationStyle": true
            }
        },
        "custom": {}
    }
}

在游戏会话模板中添加匹配功能,其中服务质量 (QoS) 检查由多人游戏服务处理

若要在游戏中启用匹配,请在游戏会话模板中指定 memberInitialization 值。

创建 SmartMatch 漏斗时,使用以下模板作为漏斗的目标会话模板。

{
   "constants": {
        "system": {
            "memberInitialization": {
               "joinTimeout": 20000,
               "measurementTimeout": 15000,
               "membersNeededToStart": 2
            }
        }
    }
}

在游戏会话中添加匹配,其中 QoS 检查由游戏管理的数据中心处理

{
   "constants": {
        "system": {
            "peerToHostRequirements": {  
                "latencyMaximum": 250,
                "bandwidthDownMinimum": 256,
                "bandwidthUpMinimum": 256,
                "hostSelectionMetric": "latency"
            },
            "memberInitialization": {
               "joinTimeout": 15000,
               "measurementTimeout": 15000,
               "membersNeededToStart": 2
            }
        },
        "custom": {}
    }
}

适用于客户端/服务器游戏会话的基本会话模板

对于让客户连接到第三方托管服务器而不是对等通信的游戏,请使用以下模板。

    {
      "constants": {
        "system": {
          "version": 1,
          "maxMembersCount": 12,
          "visibility": "open",
          "inviteProtocol": "game",
          "capabilities": {
            "connectionRequiredForActiveMembers": true,
            "gameplay": true,
          },
        },
        "custom": {}
      }
    }

适用于对等网络的大厅或 SmartMatch 票证会话模板

使用以下模板创建大厅会话或 SmartMatch 票证会话,以将一组玩家送入匹配。

该模板供使用对等或对等网络拓扑结构的客户使用。 它并不配置游戏环节。

    {
      "constants": {
        "system": {
          "version": 1,
          "maxMembersCount": 10,
          "visibility": "open",
          "capabilities": {
            "connectionRequiredForActiveMembers": true,
          },
          "memberInitialization": {
            "membersNeededToStart": 1
          },
        },
        "custom": {}
      }
    }

返回到本主题顶部。

QoS 模板

如果游戏使用匹配并评估 QoS,则必须在会话模板中添加一些常量,以通知 MPSD 与客户端协调,从而管理加入会话的用户。 这种协调在通知用户游戏可以开始之前,验证了连接状态的质量。

如果是客户端/服务器游戏,则在一组玩家进入匹配前,该协调会验证连接质量。

使用 QoS 的对等-主机游戏会话模板

使用下面的模板来创建一个带有 QoS 的点对点游戏会话。

    {
      "constants": {
        "system": {
          "version": 1,
          "maxMembersCount": 12,
          "visibility": "open",
          "inviteProtocol": "game",
          "capabilities": {
            "connectivity": true,
            "connectionRequiredForActiveMembers": true,
            "gameplay" : true
          },
          "memberInitialization": {
            "membersNeededToStart": 2
          },
          "peerToHostRequirements": {
            "latencyMaximum": 350,
            "bandwidthDownMinimum": 1000,
            "bandwidthUpMinimum": 1000,
            "hostSelectionMetric": "latency"
          }
        },
        "custom": { }
      }
    }

使用 QoS 的对等游戏会话模板

使用以下模板创建有 QoS 的对等游戏会话。

    {
    "constants": {
      "system": {
        "version": 1,
        "maxMembersCount": 12,
        "visibility": "open",
        "inviteProtocol": "game",
        "capabilities": {
          "connectivity": true,
          "connectionRequiredForActiveMembers": true,
          "gameplay" : true
        },
        "memberInitialization": {
          "membersNeededToStart": 2
        },
        "peerToPeerRequirements": {
          "latencyMaximum": 250,
          "bandwidthMinimum": 10000
        }
      },
      "custom": { }
     }
    }

使用 QoS 的客户端/服务器大厅或匹配会话模板

使用以下模板,通过使用 QoS 创建一个大厅会话或匹配会话。 不应使用此模板来配置游戏会话。

    {
      "constants": {
        "system": {
          "version": 1,
          "maxMembersCount": 12,
          "visibility": "open",
          "memberInitialization": {
            "membersNeededToStart": 1
          }
        },
        "custom": {}
      }
    }

Xbox 和 Windows 10 之间 crossplay 的会话模板

使用以下模板来启用 Xbox One (或更高版本) 和 Windows 10 之间的跨平台游戏。

  • 这种可选 crossPlay 功能支持平台之间的互动,如邀请和加入过程中的互动。

  • userAuthorizationStyle 功能支持访问 Windows 10。

    {
      "constants": {
        "system": {
          "capabilities": {
            "crossPlay": true,
            "userAuthorizationStyle": true
          },
        },
        "custom": {}
      }
    }