Amazon GameLift
开发人员指南 (版本 )
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

部署 实时服务器 队组

您可以创建新的 Realtime 游戏服务器队组来托管游戏的游戏会话。实时服务器 队组需要创建 Realtime 脚本并将其上传到 Amazon GameLift。如果您有自定义的游戏服务器生成包,请参阅 为自定义游戏生成包部署 GameLift 队组 获取使用生成包创建队组的帮助。使用 Amazon GameLift 控制台或 AWS Command Line Interface (CLI) 创建队组。您可以通过编辑队组来更改队组的配置。

创建实时队组(控制台)

要使用 Amazon GameLift 控制台创建实时队组,请执行下列操作:

  1. https://console.amazonaws.cn/gamelift/ 打开 Amazon GameLift 控制台。转至 Fleets: Create fleet (队组: 创建队组) 页面来配置新队组。

  2. 队组详细信息

    • 名称 – 创建有意义的队组名称,以便您轻松地在列表和指标中识别它。

    • 描述 –(可选)添加此队组的简短说明以进一步帮助识别。

    • 队组类型 – 选择是否为此队组使用按需实例或 Spot 实例。请在选择计算资源中了解有关队组类型的更多信息。

    • 指标组 –(可选)输入新的或现有队组指标组的名称。使用 Amazon CloudWatch 跟踪 Amazon GameLift 指标时,您可以通过将多个队组添加到同一个指标组来聚合指标。

    • 实例角色 ARN –(可选)输入您希望与该队组关联的 IAM 角色的 ARN 值。此设置允许该队组中的所有实例代入该角色,从而将访问权限扩展到一组定义的 AWS 服务。了解有关如何的更多信息。

    • 二进制类型 – 选择二进制类型“脚本”。

    • 脚本 – 从下拉列表选择您要部署的实时脚本。

  3. 实例类型。从列表中选择 Amazon EC2 实例类型。列出的实例类型将会因多个因素而异,包括当前区域、所选的游戏版本的操作系统和队组类型 (按需或 Spot)。请在选择计算资源中了解有关选择实例类型的更多信息。在创建此队组之后,将无法更改实例类型。

  4. 进程管理。配置您希望服务器进程在每个实例上运行的方式。

    1. 服务器进程分配。

      指定您希望在每个实例上运行的游戏服务器进程的类型和数量。每个队组必须至少定义一个服务器进程配置,并且可以有多个配置。例如,如果您要使用已上传的实时脚本中的不同文件启动进程,您要启动的每个进程类型都必须有一个配置。

      • 启动路径 – 键入您要用来启动的脚本文件的名称。启动脚本文件必须调用 Init() 函数。在部署期间,已上传的实时脚本文件将解压缩并存储在 /local/game/ 目录下,因此您只需指定脚本文件名。示例: MyRealtimeLaunchScript.js.

      • 启动参数 –(可选)您可以在启动时将信息传递到实时脚本。以一组命令行参数的格式键入信息。示例:+map Winter444

      • 并发进程 – 指明在队组的各个实例上,有多少个使用此配置的服务器进程并发运行。

      在您输入服务器进程配置之后,单击右侧的绿色复选标记按钮来保存配置。要添加其他服务器进程配置,请单击添加配置

      检查 Amazon GameLift 对并发服务器进程数量的限制。对每个实例的并发服务器进程数的限制应用于为所有配置设置的并发进程总数。例如,如果您限制为一个进程,就只能有一个配置,并发进程必须设置为 1。如果队组被配置为超出限制,队组将无法激活。

      服务器进程配置的集合称为队组的运行时配置。它描述了在任何给定时间将在此队组中的每个实例上运行的所有服务器进程。

    2. 游戏会话激活(可选):

      设置以下限制,以确定如何在此队组的实例上激活新游戏会话:

      • 最大并发游戏会话激活 – 限制在实例上可以同时激活的游戏会话的数量。当启动多个新的游戏会话可能会对在实例上运行的其他游戏会话造成性能影响时,此限制非常有用。

      • 新激活超时 – 此设置限制 Amazon GameLift 应允许新游戏会话激活的时间量。如果游戏会话未进入状态“活动”,则终止游戏会话激活进程。

  5. 资源创建限制(可选)。设置策略,该策略限制任何一个玩家在指定时段内可创建的游戏会话数量。此限制保护您的可用队组资源免于过度消耗。要使用此功能,对新游戏会话的请求必须指定创建者。要配置策略,请单击 Add resource creation limits (添加资源创建限制)。要保存策略,请单击右侧的绿色复选标记按钮。

    • 每个策略期间的游戏会话 – 指定允许一个玩家(基于玩家 ID)在策略期间可创建的游戏会话数量。

    • 策略期间 – 指定限制每个玩家创建游戏会话的时间量,以分钟为单位。Amazon GameLift 评估各个新游戏会话请求以确定创建者在最近的时间范围内是否超过了创建限制。

  6. 保护策略(可选)。指示是否对此队组中的实例应用游戏会话保护。受保护的实例如果托管了活动游戏会话,在缩减事件中将不会终止。使用此设置将应用队组范围的保护策略;您也可以在创建游戏会话时为单个游戏会话设置保护。

  7. 当您完成新队组的配置后,单击 Initialize fleet (初始化队组)。Amazon GameLift 会分配一个 ID 至新队组并开始队组激活过程。您可以在 Fleets 页面上查看新队组的状态。一旦队组处于活动状态,您就可以根据需要更改队组的容量、运行时配置和其他配置设置。

创建实时队组 (AWS CLI)

要使用 AWS CLI 创建实时队组,请打开命令行窗口,然后使用 create-fleet 命令定义新队组。请参阅 AWS CLI 命令参考中对此命令的完整介绍。获取并安装 AWS Command Line Interface 工具。

下面显示的示例 create-fleet 请求将创建一个具有以下特征的新队组:

  • 队组将使用 c4.large Spot 实例。

  • 它将部署指定的实时脚本。

  • 该队组中的每个实例将并发运行十个相同的实时脚本进程,从而使每个实例能够同时托管多达 10 个游戏会话。

  • 在每个实例上,Amazon GameLift 将仅允许同时激活两个新的游戏会话。它还将终止任何未准备好在 60 秒内托管玩家的正在激活的游戏会话。

  • 在该队组中的实例上托管的所有游戏会话将会开启游戏会话保护。可以为单个游戏会话关闭游戏会话保护。

  • 单个玩家可以在 15 分钟内创建三个新的游戏会话。

  • 该队组的指标将被添加到 EMEAfleets 指标组中,在此示例中,EMEAfleets 指标组将合并 EMEA 区域中的所有队组的指标。

注意

对于实时服务器队组,Amazon GameLift 将自动设置供实时服务器使用的 TCP 和 UDP 范围。您可以通过调用 CLI 命令 describe-fleet-port-settings 来查看自动设置。

$ aws gamelift create-fleet --name "SampleRealtimeFleet123" --description "A sample Realtime fleet" --ec2-instance-type "c4.large" --fleet-type "SPOT" --script-id "script-1111aaaa-22bb-33cc-44dd-5555eeee66ff" --runtime-configuration "GameSessionActivationTimeoutSeconds=60, MaxConcurrentGameSessionActivations=2, ServerProcesses=[{LaunchPath=/local/game/myRealtimeLaunchScript.js, Parameters=+map Winter444, ConcurrentExecutions=10}]" --new-game-session-protection-policy "FullProtection" --resource-creation-limit-policy "NewGameSessionsPerCreator=3, PolicyPeriodInMinutes=15" --MetricGroups "EMEAfleets"

可复制版本:

aws gamelift create-fleet --name "SampleRealtimeFleet123" --description "A sample Realtime fleet" --ec2-instance-type "c4.large" --fleet-type "SPOT" --script-id "script-1111aaaa-22bb-33cc-44dd-5555eeee66ff" --runtime-configuration "GameSessionActivationTimeoutSeconds=60,MaxConcurrentGameSessionActivations=2,ServerProcesses=[{LaunchPath=/local/game/myRealtimeLaunchScript.js,Parameters=+map Winter444,ConcurrentExecutions=10}]" --new-game-session-protection-policy "FullProtection" --resource-creation-limit-policy "NewGameSessionsPerCreator=3,PolicyPeriodInMinutes=15" --MetricGroups "EMEAfleets"

如果创建队组请求成功,Amazon GameLift 将返回一组队组属性,其中包含您请求的配置设置和新的队组 ID。Amazon GameLift 会立即启动队组激活进程,并将队组状态设置为新建。您可以使用以下 CLI 命令跟踪队组的状态并查看其他队组信息:

一旦队组处于活动状态,您就可以使用以下命令根据需要更改队组的容量和其他配置设置: