[SEO 副标题]
本指南帮助游戏开发人员使用 Amazon GameLift 和无服务器后端组件,在 AWS 上构建持久世界游戏并托管虚拟世界。该架构使用托管和无服务器组件来减少运营工作量,并根据玩家需求进行扩展。开发人员可以使用这种架构在 macOS 和 Windows 上开始进行持久的虚拟世界游戏开发。本指南包括基础设施即代码(IaC)自动化、用于设置依赖关系的配置脚本以及 Unity 客户端/服务器实施示例。
架构图
请注意:步骤 A-C 代表系统的后端,步骤 1-9 代表前端。
步骤 A
Amazon EventBridge 触发 WorldManager
AWS Lambda 每分钟运行一次。该函数通过 Amazon GameLift API 检查现有世界的状态。
步骤 B
WorldManager Lambda 函数将会话和世界的当前状态存储到 Amazon DynamoDB,以便更快地访问后端。
步骤 C
WorldManager 从 DynamoDB 查询已配置的世界,并通过调用 Amazon GameLift API CreateGameSession 来创建任何未运行的世界。
第 1 步
游戏客户端向 Amazon Cognito 身份池请求身份和凭证,以签署授权的 API 请求。
第 2 步
游戏客户端通过 Amazon API Gateway 请求世界名单。API Gateway 会触发 ListWorlds Lambda 函数,该函数从 DynamoDB 检查定义区域中的游戏会话信息。
第 3 步
游戏客户端通过 API Gateway 调用 JoinWorld Lambda 函数,请求加入特定区域的特定世界。
第 4 步
Lambda 函数会为玩家创建玩家会话,在 DynamoDB 中增加该世界的玩家数量,并将连接信息发送到游戏客户端。
第 5 步
客户端通过传输控制协议(TCP)直接连接到 Amazon GameLift 会话并发送玩家会话 ID。
第 6 步
Amazon GameLift 会话使用 Amazon GameLift 服务器软件开发工具包(SDK)验证玩家会话 ID。
第 7 步
Amazon GameLift 会检查特定世界的玩家数据,并根据需要更新玩家数据。在玩家离开后,该服务会存储玩家的最新位置。
第 8 步
Amazon GameLift 会话会检查 DynamoDB 是否按计划终止,并根据要求终止。
第 9 步
游戏服务器使用 CloudWatch 代理向 Amazon CloudWatch 发送日志和指标。
开始使用
Well-Architected 支柱
当您在云中构建系统时,AWS Well-Architected Framework 可以帮助您了解所做决策的利弊。框架的六大支柱使您能够学习设计和操作可靠、安全、高效、经济高效且可持续的系统的架构最佳实践。使用 AWS 管理控制台中免费提供的 AWS Well-Architected Tool,您可以通过回答每个支柱的一组问题,根据这些最佳实践来检查您的工作负载。
上面的架构图是按照 Well-Architected 最佳实践创建的解决方案示例。要做到完全的良好架构,您应该遵循尽可能多的 Well-Architected 最佳实践。
-
卓越运营
AWS Cloud Development Kit(AWS CDK)使用 AWS CloudFormation 控制资源更新和回滚,从而处理部署和更新。这样可以减少手动更改配置造成的错误。
对于 Amazon GameLift 实例集的更新,CloudFormation 将创建替代实例集。在终止旧实例集之前,该服务将等待替代实例集完全激活以接受流量。
-
安全性
游戏客户端使用 Amazon Cognito 身份池身份来确保对后端服务的访问安全。这通过使用身份池提供的 AWS 身份和访问管理(IAM)凭证签署请求来实现。只有经过身份验证的请求才能访问 API Gateway 托管的 API。此外,游戏客户端只能访问自己账户的数据。
-
可靠性
如果游戏服务器(以及随之而来的游戏世界)崩溃,该架构将自动用一个新的世界替换该世界,新的世界可以访问该特定世界的相同持久化数据。
-
性能效率
Amazon GameLift 可以实现客户端与服务器的直接通信,以优化近乎实时的性能。使用该架构,开发人员就可以在多个 AWS 区域托管游戏服务器,从而减少游戏客户端和服务器之间的延迟。
-
成本优化
该架构采用了包括 API Gateway、Lambda 和 DynamoDB 在内的无服务器组件,可根据玩家流量支付精确的资源量费用,从而降低成本。此外,Amazon GameLift 可根据需求进行扩展配置,这样您在任何时候都可以确保未使用资源的资源处于最低水平。
-
可持续性这种架构使用托管和无服务器服务,仅运行当前玩家负载所需的资源,从而减少您个人对环境的影响。
相关内容
免责声明
示例代码;软件库;命令行工具;概念验证;模板;或其他相关技术(包括由我方人员提供的任何前述项)作为 AWS 内容按照《AWS 客户协议》或您与 AWS 之间的相关书面协议(以适用者为准)向您提供。您不应将这些 AWS 内容用在您的生产账户中,或用于生产或其他关键数据。您负责根据特定质量控制规程和标准测试、保护和优化 AWS 内容,例如示例代码,以使其适合生产级应用。部署 AWS 内容可能会因创建或使用 AWS 可收费资源(例如,运行 Amazon EC2 实例或使用 Amazon S3 存储)而产生 AWS 费用。
本指南中提及第三方服务或组织并不意味着 Amazon 或 AWS 与第三方之间存在认可、赞助或从属关系。AWS 的指导是一个技术起点,您可以在部署架构时自定义与第三方服务的集成。