创建 Amazon GameLift 托管EC2车队 - Amazon GameLift

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

创建 Amazon GameLift 托管EC2车队

本主题介绍如何创建 Amazon GameLift 托管EC2队列。托管队伍使用针对多人游戏托管进行了优化的亚马逊弹性计算云 (AmazonEC2) 计算实例。您可以创建托管队列,将计算部署到全球 AWS 区域 和 Amazon 支持的 Local Zones。 GameLift

当您创建新的托管EC2队列时,队列创建过程会立即开始。在 Amazon GameLift 准备您的游戏服务器构建、部署已安装版本的实例以及在每个EC2实例上启动游戏服务器时,托管队列会经历多个阶段。你可以在控制台中或使用 uring AWS Command Line Interface (AWS CLI) 监控舰队的状态。舰队状态达到时已准备好举办游戏会话ACTIVE。有关创建托管队列的更多信息,请参阅以下主题:

创建托管EC2车队

使用 Amazon GameLift 控制台或 AWS Command Line Interface (AWS CLI) 创建托管EC2队列。

Console

Amazon GameLift 控制台中,使用导航窗格打开 Fleets 页面。选择创建队列以启动队列创建工作流程。

步骤 1 选择计算类型

选择 “托管” EC2 选项,然后选择 “下一步”。

第 2 步:定义舰队详情

在此步骤中,指定一些队列范围的设置。

对于最少的舰队配置:
  • 提供舰队名称。

  • 选择二进制类型并指定上传的版本或脚本。

  • 跳过有关其他详细信息和标签的部分。

  1. 填写舰队详情部分:

    1. 输入舰队名称。我们建议使用舰队命名模式,以便在查看舰队列表时更容易识别舰队类型。

    2. 提供舰队的简短描述

    3. 对于二进制类型,选择 “构建” 以表示您正在部署自定义游戏服务器版本;如果要将实时服务器部署到此队列,请选择 “脚本”。从下拉列表中选择已上传的版本或脚本。

  2. (可选)根据需要设置其他详细信息

    1. 如果您的游戏服务器可执行文件需要访问您账户中的其他 AWS 资源,请指定具有必要权限的IAM实例角色。有关更多信息,包括如何授权其他服务器端应用程序(例如 CloudWatch 代理),请参阅与舰队中的其他 AWS 资源进行沟通。创建舰队后无法更改此设置。

      在创建使用该角色的舰队之前,必须先创建该角色。此外,要创建具有实例角色的队列,您的 AWS 用户必须拥有IAMPassRole权限(请参阅Amazon GameLift 的 IAM 权限示例)。

    2. 打开生成TLS证书选项为您的游戏设置身份验证和加密,游戏客户端在连接和加密所有客户端/服务器通信时使用此证书对游戏服务器进行身份验证。对于TLS已启用该证书的队列中的每个实例,Amazon GameLift 还会使用该证书创建一个新DNS条目。创建舰队后无法更改此设置。

    3. 如果要合并此队列和其他队列的指标数据,请指定指标组名称。对要合并的所有队列使用相同的指标组名称。查看指标组的指标以查看聚合数据。

  3. (可选)向舰队资源添加标签。每个标签都包含定义的一个密钥和一个可选值。为要按用途、所有者或环境等有用方式分类的 AWS 资源分配标签。为每个要添加的标签选择添加新标签

  4. 选择 “下一步” 继续工作流程。

步骤 3 定义实例详细信息

在此步骤中,指定要使用的托管资源类型以及要将其部署到何处。通过选择多个位置,您可以将游戏服务器部署到更广泛的地理位置,从而使它们更接近您的玩家并最大限度地减少延迟。并非所有EC2实例类型在所有地点都可用。

