带有无服务器后端的独立游戏会话服务器
使用无服务器客户端服务架构,后端可以从高度可扩展的数据库中查看对战票证的状态,而不必直接访问Amazon GameLift API。
下图显示了通过 AWS 服务 构建的无服务器后端,该后端可将玩家匹配到在 Amazon GameLift 实例集上运行的游戏。下表提供了对每个带编号的注解的说明。要尝试此示例,请参阅 GitHub 上基于多人会话的 AWS 上的游戏托管

-
游戏客户端从 Amazon Cognito 身份池中请求 Amazon Cognito 用户身份。
-
游戏客户端接收临时访问凭证,并通过 Amazon API Gateway API 请求游戏会话。
-
API Gateway 调用一个 AWS Lambda 函数。
-
Lambda 函数从 Amazon DynamoDB NoSQL 表中请求玩家数据。该函数在请求上下文数据中提供 Amazon Cognito 身份。
-
Lambda 函数通过 Amazon GameLift FlexMatch 对战请求匹配。
-
FlexMatch 匹配一组具有适当延迟的玩家,然后通过 Amazon GameLift 队列请求游戏会话放置。队列中有包含一个或多个 AWS 区域位置的实例集。
-
Amazon GameLift 将会话放到其中一个实例集的位置后,Amazon GameLift 向 Amazon Simple Notification Service(Amazon SNS)主题发送一个事件通知。
-
Lambda 函数接收并处理 Amazon SNS 事件。
-
如果对战票证是一个
MatchmakingSucceeded
事件,那么 Lambda 函数会将结果以及游戏服务器的端口和 IP 地址写入 DynamoDB 表。 -
游戏客户端向 API Gateway 发出签名请求,以查看特定时间间隔内的对战票证状态。
-
API Gateway 使用 Lambda 函数来检查对战票证状态。
-
Lambda 函数会检查 DynamoDB 表以查看票证是否成功。如果成功,该函数会将游戏服务器的端口和 IP 地址以及玩家会话 ID 发送回客户端。如果票证未成功,则该函数会发送响应,确认匹配尚未准备就绪。
-
游戏客户端使用后端服务提供的端口和 IP 地址,使用 TCP 或 UDP 连接到游戏服务器。然后,游戏客户端将玩家会话 ID 发送到游戏服务器,然后游戏服务器使用 Amazon GameLift 服务器软件开发工具包验证该 ID。