创建亚马逊GameLift托管舰队 - 亚马逊 GameLift
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

创建亚马逊GameLift托管舰队

使用任一亚马逊GameLift控制台或者Amazon Command Line Interface(Amazon CLI) 来创建托管舰队。

创建新的托管 EC2 队列后,该队列的状态将经历几个阶段,即 AmazonGameLift部署舰队并安装和启动游戏服务器。舰队到达后已准备好举办游戏会话ACTIVE状态。有关队组创建问题的帮助,请参阅调试亚马逊GameLift舰队问题

Console
创建托管 EC2 队列
  1. 亚马逊GameLift控制台,在导航窗格中,选择舰队

  2. Fleets (机群)页面上,选择Create fleet (创建机群)

  3. 选择托管 EC2

  4. 舰队详情页面执行以下操作:

    1. 对于姓名,输入舰队名称。我们建议在您的舰队名称中包含舰队类型(Spot 或按需)。这使得在查看舰队列表时可以更轻松地识别舰队类型。

    2. 对于描述,请简要描述舰队。

    3. 对于二进制类型,选择构建要么脚本定义亚马逊的游戏服务器类型GameLift部署到这支舰队。

    4. 选择一个脚本要么构建从已上传的脚本或版本的下拉列表中。

  5. (可选)下方其他细节用于以下内容:

    1. 对于实例角色,选择要与此队列关联的 IAM 角色。如果您使用的是亚马逊GameLift版本大于 5.x 的 SDK,然后使用GetFleetRoleCredentials操作。访问Amazon角色中定义的服务。有关与之合作的车队的更多信息Amazon服务,请参阅与您的车队中的其他Amazon资源进行通信。要创建具有实例角色的队列,您的账户必须拥有 IAMPassRole许可。有关更多信息,请参阅亚马逊 IAM 权限示例 GameLift

      创建队列后,您无法更新实例角色。

      注意

      我是AssumeRole适用于使用 5.x 以下版本的 SDK 的舰队。只有 SDK 5.0 或更高版本的队列无法使用代入角色功能。

    2. 对于指标组,输入新的或现有舰队指标组的名称。您可以通过将多个队列添加到同一个指标组来聚合多个队列的指标。

      队列创建后,您无法更新指标组。

  6. 选择下一步

  7. 选择地点页面上,选择一个或多个其他远程位置来部署实例。系统会根据您访问控制台的区域自动选择主区域。如果您选择其他位置,则队列实例也将部署在这些位置。

    重要

    要使用默认情况下未启用的区域,请在您的区域中将其启用Amazon Web Services 账户。

    • 如果您在 2022 年 2 月 28 日之前创建的未启用区域的舰队不受影响。

    • 要创建新的多地点舰队或更新现有的多地点舰队,请先启用您选择使用的任何区域。

    有关默认情况下未启用的区域以及如何启用这些区域的更多信息,请参阅管理Amazon Web Services 区域Amazon Web Services 一般参考

  8. 选择下一步

  9. 定义实例详情页面,选择

    1. 点播要么现场此舰队的实例。有关舰队类型的更多信息,请参阅按需实例与竞价型实例

    2. 来自过滤器架构菜单选择x64要么手臂

      注意

      Graviton Arm 实例需要亚马逊GameLift服务器在 Linux 操作系统上构建。C++ 和 C# 需要服务器 SDK 5.1.1 或更高版本。Go 需要服务器 SDK 5.0 或更高版本。这些实例不提供out-of-the-box支持在亚马逊 Linux 2023 (AL2023) 或亚马逊 Linux 2 (AL2) 上安装 Mono。

      有关 Amazon EC2 Arm 架构的信息,请参阅AmazonGraviton 处理器亚马逊 EC2 实例类型

    有关亚马逊支持的实例类型的信息GameLift,请参阅EC2InstanceType值低于CreateFleet() 请求参数

  10. 选择亚马逊 EC2实例类型从列表中。有关选择实例类型的更多信息,请参阅实例类型。创建队列后,您无法更改实例类型。

  11. 选择下一步

  12. 配置运行时页面,下方运行时配置请执行以下操作:

    1. 对于启动路径,在你的版本或脚本中输入游戏可执行文件的路径。在 Windows 实例上,游戏服务器生成到路径 C:\game。在 Linux 实例上,游戏服务器的构建目标是/local/game。示例:C:\game\MyGame\server.exe/local/game/MyGame/server.exe,或MyRealtimeLaunchScript.js

    2. (可选)对于启动参数,输入要作为一组命令行参数传递给游戏可执行文件的信息。示例:+sv_port 33435 +start_lobby

    3. 对于并行进程,选择要在队列中的每个实例上同时运行的服务器进程数。查看亚马逊GameLift 限制关于并发服务器进程的数量。

      对每个实例的并发服务器进程数的限制应用到所有配置的并发进程总数上。如果您将队列配置为超过限制,则队列将无法激活。

  13. 下方游戏会话激活,提供了在此队列中的实例上激活新游戏会话的限制:

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

    2. 对于新的激活超时,输入等待会话激活的时间。如果游戏会话未移至ACTIVE超时前的状态,亚马逊GameLift终止游戏会话激活。

  14. (可选)下方EC2 端口设置,请执行以下操作:

    1. 选择添加端口设置定义连接队列上部署的服务器进程的入站流量的访问权限。

    2. 对于类型,选择自定义 TCP要么自定义 UDP

    3. 对于端口范围,输入允许入站连接的端口号范围。端口范围必须使用以下格式nnnnn[-nnnnn],其值介于 1026 和 60000 之间。示例:15001500-20000

    4. 对于IP 地址范围,输入 IP 地址范围。使用 CIDR 表示法。示例:0.0.0.0/0(此示例允许尝试连接的任何人的访问。)

  15. (可选)下方游戏会话资源设置请执行以下操作:

    1. 对于游戏缩放保护政策,开启或关闭缩放保护。亚马逊GameLift如果他们正在托管活跃的游戏会话,则不会在缩小规模活动期间终止有保护的实例。

    2. 对于资源创建限制,输入玩家在策略期内可以创建的最大游戏会话数。

  16. 选择下一步

  17. (可选)通过输入向版本添加标签钥匙价值对。选择下一步继续审查舰队创建情况。

  18. 选择创建。亚马逊GameLift为新舰队分配一个 ID 并开始舰队激活过程。您可以在 Fleets (队组) 页面上跟踪新队组的状态。

无论队列状态如何,您都可以随时更新舰队的元数据和配置。有关更多信息,请参阅管理您的亚马逊GameLift车队:您可以在舰队达到活动状态后更新舰队容量。有关更多信息,请参阅扩展亚马逊GameLift托管容量:您也可以添加或删除远程位置。

Amazon CLI

要使用创建舰队Amazon CLI,打开命令行窗口并使用create-fleet命令。有关 create-fleet 命令的更多信息,请参阅《Amazon CLI 命令参考》中的 create-fleet

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

  • 队列使用 c5.large 按需实例,其操作系统适用于所选游戏版本。

  • 它部署指定的游戏服务器版本,该版本必须在准备好了状态显示为以下位置:

    • us-west-2(主区域)

    • sa-east-1(远程位置)

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

  • 在每个实例上,亚马逊GameLift允许同时激活两个新的游戏会话。如果玩家还没有准备好在 300 秒内接待玩家,它还会终止任何激活的游戏会话。

  • 在该队组中的实例上托管的所有游戏会话将会开启游戏会话保护。

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

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

  • 亚马逊GameLift将此队列的指标添加到EMEAfleets指标组,(在本例中)它合并了欧洲、中东和非洲地区所有车队的指标。

aws gamelift create-fleet \ --name SampleFleet123 \ --description "The sample test fleet" \ --ec2-instance-type c5.large \ --region us-west-2 \ --locations "Location=sa-east-1" \ --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" \ --metric-groups "EMEAfleets"

如果创建队列请求成功,亚马逊GameLift返回一组队列属性,其中包括您请求的配置设置和新的舰队 ID。亚马逊GameLift然后启动舰队激活过程并将舰队状态和位置状态设置为全新。您可以使用以下 CLI 命令跟踪队组的状态并查看其他队组信息:

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