本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
将游戏与亚马逊 GameLift 实时服务器集成
本主题简要介绍 Amazon GameLift 的实时服务器。概述解释了此解决方案何时适合您的游戏,以及Realtime Servers如何支持多人游戏。
有关启动和运行游戏的完整路线图,请参阅亚马逊 GameLift 托管托管路线图。
要试用亚马逊 GameLift 游戏服务器托管,请参阅开始使用使用 Amazon GameLift。
什么是实时服务器?
实时服务器是亚马逊 GameLift 提供的轻量级 ready-to-go 游戏服务器,供您在多人游戏中使用。实时服务器取消了自定义游戏服务器的开发、测试和部署过程。该解决方案可以帮助最大限度地减少完成游戏所需的时间和精力。
主要功能
-
用于游戏客户端和服务器交互的完整网络堆栈
-
游戏服务器的核心功能
-
可定制的服务器逻辑
-
实时更新实时配置和服务器逻辑
-
FlexMatch 配对
-
灵活控制托管资源
通过创建队列并提供配置脚本来设置实时服务器。有关创建实时服务器以及如何准备游戏客户端的更多信息,请参阅准备您的实时服务器。
实时服务器如何管理游戏会话
您可以通过将自定义逻辑构建到实时脚本中来为游戏会话管理添加自定义逻辑。您可以编写代码来访问服务器特定的对象,使用回调添加事件驱动的逻辑,或者根据非事件场景添加逻辑。
实时客户端和服务器如何交互
在游戏会话期间,游戏客户端通过后端服务向实时服务器发送消息来进行交互。然后,后端服务在游戏客户端之间中继消息,以交换活动、游戏状态和相关的游戏数据。
此外,您可以通过向实时脚本添加游戏逻辑来自定义客户端和服务器的交互方式。使用自定义游戏逻辑,实时服务器可能会实现回调以启动事件驱动的响应。
通信协议
实时服务器和连接的游戏客户端通过两个通道进行通信:用于可靠传输的 TCP 连接和用于快速交付的 UDP 通道。创建消息时,游戏客户端选择使用的协议取决于消息的性质。默认情况下,消息传递设置为 UDP。如果 UDP 频道不可用,亚马逊 GameLift 会使用 TCP 作为备用消息发送消息。
消息内容
消息内容包含两种元素:必需的操作代码 (opCode) 和可选负载。消息的 opCode 可识别特定的玩家活动或游戏事件,有效载荷提供与操作代码相关的额外数据。这两种元素是开发人员定义的。您的游戏客户端根据其收到的消息中的 opCodes 进行操作。
播放器组
实时服务器提供管理玩家群组的功能。默认情况下,亚马逊将所有连接到游戏的玩家 GameLift 置于 “所有玩家” 群组中。此外,开发人员可为其游戏设置其他组,而玩家可以同时是多个组的成员。群组成员可以发送消息并与群组中的所有玩家共享游戏数据。组的一种可能用途是建立玩家团队并管理团队沟通。
自定义实时服务器
实时服务器充当无状态中继服务器。实时服务器在连接到游戏的游戏客户端之间中继消息和游戏数据包。但是,实时服务器不评估消息、处理数据或执行任何游戏逻辑。以这种方式使用,每个游戏客户端都保持自己的游戏状态视图,并通过中继服务器向其他玩家提供更新。每个游戏客户端均负责合并这些更新并协调自己的游戏状态。
您可以通过添加实时脚本功能来自定义服务器。例如,使用游戏逻辑,您可以使用服务器权威的游戏状态视图来构建有状态的游戏。
Amazon 为实时脚本 GameLift 定义了一组服务器端回调。实施这些回调将事件驱动的功能添加到服务器。譬如,您可以:
-
当游戏客户端尝试连接到服务器时,对玩家进行身份验证。
-
验证玩家是否可以根据要求加入群组。
-
确定何时将来自特定玩家或目标玩家的消息传送到目标玩家,或者执行额外的处理作为回应。
-
当玩家离开群组或断开与服务器的连接时,通知所有玩家。
-
查看游戏会话对象或消息对象的内容,并使用数据。
部署和更新实时服务器
实时服务器的一个关键优势是能够随时更新您的脚本。当您更新脚本时,Amazon 会在几分钟内将新版本 GameLift 分发给所有托管资源。亚马逊 GameLift 部署新脚本后,在此之后创建的所有新游戏会话都将使用新的脚本版本。(现有游戏会话将继续使用原始版本。)
开始将您的游戏与实时服务器集成: