使用自定义游戏生成包创建队组 - Amazon GameLift
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用自定义游戏生成包创建队组

使用 GameLift 控制台或 AWS Command Line Interface (CLI) 创建队组。

在您创建新的队组之后,在部署队组并安装和启动游戏服务器的过程中,队组的状态需要经过多个阶段。当队组进入 ACTIVE 状态时,即表示已准备好托管游戏会话。有关队组创建问题的帮助,请参阅调试 GameLift 队组问题

Console
  1. https://console.amazonaws.cn/gamelift/ 打开 GameLift 控制台。

  2. Builds 页面上,找到您要为其创建队组的生成包,并验证其状态是 Ready。选择生成包(使用生成包状态左侧的选项按钮)并单击 Create fleet from build (从生成包创建队组)

  3. Create fleet (创建队组) 页面上,输入 Fleet Details (队组详细信息)

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

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

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

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

    • 实例角色 ARN –(可选)输入您希望与该队组关联的 IAM 角色的 ARN 值。此设置允许该队组中的所有实例代入该角色,从而将访问权限扩展到一组定义的 AWS 服务。了解有关如何与来自车队的其他AWS资源通信的更多信息。创建具有实例角色 ARN 的队列时,您必须具有 IAM PassRole 权限,如适用于 GameLift 的 IAM 策略示例中所述。

    • 二进制类型 – 选择二进制类型“生成”。

    • 生成包 – 如果您使用了 Create fleet from build feature (从生成包创建队组功能),生成包信息将自动填写,包括名称、ID 和操作系统。否则,请从下拉列表中选择一个有效的生成包。

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

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

    1. 服务器进程分配:

      指定您希望在每个实例上运行的游戏服务器进程的类型和数量。每个队组必须至少定义一个服务器进程配置,并且可以有多个配置。例如,如果您的游戏生成包中有多个服务器可执行文件,则每个可执行文件必须有一个配置。

      • 启动路径 – 键入您的生成包中游戏可执行文件的路径。所有启动路径必须以游戏服务器位置开头,这根据所用的操作系统有所不同。在 Windows 实例上,游戏服务器生成到路径 C:\game。 在 Linux 实例上,游戏服务器生成到 /local/game,因此所有启动路径必须以该位置开头。示例:C:\game\MyGame\server.exe/local/game/MyGame/server.exe

      • 启动参数 –(可选)您可以在启动时将信息传送到游戏可执行文件。在此处以一组命令行参数的格式键入信息。示例:+sv_port 33435 +start_lobby

      • 并发进程 – 指明在队组的各个实例上,有多少个使用此配置的服务器进程并发运行。检查 GameLift 并发服务器进程数限制;此限制取决于您的游戏服务器使用了什么开发工具包。

      在您输入服务器进程配置之后,单击绿色对勾按钮以保存配置。要添加其他服务器进程配置,请单击添加配置

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

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

    2. 游戏会话激活:

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

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

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

  6. EC2 port settings (EC2 端口设置)。单击 Add port settings (添加端口设置) 以定义连接到部署在此队组上的服务器进程的入站流量的访问权限。您可以为一个队组创建多个端口设置。在允许访问之前,必须至少为队组设置一个端口设置。如果您现在不指定端口设置,您可以在以后编辑队组。

    • 端口范围 – 指定您的游戏服务器可用来允许入站连接的端口号范围。端口范围必须使用格式 nnnnn[-nnnnn],值介于 1025 和 60000 之间。示例:15001500-20000

    • 协议 – 选择队组要使用的通信协议的类型。

    • IP 地址范围 – 指定此队组中实例的有效 IP 地址范围。使用 CIDR 表示法。示例:0.0.0.0/0 (此示例允许尝试连接的任何人的访问。)

  7. Protection policy 部分中,选择是否对此队组中的实例应用游戏会话保护。具有保护的实例如果托管了活动游戏会话,在缩减事件中将不会终止。此外,您还可以为单独的游戏会话设置保护。创建队组之后,您可以编辑队组以更改队组范围的保护策略。

  8. 当您完成新队组的配置设置后,单击 Initialize fleet (初始化队组)。GameLift 会分配一个 ID 至新队组并开始队组激活过程。您可以在 Fleets (队组) 页面上跟踪新队组的状态。

您可以随时更新队组的元数据和配置,无论队组状态如何(请参阅管理 GameLift 队组)。您只能在队组进入 ACTIVE 状态之后更新队组容量(请参阅扩展 GameLift 队组容量)。

AWS CLI

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

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

  • 该队组将 c5.large 按需实例与适合所选游戏生成包的操作系统一起使用。

  • 它将部署指定的游戏服务器版本 (必须处于准备就绪状态)。

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

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

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

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

  • 在该队组上托管的每个游戏会话都有一个位于指定的 IP 地址和端口范围内的连接点。

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

$ aws gamelift create-fleet --name "SampleFleet123" --description "The sample test fleet" --ec2-instance-type "c5.large" --fleet-type "ON_DEMAND" --build-id "build-92f061ed-27c9-4a02-b1f4-6f85b2385620" --certificate-configuration "CertificateType=GENERATED" --runtime-configuration "GameSessionActivationTimeoutSeconds=300, MaxConcurrentGameSessionActivations=2, ServerProcesses=[{LaunchPath=C:\game\Bin64.dedicated\MultiplayerSampleProjectLauncher_Server.exe, Parameters=+sv_port 33435 +start_lobby, ConcurrentExecutions=10}]" --new-game-session-protection-policy "FullProtection" --resource-creation-limit-policy "NewGameSessionsPerCreator=3, PolicyPeriodInMinutes=15" --ec2-inbound-permissions "FromPort=33435,ToPort=33435,IpRange=0.0.0.0/0,Protocol=UDP" "FromPort=33235,ToPort=33235,IpRange=0.0.0.0/0,Protocol=UDP" --MetricGroups "EMEAfleets"

可复制版本:

aws gamelift create-fleet --name "SampleFleet123" --description "The sample test fleet" --fleet-type "ON_DEMAND" --MetricGroups "EMEAfleets" --build-id "build-92f061ed-27c9-4a02-b1f4-6f85b2385620" --certificate-configuration "CertificateType=GENERATED" --ec2-instance-type "c5.large" --runtime-configuration "GameSessionActivationTimeoutSeconds=300,MaxConcurrentGameSessionActivations=2,ServerProcesses=[{LaunchPath=C:\game\Bin64.dedicated\MultiplayerSampleProjectLauncher_Server.exe,Parameters=+sv_port 33435 +start_lobby,ConcurrentExecutions=10}]" --new-game-session-protection-policy "FullProtection" --resource-creation-limit-policy "NewGameSessionsPerCreator=3,PolicyPeriodInMinutes=15" --ec2-inbound-permissions "FromPort=33435,ToPort=33435,IpRange=0.0.0.0/0,Protocol=UDP" "FromPort=33235,ToPort=33235,IpRange=0.0.0.0/0,Protocol=UDP"

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

您可以使用以下命令,根据需要更改队组的容量和其他配置设置: