我们使用机器学习技术将英文博客翻译为简体中文。您可以点击导航栏中的“中文(简体)”切换到英文版本。
从本地测试到云部署:Amazon GameLift 中的开发工作流程
在当今竞争激烈的游戏环境中,提供无缝的多人游戏体验对于优秀的游戏体验至关重要。游戏开发者在管理游戏服务器方面面临许多挑战,例如扩展服务器以满足玩家需求,管理游戏部署管道以及优化服务器队列以降低成本。从最初的开发到扩展全球玩家群,Amazon GameLift 通过提供强大的服务器托管和扩展解决方案来应对这些挑战。
让我们使用 Amazon GameLift Anywhere 探索可用的开发流程。它可以帮助游戏开发者选择和实施优秀方法,以满足业务、游戏和开发环境的要求。
了解 Amazon GameLift Anywhere:简化本地开发
Amazon GameLift Anywhere 利用 Amazon GameLift 功能和开发者托管的资源。Anywhere 队列通常用作迭代开发的测试环境,或与混合托管解决方案中的托管队列一起使用。本地开发和测试工作流程从本地工作站开始,游戏服务器在部署到 Amazon GameLift 托管的 Amazon Elastic Compute Cloud(Amazon EC2)队列或容器队列之前先在本地工作站上进行开发和测试。
在当地组建一支 Amazon GameLift Anywhere 舰队很快。您需要为本地工作站创建自定义位置,并将本地工作站注册为舰队计算源。需要 Amazon GameLift 临时认证令牌 (authToken) 才能连接到 Amazon GameLift API。AuthToken 使用亚马逊云科技命令行接口(亚马逊云科技 CLI)生成。通过创建本地游戏会话和连接到游戏会话的测试客户端,可以复制游戏会话活动。准备好过渡到 Amazon GameLift 托管队列后,创建 Amazon GameLift 托管队列,然后更改游戏服务器 initSDK() 代码调用以移除 Amazon GameLift Anywhere 队列参数。最后,创建编译资源并部署到 Amazon GameLift 托管队列。

图 1:Amazon GameLift 从本地开发到生产的部署流程。
以下详细介绍了使用 Amazon GameLift Anywhere 开发本地游戏服务器的步骤。
本地环境先决条件
- 准备好本地开发资源,可使用 Amazon GameLift 服务器软件开发工具包或适用于虚幻引擎或 Unity 的 Amazon GameLift 插件进行构建。
- 注意:使用虚幻引擎进行本地开发需要从源代码构建的虚幻编辑器来打包多人游戏的服务器组件。
- 下载最新版本的亚马逊云科技 CLI,安装和配置证书。
- 下载相应的 Amazon GameLift 服务器 SDK 或适用于 Unreal 或 Unity 的可用 Amazon GameLift 插件。
- 安装虚幻引擎的 Amazon GameLift 插件或适用于 Unity 的插件。

图 2:创建 Amazon GameLift Anywhere 队列。
创建 Amazon GameLift Anywhere 舰队
- 在亚马逊云科技管理控制台中,导航到 Amazon GameLift,然后导航到控制台中的任何地方队列,然后选择"随处创建队列"。
- 输入队列的名称、指标组的名称,然后选择
- 选择创建位置以创建自定义位置。
- 命名位置以反映本地开发环境,然后选择创建。
- 选择您刚刚命名的创建的自定义位置,然后选择提交。
- Amazon GameLift Anywhere 舰队将推出,计算类型为 Anywhere。

图 3:Amazon GameLift Anywhere — 创建自定义位置。
或者,您可以使用亚马逊云科技 CLI 创建地点和 Amazon GameLift Anywhere 队列。要开始,请输入以下代码:
aws gamelift create-location -–location-name custom-MyLocalMachine
aws gamelift create-fleet --name MyAnywhereFleet --compute-type ANYWHERE –locations "Location=custom-MyLocalMachine"
创建 Amazon GameLift Anywhere 队列和自定义位置后,使用亚马逊云科技 CLI 将本地工作站注册为队列计算,将本地工作站连接到 Amazon GameLift Anywhere 队列。IP 地址应反映本地开发工作站的公有 IP。
aws gamelift register-compute --compute-name MyLocalMachine --fleet-id arn:aws:gamelift:us-west-2: 111122223333:fleet/fleet- 2222bbbb-33cc-44dd-55ee-6666ffff77aa --ip-address 10.1.2.3 --location MyLocalMachine
要连接到 Amazon GameLift Anywhere 队列,请使用亚马逊云科技 CLI 为 Amazon GameLift Anywhere 队列获取 AuthToken。命令响应包括 authToken 字符串和过期时间戳值。记下过期时间戳值。计划在到期之前刷新代币很重要。
aws gamelift get-compute-auth-token --fleet-id arn:aws:gamelift:us-west-2:111122223333:fleet/fleet- 2222bbbb-33cc-44dd-55ee-6666ffff77aa --compute-name MyLocalMachine
响应语法应读作:
在游戏服务器代码中使用注册计算命令返回的 webSocketURL 值、authToken 字符串、本地位置名称、Amazon GameLift Anywhere 队列 ARN 和 processID 字符串作为 serverParameters 来连接 Amazon GameLift Anywhere 队列。
以下 Amazon GameLift C++ SDK 集成代码片段使用了 Amazon GameLift Anywhere 服务器参数的示例值。
要过渡到 Amazon GameLift 托管队列,请在 initSDK() 调用中删除或注释掉服务器参数和 serverParameter 变量。生成编译资源并部署到 Amazon GameLift 托管队列。ServerParameter 值使用启动变量或环境变量进行设置,游戏服务器逻辑决定何时使用它们。
本地游戏服务器测试
创建 Amazon GameLift Anywhere 队列、注册本地工作站和完成游戏服务器集成工作后,可以在本地构建和运行游戏服务器,同时使用 Amazon GameLift Anywhere 队列作为计算资源。该队列支持游戏服务器后端与 Amazon GameLift 集成,并允许在本地预置游戏会话以进行测试。
队列、会话和 Amazon GameLift FlexMatch 等 Amazon GameLift 功能可在测试游戏服务器时使用。要启动 Amazon GameLift 功能进行测试,请创建队列、FlexMatch 配对规则集、配对配置、游戏会话和玩家会话。
从 Amazon GameLift 队列开始,使用亚马逊云科技 CLI 创建 Amazon GameLift 会话队列。
aws gamelift create-game-session-queue --name "MyQueue" --destinations DestinationArn=arn:aws:gamelift:region: 111122223333:fleet/fleet- 2222bbbb-33cc-44dd-55ee-6666ffff77aa --timeout-in-seconds 600
创建 Amazon GameLift FlexMatch 配对规则集和配对配置。
定义配对规则集后,参考之前创建的规则集和队列创建 Amazon GameLift FlexMatch 配对配置。
aws gamelift create-matchmaking-configuration --name "MyMatchmakingConfig" --description "Basic matchmaking configuration" --game-session-queue-arns "arn:aws:gamelift:us-west-2: 111122223333:gamesessionqueue/MyQueue" --request-timeout-seconds 60 --rule-set-name "MyRuleSet" --notification-target "arn:aws:sns:region:account:MyMatchmakingTopic"
要使用亚马逊云科技 CLI 以简单的多人游戏场景开始配对,请参考之前创建的配对配置。识别测试玩家 ID 和唯一的门票 ID。
Amazon GameLift Anywhere 舰队现在有了队列、配对规则和配对配置。舰队已经为游戏和玩家会话做好了准备。
在 Amazon GameLift Anywhere 舰队中创建游戏和玩家会话。
aws gamelift create-game-session --fleet-id "fleet- 2222bbbb-33cc-44dd-55ee-6666ffff77aa" --maximum-player-session-count 2
使用从 create-game-session 命令生成的游戏会话 ID 来创建玩家会话。
aws gamelift create-player-session --game-session-id "game-1234" --player-id "player-1"
本地测试的优势
本地测试工作流程从在开发计算机上启动游戏服务器进程开始。运行后,Amazon GameLift Anywhere 将提供队列资源,允许对集成点进行测试。在本地测试期间,游戏会话管理实现经过验证,以确认正确处理玩家连接、断开连接和会话状态变化。测试周期包括验证完整的玩家会话生命周期,从初始连接到游戏玩法再到最终断开连接。在整个过程中,Amazon GameLift Anywhere 支持监控服务器日志和指标,以识别问题和优化性能。
本地开发环境为开发人员提供了关键优势。游戏服务器代码调试使用个人开发环境 (IDE) 和工具近乎实时地进行,而测试则与生产类基础设施资源一起运行。该环境允许开发人员彻底验证会话管理逻辑并模拟制作游戏场景。
此外,监控服务器-客户端通信模式和分析性能指标可以验证您的游戏是否满足其性能目标。开发人员可以使用实际的 Amazon GameLift API 执行集成测试,验证游戏服务器在部署到生产环境后是否能按预期运行。玩家会话验证可确认正确的身份验证和授权流程,从而维护安全并防止未经授权的访问。
使用 Amazon GameLift Anywhere 进行基于容器的开发
使用容器和 Amazon GameLift Anywhere 开发多人游戏服务器将容器化的灵活性与 Amazon GameLift 的游戏基础设施功能相结合。这种集成使从开发到生产的环境保持一致。该工作流程利用 Docker 容器来打包游戏服务器和依赖项,从而允许跨环境进行相同的操作。这种方法支持快速的本地测试周期,同时保持生产配置。容器重建非常有效,共享配置可消除环境不一致性。
该开发架构结合了存储在 Amazon Elastic Container Registry (Amazon ECR) 中的 Docker 容器、用于本地测试的 Amazon GameLift Anywhere、用于服务集成的 Amazon GameLift SDK 和用于资源管理的亚马逊云科技 CLI 中。随着开发周期从本地测试到云部署,开发者可以使用 Amazon GameLift Anywhere 在本地测试容器化服务器。经过验证的容器会被推送到 Amazon ECR,以部署到 Amazon GameLift 托管的容器队列。本地和云之间这种一致的环境减少了故障排除开销,使团队能够专注于功能开发和优化。
对于使用容器进行本地开发,Amazon GameLift Anywhere 和 Amazon GameLift 容器队列建立在本地游戏服务器开发要求的基础上,并增加了对 Amazon ECR 存储库的需求。虽然不是本地开发所必需的,但该存储库托管的容器镜像由 Amazon GameLift 托管的容器队列用于生产部署。
如果使用适用于虚幻引擎或 Unity 的 Amazon GameLift 2.0 插件进行开发,则该插件将在 Amazon GameLift Anywhere 集成基础上进行扩展,同时简化向由 Amazon GameLift 管理的 Amazon EC2 或容器舰队的过渡。
在以下示例中,虚幻引擎插件用于创建亚马逊云科技用户认证配置文件、部署 Amazon GameLift Anywhere 支架,以及将游戏服务器编译版本过渡到 Amazon GameLift 托管容器队列。
虚幻引擎插件先决条件
- 你需要 GitHub 和 Epic Games 账号才能访问 GitHub 上的虚幻引擎项目。
- 虚幻编辑器版本 5.1、5.2、5.3、5.4、5.5 从源代码构建。
- 安装虚幻引擎的 Amazon GameLift 插件。
- 对于现有亚马逊云科技账户和用户,需要具有访问密钥 ID 和私有访问密钥的 Amazon Identity and Access Management (IAM) 用户。
- 虚幻游戏服务器版本。
- 安装了 Docker。
在虚幻编辑器中
- 选择 Amazon GameLift
- 选择 亚马逊云科技访问证书。

图 4:Amazon GameLift 插件 —亚马逊云科技访问证书。
如果需要亚马逊云科技账户和用户:
- 选择 "转到亚马逊云科技管理控制台"。
- 如果帐户和用户可以完成配置文件设置,请选择添加新配置文件。
第一个选项将引导您前往亚马逊云科技控制台创建账户和用户。注意:对于现有亚马逊云科技账户和用户,使用添加新配置文件需要 IAM 用户名、访问密钥 ID 和私有访问密钥。这些证书用于创建 Amazon GameLift 资源。
成功添加配置文件后,通过单击引导提示来引导配置文件。如果引导成功,则会显示一条消息,指示成功且引导状态为 Active。

图 5:Amazon GameLift 插件 — 成功的亚马逊云科技配置文件配置。
有了活跃的配置文件,本地开发人员就可以使用插件支持的 Amazon GameLift Anywhere 队列。利用现有 Amazon GameLift Anywhere 舰队或使用该插件创建的新舰队。设置游戏服务器路径并遵循 Anywhere 队列工作流程路径。
舰队可用后:
- 连接到 Anywhere 舰队。
- 将您的工作站注册为舰队计算。
本地工作站注册过程完成后,使用包含队列、Amazon GameLift FlexMatch 和游戏会话的 Amazon GameLift Anywhere 舰队启动和测试游戏服务器。

图 6:Amazon GameLift 插件 — 随处工作流程。
当您准备将游戏服务器版本过渡到由 Amazon GameLift 管理的 Amazon EC2 或容器队列时,该插件支持这些工作流程。对于容器,该插件使用 Docker 创建一个容器(如果容器尚不存在),并有选择地将容器镜像存储在 Amazon ECR 中。然后,开发人员通过选择"部署容器队列"将容器部署到单一或多位置的 Amazon GameLift 容器托管队列。

图 7:Amazon GameLift 插件 — 托管容器队列工作流程。
结论
选择使用 Amazon GameLift 开发工作流程从根本上决定了游戏开发生命周期和运营效率。Amazon GameLift Anywhere 是理想的起点,为开发者提供了本地开发和测试所需的灵活性。这种方法允许团队使用本地开发环境快速迭代。
基于容器的解决方案在此基础上构建,提供跨环境的一致性,并支持随需求增长的可扩展部署模式。Amazon GameLift Anywhere 与 Amazon GameLift 管理的 Amazon EC2 和容器舰队相结合,可实现无缝过渡。开发人员可以从游戏服务器本地开发到在类似生产的环境中进行测试,再到生产队列,而无需支付生产复制测试和暂存环境的成本。
试用工作流程和工具,告诉我们你的想法。联系亚马逊云科技代表,了解我们如何帮助加速您的业务。
进一步阅读
- 利用完全托管的容器在 Amazon GameLift 上托管全球范围的多人游戏
- 使用 Amazon GameLift Anywhere 托管混合游戏服务器
- 亚马逊云科技上基于多人会话的游戏托管
*前述特定亚马逊云科技生成式人工智能相关的服务仅在亚马逊云科技海外区域可用,亚马逊云科技中国仅为帮助您发展海外业务和/或了解行业前沿技术选择推荐该服务。