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