对于最少的舰队配置:
  • 不要添加远程位置。

  • 将舰队类型设置为 “按需”。Spot 舰队需要额外的设置工作。

  • 将实例类型设置为 “c5.large”。这种常用的实例类型在所有版本中都可用 AWS 区域。

  1. 实例部署中,指定队列的位置和类型。

    1. 选择一个或多个您要部署队列实例的其他地点。这些远程位置将添加到舰队的主位置(已预先选择),这是您创建此舰队 AWS 区域 的地方。您可以从 Amazon GameLift 支持的所有区域 AWS 区域 和 Local Zones 中选择远程位置。

      要详细了解受支持的地点,包括如何使用默认未启用的位置,亚马逊 GameLift 服务地点请参阅托管主机。 AWS 区域 另请查看 Amazon 对每个车队的位置 GameLift 配额

    2. 选择为此队列使用按需实例或竞价型实例。有关实例集类型的更多信息,请参阅按需型实例和竞价型实例

  2. 选择符合您需求且可在所有选定位置使用的 Amazon EC2 实例配置。此列表是根据您当前的位置和车队类型选择进行筛选的。您可以按其他因素(例如实例类型系列和架构)对其进行进一步筛选。创建实例集后无法更改实例类型。

    某些位置的实例类型选项有限。如果您的首选实例类型并非适用于所有地点,请选择位置可用性值以查看完整详细信息。为了适应所有地点,您可能需要创建具有不同实例类型的单独队列。

    有关选择实例类型的更多信息,请参阅实例类型。要了解有关 Amazon A EC2 rm 架构的更多信息,请参阅 AWS Graviton Processor 和 A mazon EC2 实例类型。有关 Amazon 支持的实例类型的完整列表 GameLift,请参阅 EC2InstanceType(CreateFleet()) 的API参考资料。

    注意

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

  3. 选择 “下一步” 继续工作流程。

步骤 4 配置运行时

在此步骤中,描述您希望队列中的每个实例如何运行您的游戏服务器软件。为要在实例上运行的每个可执行文件定义一个单独的服务器进程行项目,并决定每个服务器进程中有多少个同时运行。在每个实例上打开端口,允许玩家直接连接到游戏服务器。您可以随时更新这些队列设置。

对于最少的舰队配置:
  • 为游戏服务器可执行文件定义单个服务器进程行项目。如果您的游戏服务器需要运行其他进程,请同时为每个进程创建一个定义。

  • 对每个行项目使用默认的并发进程数 (1)。

  • 跳过游戏会话激活设置。

  • 指定单个端口号。

  • 跳过游戏会话资源设置。

  1. 创建运行时配置,指示 Amaz GameLift on 如何在队列中的每个实例上运行服务器进程。部署后,您可以随时更改队列的运行时配置。

    1. 输入版本中可执行文件的启动路径。在 Windows 实例上,游戏服务器可执行文件按路径C:\game构建。在 Linux 实例上,游戏服务器的构建到 /local/game。示例:C:\game\MyGame\server.exe/local/game/MyGame/server.exeMyRealtimeLaunchScript.js

    2. 输入可选的 Launch 参数以传递给您的游戏可执行文件。示例:+sv_port 33435 +start_lobby

    3. 指定要在每个实例上运行的并发进程数。对于游戏服务器可执行文件,每个进程可以托管一个游戏会话,因此并发进程决定了该实例可以同时托管的游戏会话数量。

      查看每个实例的服务器进程的 Amazon GameLift 配额。这些配额适用于所有配置的并发进程总数。如果您将队列配置为超过这些值,则队列将无法激活。

  2. 使用游戏会话激活默认值或为您的游戏进行自定义。如果运行时配置要求每个实例有多个并发游戏服务器进程,则这些设置将决定新游戏会话启动的速度。

    1. 设置最大并发游戏会话激活次数,以限制正在准备新游戏会话的实例上的游戏服务器数量。当启动多个新游戏会话需要大量资源并且可能会影响其他正在运行的游戏会话的性能时,此设置非常有用。

    2. 设置新激活超时,以反映新游戏会话完成激活和向接待玩家报告所需的最长时间。如果游戏 GameLift会话激活超过此值,Amazon 就会终止激活。

  3. 打开EC2端口设置以允许入站流量访问队列中的服务器进程。创建舰队不需要这些设置,但你需要先进行设置,然后玩家才能连接到舰队上的游戏会话。

    对于每个端口设置,选择用于游戏客户端和游戏服务器之间通信的数据传输协议类型。使用CIDR表示法提供端口范围(格式nnnnn[-nnnnn])和 IP 地址范围(例如0.0.0.0/0允许任何人访问)。

    如果您需要设置多个不连续的范围,请创建多个端口设置。

  4. 指定可选的游戏会话资源设置。部署后,您可以随时更新这些设置。

    1. 为队列中的所有实例开启或关闭游戏扩展保护策略。在缩减活动期间,如果受保护的队列实例正在托管活跃的游戏会话,Amazon GameLift 不会终止这些实例。

    2. 如果您想限制一个玩家在指定时间段内可以创建的游戏会话数量,请设置资源创建的最大限制。

  5. 选择 “下一步” 继续工作流程。

第 5 步查看并创建

