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

为自定义游戏生成包部署 GameLift 队组

如果您为游戏使用 Realtime Servers,请参阅部署 Realtime Servers 队组

您可以创建并部署新队组,以便为任何已上传到 Amazon GameLift 服务并处于 Ready (准备就绪) 状态的游戏生成包托管游戏服务器。

创建队组

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

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

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

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

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

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

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

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

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

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

    • 生成包 – 如果您使用了 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.

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

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

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

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

    2. 游戏会话激活:

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

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

      • 新激活超时 – 此设置限制 Amazon 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. Resource creation limit 部分中,单击 Add resource creation limits 可设置策略,该策略限制任何一个玩家在指定时段内可创建的游戏会话数量。此限制保护您的可用队组资源免于过度消耗。要使用此功能,对新游戏会话的请求必须指定创建者。

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

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

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

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

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

AWS CLI

要使用 AWS CLI 创建队组,请打开命令行窗口,然后使用 create-fleet 命令定义新队组。请参阅 AWS CLI 命令参考中对此命令的完整介绍。

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

  • 该队组将 c4.large 按需实例与所选游戏版本所需的操作系统一起使用。

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

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

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

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

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

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

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

$ aws gamelift create-fleet --name "SampleFleet123" --description "The sample test fleet" --ec2-instance-type "c4.large" --fleet-type "ON_DEMAND" --build-id "build-92f061ed-27c9-4a02-b1f4-6f85b2385620" --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" --ec2-instance-type "c4.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"

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

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