将游戏与 Amazon GameLift 实时服务器集成 - Amazon GameLift
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

将游戏与 Amazon GameLift 实时服务器集成

本主题提供了托管 及 解决方案的概述。概述说明了此解决方案何时适合您的游戏,以及实时服务器如何支持多人游戏。

有关使您的游戏在 上启动和正常运行的完整路线图,请参阅 。

提示

要试用 Amazon GameLift 游戏服务器托管,请参阅Amazon VPC 入门

什么是实时服务器?

是由 提供以供您与多人游戏一起使用的轻量级的即用型游戏服务器。实时服务器取消了自定义游戏服务器的开发、测试和部署过程。此解决方案可以帮助最大限度地减少完成游戏所需的时间和精力。

主要特征
  • 充分利用完整的网络堆栈进行游戏客户端/服务器交互。

  • 核心游戏服务器功能。

  • 可自定义的服务器逻辑。

  • 实时更新 配置和服务器逻辑。

  • FlexMatch 对战

  • 灵活控制托管资源。

通过创建托管资源实例集并提供配置脚本来设置 服务器。在中了解更多有关创建 服务器和如何准备您的游戏客户端的信息。

实时服务器如何管理游戏会话

您可以选择通过将用于游戏会话管理的自定义逻辑内置到 脚本中来添加此逻辑。您可能编写代码来访问服务器特定的对象,使用回调添加事件驱动的逻辑或基于非事件方案(例如计时器或状态检查)添加逻辑。

实时客户端和服务器如何交互

在游戏会话期间,游戏客户端通过后端服务向实时服务器发送消息进行交互。然后,后端服务在游戏客户端之间中继消息,以交换活动、游戏状态和相关的游戏数据。

此外,您可以通过向 脚本添加游戏逻辑来自定义客户端和服务器的交互方式。借助自定义游戏逻辑, 可能会实施回调以触发事件驱动的响应。

通信协议

服务器与连接的游戏客户端之间的通信使用两个通道:用于可靠传递的 TCP 连接和用于快速传递的 UDP 通道。创建消息时,游戏客户端选择使用的协议取决于消息的性质。默认情况下,消息传递设置为 UDP。如果 UDP 频道不可用,Amazon GameLift 会使用 TCP 作为后备发送消息。

消息内容

消息内容包含两种元素:必需的操作代码 (opCode) 和可选负载。消息的操作代码标识特定的玩家活动或游戏事件,而负载提供与操作代码相关的附加数据。这两种元素是开发人员定义的。您的游戏客户端会根据它收到的消息中的操作码采取措施。

玩家组

提供管理玩家组的功能。默认情况下,连接到游戏的所有玩家均置于“所有玩家”组中。此外,开发人员可为其游戏设置其他组,而玩家可以同时是多个组的成员。组成员可以向组中的所有玩家发送消息或与组共享游戏数据。组的一种可能用途是建立玩家团队并管理团队沟通。

自定义实时服务器

实时服务器作为无状态中继服务器运行。服务器在连接到游戏的游戏客户端之间中继游戏数据包和消息。但是,实时服务器不评估消息、处理数据或执行任何游戏逻辑。以这种方式使用,每个游戏客户端均保持其自己的游戏状态的视图,并通过中继服务器向其他玩家提供更新。每个游戏客户端均负责合并这些更新并协调自己的游戏状态。

您可以通过添加实时脚本功能来自定义服务器。例如,对于游戏逻辑,您可选择使用游戏状态的服务器授权视图来构建有状态的游戏。

Amazon GameLift 为实时脚本定义了一组服务器端回调。实施这些回调将事件驱动的功能添加到服务器。例如,您可以:

  • 当游戏客户端尝试连接到服务器时,对玩家进行身份验证。

  • 在请求时验证玩家是否可加入组。

  • 评估何时传递特定玩家或目标玩家的消息,或执行其他响应处理。

  • 当玩家离开小组或与服务器断开连接时,请采取措施,例如通知所有玩家。

  • 评估游戏会话对象或消息对象的内容并使用数据。

部署和更新实时服务器

的一个关键优势是能够随时更新您的脚本。更新脚本时,新版本将在几分钟内传播到所有托管资源。部署新脚本后,在此之后创建的所有新游戏会话都将使用新脚本版本。(现有游戏会话将继续使用原始版本。)