在创建队列之前,请检查您的设置。尽管有些设置可以在以后更新(请参阅更新 Amazon GameLift 舰队配置),但创建队列后不允许更改以下设置:

  • 计算类型:您无法将托管EC2队列转换为 Anywhere 队列。

  • 版本或脚本:要将更新部署到您的游戏服务器版本或脚本,您必须创建一个新的舰队。

  • 其他选项,包括实例角色和TLS证书生成。

  • 实例详细信息,包括队列类型(竞价型或按需型)和EC2实例类型。

当您准备好部署新队列时,请选择创建。Amazon GameLift 立即开始机队激活流程,分配一个唯一 ID 并将车队置于NEW状态。从 “舰队” 页面跟踪舰队的进度。查看舰队的详细信息页面并转到 “事件” 选项卡。

在队列达到ACTIVE状态后,您可以调整队列的托管容量。Amazon GameLift 最初在每个队列位置部署一个带有单个实例的队列。然后您可以通过向每个位置添加实例来调整容量。有关更多信息,请参阅 通过 Amazon 扩展游戏托管容量 GameLift

AWS CLI

使用create-fleet命令创建计算类型的队列EC2。Amazon 以您当前的默认值 GameLift 创建舰队资源 AWS 区域 (或者您可以添加--region标签来指定其他资源 AWS 区域)。

创建最低限度的托管车队

以下示例请求创建了一个具有最低设置的新队列,这些设置是部署包含游戏客户端可以连接的正在运行的游戏服务器的队列所必需的。新舰队具有以下特征:

  • 它指定了游戏服务器版本,该版本已上传到亚马逊 GameLift 并处于READY状态。

  • Is 使用 c5.large 按需实例,其操作系统与所选游戏版本相匹配。

  • 它将舰队的总部设置 AWS 区域 为该区域,us-west-2并将实例部署到该区域。

  • 根据运行时配置,队列中的每台计算都运行一个游戏服务器进程,这意味着每台计算一次只能托管一个游戏会话。游戏会话激活超时设置为默认值 300 秒,并且对并发激活次数没有限制。

  • 玩家可以使用单端口设置连接到游戏服务器33435

  • 所有其他功能要么已关闭,要么使用默认设置。

aws gamelift create-fleet \ --name MinimalFleet123 \ --description "A basic test fleet" \ --region us-west-2 \ --ec2-instance-type c5.large \ --fleet-type ON_DEMAND \ --build-id build-1111aaaa-22bb-33cc-44dd-5555eeee66ff \ --runtime-configuration "ServerProcesses=[{LaunchPath=C:\game\Bin64.dedicated\MultiplayerSampleProjectLauncher_Server.exe, ConcurrentExecutions=10}]" \ --ec2-inbound-permissions "FromPort=33435,ToPort=33435,IpRange=0.0.0.0/0,Protocol=UDP"

创建完全配置的托管车队

以下示例请求创建了一个包含所有可选功能设置的生产队列。新舰队具有以下特征:

  • 它指定了游戏服务器版本,该版本已上传到亚马逊 GameLift 并处于READY状态。

  • 它使用 c5.large 按需实例,其操作系统与所选游戏版本相匹配。

  • 它将舰队的总部设置 AWS 区域 为所在地区us-west-2和一个远程位置,并将实例部署到主区域和一个远程位置sa-east-1

  • 根据运行时配置:

    • 队列中的每台计算使用相同的启动参数运行 10 个游戏服务器进程,这意味着每台计算最多可以同时托管 10 个游戏会话。

    • 在每台计算机上,只能同时激活两个游戏会话。激活游戏会话必须在 300 秒(5 分钟)内准备好接待玩家,否则将终止。

  • 玩家可以使用以下范围内的端口连接到游戏服务器33435 to 33535

  • 它为游戏客户端和服务器之间的加密通信生成TLS证书。

  • 舰队中的所有游戏会话都开启了游戏会话保护。

  • 个人玩家只能在 15 分钟内创建三个新游戏会话。

  • 该队列的指标包含在指标组中AMERfleets,该组(在本例中)汇总了北美、中美洲和南美洲一组舰队的指标。

aws gamelift create-fleet \ --name ProdFleet123 \ --description "A fully configured prod fleet" \ --ec2-instance-type c5.large \ --region us-west-2 \ --locations "Location=sa-east-1" \ --fleet-type ON_DEMAND \ --build-id build-1111aaaa-22bb-33cc-44dd-5555eeee66ff \ --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=33535,IpRange=0.0.0.0/0,Protocol=UDP" \ --metric-groups "AMERfleets"

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

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