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

创建机群

您可以创建新队组,用于为任何已上传到 Amazon GameLift 服务并处于 Ready (准备就绪) 状态的游戏生成包托管游戏服务器。使用 Amazon GameLift 控制台AWS Command Line Interface (CLI) 创建队组。您可以通过编辑队组来更改队组的配置。

创建队组 (控制台)

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

  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 指标时,您可以通过将多个队组添加到同一个指标组来聚合指标。

    • 生成包 – 如果您使用了 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 页面上查看新队组的状态。一旦队组处于活动状态,您就可以根据需要更改队组的容量、运行时配置和其他配置设置。

创建队组 (AWS CLI)

要使用 AWS CLI 创建队组,请打开命令行窗口,然后使用 create-fleet 命令定义新队组。请参阅 AWS CLI 命令参考中对此命令的完整介绍。如果您尚未安装 AWS CLI,请参阅主题安装 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 命令跟踪队组的状态并查看其他队组信息:

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

创建队组和 VPC 对等连接

您可以创建一个新队组,同时为新队组请求一个 VPC 对等连接。了解有关使用 Amazon GameLift 设置 VPC 对等连接的更多信息。

为新队组请求对等连接之前,必须先执行以下步骤。这两项都是使用管理您的非 GameLift 资源的帐户的凭证完成的。

  • 为一组资源创建 VPC。该 VPC 必须与您将创建的队组位于同一区域。记下 VPC ID。

  • 调用 Amazon GameLift 命令 create-vpc-peering-authorization 来预授权对等请求。您需要与 Amazon GameLift 一起使用的账户的 ID。此授权将在 24 小时内保持有效,除非您将其撤销。

要创建您的队组的 VPC 对等连接:

  • 按照使用 AWS CLI 创建新队组的说明操作。包括以下其他参数:

    • peer-vpc-aws-account-id – 非 GameLift AWS 账户的 ID,您已为其创建 VPC。

    • peer-vpc-id – 使用您的非 GameLift 账户创建的 VPC 的 ID。

使用 VPC 对等参数成功调用 create-fleet 后将会生成一个新队组和一个新 VPC 对等请求。该队组的状态设置为 New,并且将启动队组激活过程。对等请求的状态设置为 initiating-request。通过调用 describe-vpc-peering-connections,您可以跟踪对等请求的成功或失败。

在请求与新队组的 VPC 对等连接时,两个操作要么成功,要么失败。如果某个队组在创建过程中失败,则 VPC 对等连接将不会成功完成。同样,如果 VPC 对等连接由于任何原因失败,则新队组将无法从 Activating 状态变为 Active 状态。

注意

新的 VPC 对等连接直到队组准备好变为活动状态才能完成。因此,它在新的队组实例上安装游戏服务器生成包期间不可用。

以下示例显示了创建新队组以及预先建立的 VPC 和为新队组创建的 VPC 之间的对等连接的请求。预先建立的 VPC 由您的非 GameLift AWS 账户 ID 和 VPC ID 组合唯一标识。

$ aws gamelift create-fleet --name "My_Fleet_1" --description "The sample test fleet" --ec2-instance-type "c4.large" --fleet-type "ON_DEMAND" --build-id "build-1111aaaa-22bb-33cc-44dd-5555eeee66ff" --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" --peer-vpc-aws-account-id "111122223333" --peer-vpc-id "vpc-a11a11a"

可复制版本:

aws gamelift create-fleet --name "My_Fleet_1" --description "The sample test fleet" --fleet-type "ON_DEMAND" --MetricGroups "EMEAfleets" --build-id "build-1111aaaa-22bb-33cc-44dd-5555eeee66ff" --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" --peer-vpc-aws-account-id "111122223333" --peer-vpc-id "vpc-a11a11a"