构建基于云的测试环境
注意
本主题介绍与 Amazon GameLift 服务器 SDK 版本 5.x 集成的游戏的迭代测试。如果您的游戏使用的是服务器 SDK 版本 4.x 或更早版本,请参阅使用 Amazon GameLift Local 测试您的集成。
使用 Amazon GameLift Anywhere 实例集在基于云的托管环境中迭代构建和测试您的游戏组件。创建具有托管资源并连接到 Amazon GameLift 服务的 Anywhere 实例集,在其上运行游戏服务器,并根据需要测试游戏功能。
使用 Amazon GameLift 代理部署 Anywhere 实例集
如果您的游戏服务器生成包与 Amazon GameLift SDK 5.x 或更高版本集成,您可以使用 Amazon GameLift 代理将其部署到基于云的 Anywhere 实例集。该代理是一个后台进程,用于管理游戏服务器生命周期以及实例集中每个计算上的其他任务。这些任务包括将计算注册到 Anywhere 实例集、获取身份验证令牌,以及根据一组指令启动/停止游戏服务器进程。该代理由实例集的运行时配置控制,在实例集生命周期内,您可以随时更新这些配置。(该代理会自动部署到托管式 EC2 实例集。) 要了解更多信息以及如何下载该代理,请参阅 Amazon GameLift GitHub 存储库
使用 Amazon EC2 设置迭代测试
使用此 Amazon GameLift Toolkit 解决方案
GitHub 存储库提供一组脚本,用于自动执行使用 Amazon GameLift Anywhere 和 Amazon GameLift 代理设置测试环境的大部分流程。它还针对在有新游戏服务器生成包要测试时更新环境提供指导。您可以运行一个脚本来部署具有示例游戏服务器生成包的测试环境,也可以使用您自己的游戏服务器生成包逐步设置它。
在此工作流程中,您将完全通过 AWS Management Console 操作,使用 AWS CloudShell 来运行脚本和完成命令行任务。
注意
对于本教程中的任务,您需要一个具备以下服务权限的 AWS 账户用户:Amazon GameLift、AWS CloudShell、Amazon S3、AWS Systems Manager、Amazon EC2 和 AWS Identity and Access Management。拥有对 AWS 账户的管理员级访问权限的用户已经拥有所需的权限。
此工作流程包含以下任务:
-
为 Amazon GameLift 打包游戏服务器生成包。此工作流程提供了一个用于构建示例 C++ 游戏服务器的脚本,该游戏服务器已与 Amazon GameLift 服务器 SDK 5.x 集成,随时可以进行托管。如果您已完成集成,也可以使用自己的游戏项目。
-
设置 Amazon Simple Storage Service 存储桶以存储游戏服务器生成包和依赖项。当您生成新版本的游戏生成包时,您可以将其存储在 S3 中,并使用脚本更新 Anywhere 实例集以进行游戏测试。
获取并构建 Amazon GameLift 代理。该代理将根据您的配置来管理托管资源上的游戏服务器进程。它使用的逻辑和行为与 Amazon GameLift 托管式 EC2 托管相同。
为托管资源设置 Anywhere 实例集。有了 Anywhere 实例集,您就可以将 Amazon GameLift 服务用于不受 Amazon GameLift 管理的托管资源。在此步骤中,您还将配置运行时配置,该配置指示 Amazon GameLift 代理何时以及如何启动游戏服务器进程。
设置 Amazon EC2 实例。这是用于迭代测试的测试环境。使用标准 EC2 实例比使用完全托管式 Amazon GameLift 实例(针对生产级使用进行了优化)速度要快得多。使用标准 EC2 实例时,您可以根据需要快速且持续地更新游戏服务器。
-
将游戏服务器生成包和 Amazon GameLift 代理部署到 Amazon EC2 实例。此工作流程提供了一个脚本,用于获取最新版本的游戏生成包和所有依赖项,并将其安装到您的 EC2 实例上。在此工作流程中,依赖项包括 Amazon GameLift 代理和 CloudWatch 代理。
-
启动 Amazon GameLift 代理。安装后,该代理会自动启动并开始执行指令。这些指令包括:
-
将 EC2 实例注册为 Amazon GameLift Anywhere 实例集中的计算。
-
与 Amazon GameLift 服务建立 WebSocket 连接,并获取最新的运行时配置。
-
根据运行时配置中的指令启动游戏服务器进程。在此工作流程中,该代理会按照指令启动游戏服务器可执行文件的单个进程。
-
-
测试游戏场景。设置好测试环境并安装好最新的游戏服务器生成包后,就可以开始测试了。此工作流程将引导您完成多个测试步骤,包括启动游戏会话。访问 CloudWatch 游戏服务器日志,以便在游戏会话启动并准备接受玩家时跟踪进度。
在开发游戏组件(包括游戏客户端和客户端后端服务)时,可以将其包含在测试场景中。使用游戏客户端请求游戏会话,从 Amazon GameLift 服务中检索连接信息,然后直接连接到游戏会话。
部署新的游戏服务器生成包并重复测试。在开发游戏时,您可以生成新的游戏服务器生成包,然后快速将其部署到 EC2 测试环境进行测试。将它们上传到 Amazon S3 存储桶,然后使用工作流程脚本更新测试环境。
将您的游戏过渡到 Amazon GameLift 托管式实例集
在完成开发测试并准备好发布后,就可以切换到 Amazon GameLift 托管式实例集了。使用托管式实例集来微调和测试游戏托管资源。实施游戏会话放置解决方案(队列和对战构建器),选择最佳托管硬件(包括竞价型实例集)和位置,然后选择容量扩展策略。您可能还想开始使用 AWS CloudFormation 来更有效地管理所有游戏托管资源的生命周期,包括实例集、队列和对战构建器。
从基于云的 Anywhere 测试实例集过渡到 Amazon GameLift 托管式实例集的工作量很少。您无需更改任何游戏代码,而且可以重复使用相同的队列和对战构建器。请执行以下任务:
-
创建 Amazon GameLift 生成包资源。使用 Anywhere 测试实例集时,您必须手动将游戏服务器生成包和依赖项部署到每个实例集计算。使用托管式实例集时,请将您的游戏生成包上传到 Amazon GameLift,后者会自动将生成包部署到所有实例集计算。请参阅为 Amazon GameLift 托管部署自定义服务器生成包,详细了解如何打包游戏生成包文件以及在 Amazon S3 存储桶中创建包含文件的生成包资源。
创建托管式实例集。使用控制台或 AWS CLI 创建一个实例集,并指定 EC2 托管式实例集。这种类型的实例集需要额外的配置设置,包括指定生成包资源和实例类型。您可以使用相同的运行时配置来管理每个实例集计算上的游戏服务器生命周期。请参阅创建 Amazon GameLift 托管式 EC2 实例集,详细了解如何创建托管式实例集。
重定向实例集别名(可选)。如果您设置了要用于 Anywhere 实例集的别名,则可以对托管式实例集使用相同的别名。请参阅创建 Amazon GameLift 别名,详细了解如何创建或更新别名。