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