托管托管开发路线图 Amazon GameLift Servers EC2 - Amazon GameLift Servers

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

托管托管开发路线图 Amazon GameLift Servers EC2

此路线图将指导您如何为多人游戏开发 EC2 托Amazon GameLift Servers管解决方案。 Amazon GameLift Servers提供了多种游戏托管选项;有关这些选项的更多信息,请参阅Amazon GameLift Servers 游戏托管方案

使用托Amazon GameLift Servers管托管,您的游戏服务器托管在 AWS 云基于虚拟计算的资源上,这些资源根据您的配置Amazon GameLift Servers拥有和运行。您可以获得亚马逊弹性计算云 (Amazon EC2) 实例的安全性、可靠性和全球可用性,这些实例经过进一步优化,可与多人游戏托管配合使用。 Amazon GameLift Servers使用自动服务器部署、生命周期处理和容量自动扩展等工具简化托管管理。

Amazon GameLift Servers 托管式解决方案由以下组件组成:

  • 一个与 Amazon GameLift Servers 的服务器 SDK 集成的游戏服务器生成包,可在所有实例集中部署。

  • 与 AWS SDK 集成的游戏客户端和后端服务,用于与Amazon GameLift Servers服务交互并请求游戏会话。

  • 一个 Amazon GameLift Servers 队列或其他放置机制,用于放置在所有实例集中都有可用游戏服务器的新游戏会话。

  • (可选)一个 FlexMatch 对战构建器,用于创建多人对战并为其设置游戏会话。

  • 一个或多个Amazon GameLift Servers托管队伍,使用针对多人游戏托管进行了优化的亚马逊弹性计算云 (Amazon EC2) 实例。

该路线图提供了通过 EC2 托Amazon GameLift Servers管主机成功启动和运行多人游戏的简化途径。准备好必要的组件后,您就可以继续迭代游戏开发并自定义您的托管解决方案。临近发布时,请参阅借助 Amazon GameLift Servers 托管服务,为游戏发布做好准备,帮助您为生产级使用准备托管解决方案。

借助适用于 Unreal Engine 和 Unity 的 Amazon GameLift Servers 插件快速上手开发

为实现更快速的部署,请尝试使用适用于 Unreal Engine 和 Unity 的 Amazon GameLift Servers 插件。它提供了引导式 UI 工作流程,可通过最少的设置快速部署游戏服务器,助您即时测试游戏组件的运行效果。后续可在此基础上扩展,为游戏创建自定义托管方案。有关更多详细信息,请参阅借助 Amazon GameLift Servers 插件完成 Unreal 或 Unity 游戏的准备工作

为您的游戏服务器添加功能,使其在为托管进行部署时能与 Amazon GameLift Servers 服务进行通信。

  • 为您的游戏项目获取 Amazon GameLift Servers(版本 5.x)的服务器 SDK服务器 SDK 支持 C++、C# 和 Go 语言。下载 Amazon GameLift Servers 服务器 SDK

  • 修改游戏服务器代码以添加服务器 SDK 功能。有关指南,请参阅准备使用 Amazon GameLift Servers 托管游戏。至少执行以下操作:

    • 添加代码以初始化 Amazon GameLift Servers SDK 并与Amazon GameLift Servers服务建立 WebSocket连接。使用服务器 SDK 操作 InitSdk()

    • 添加代码,以在服务器进程准备好托管游戏会话时向 Amazon GameLift Servers 服务报告。使用服务器 SDK 操作 ProcessReady()

    • 实现所需的回调函数 OnProcessTerminate()OnStartGameSession()。借助这些函数,游戏服务器进程可以保持与 Amazon GameLift Servers 服务的连接、在 Amazon GameLift Servers 提示时启动游戏会话,以及响应结束游戏服务器进程的提示。

    • 添加代码,以在服务器进程结束游戏会话时向 Amazon GameLift Servers 服务报告。使用服务器 SDK 操作 ProcessEnding()

  • 打包游戏服务器生成包。使用生成包文件、依赖项和支持软件创建安装脚本。请参阅打包游戏生成包文件。我们建议使用 Amazon Simple Storage Service(Amazon S3)存储桶来存储游戏生成包的版本。

  • 测试游戏服务器集成。对于这项任务,我们建议为本地工作站设置 Amazon GameLift Servers Anywhere 实例集,如使用 Amazon GameLift Servers Anywhere 设置本地测试中所述。在此步骤中,手动将游戏服务器生成包安装到测试设备上,然后启动服务器进程。使用 AWS CLI 请求一个新的游戏会话,并验证 Amazon GameLift Servers 服务是否成功提示您的服务器进程启动游戏会话。

为您的游戏客户端创建一种方法,使其能够请求加入游戏会话、获取连接信息,然后直接连接到托管的游戏会话。最常见的方法是设置后端服务功能,作为游戏客户端和 Amazon GameLift Servers 服务之间的桥梁。此方法可以保护您的托管资源,并让您更好地控制玩家进入游戏会话的方式。

  • 构建用于托管的后端服务功能。后端服务会与 Amazon GameLift Servers 服务通信并向游戏客户端提供连接信息。此功能包括启动游戏会话、将玩家放入游戏以及检索游戏会话信息。有关指南,请参阅准备使用 Amazon GameLift Servers 托管游戏。至少执行以下操作:

  • 向游戏客户端添加允许玩家加入托管游戏会话的功能。游戏客户端将向您的后端服务发出请求,而不是直接向 Amazon GameLift Servers 发出请求。在后端服务提供游戏会话连接信息后,游戏客户端会直接连接到游戏会话来玩游戏。

  • 测试游戏客户端集成。您可将同一 Amazon GameLift Servers Anywhere 实例集与本地工作站搭配使用以进行测试。

    对于快速迭代开发或与多人团队合作,我们建议您设置基于云的测试环境。此 Amazon GameLift Servers Toolkit 解决方案可模拟 Amazon GameLift Servers 托管式实例集的行为,而且让您能够以最短的周转时间更新游戏服务器生成包。

您可自定义 Amazon GameLift Servers 处理新游戏会话请求的方式,并找到可用的游戏服务器来托管这些请求。Amazon GameLift Servers 会自动跟踪所有实例集上的所有游戏服务器的可用性。当游戏客户端发送加入游戏会话的请求时,Amazon GameLift Servers 会根据一组已定义的优先级(如最低延迟、成本和可用性)寻找“最佳”放置。

  • 创建游戏会话队列,用于将新的游戏会话与可用的游戏服务器一起放置。队列是游戏会话放置的主要机制。有关指南,请参阅创建游戏会话队列

    • 至少在队列中将您的 Anywhere 实例集添加为目标。所有其他设置都是可选自定义项。

  • 在后端服务代码中,将 CreateGameSession() 调用转换为 StartGameSessionPlacement()请参阅 Create a game session in a multi-location queue

  • 创建一个机制,用于在游戏会话准备好加入时通知游戏客户端。在开发过程中,你可以通过致电来轮询游戏会话状态 DescribeGameSessionPlacement。但是,在使用队列处理大量数据之前,您需要启用事件通知。请参阅请参阅设置游戏会话置放通知。

  • (可选)添加 FlexMatch 对战组件。有关指导,请参阅《Amazon GameLift Servers FlexMatch 开发人员指南》。

到目前为止,您已经使用自管理式 Anywhere 实例集来测试和迭代您的游戏组件,并且您已经微调了您的游戏会话放置。您的解决方案的最后一部分是设置生产系统所需的托管资源类型。要开始规划和配置生产环境,您需要过渡到使用 Amazon GameLift Servers 托管式实例集。

  • 打包游戏服务器生成包并上传到 Amazon GameLift Servers。使用生成包文件、依赖项和支持软件创建安装脚本。请参阅为 Amazon GameLift Servers 创建游戏服务器生成包。您可以使用控制台或 AWS CLI 将您的版本上传到Amazon GameLift Servers。

    在上传您的版本之前,请确定 AWS 区域 要创建队列的内容。您必须将生成包上传到同一区域。有关选择实例集位置的更多信息,请参阅地理位置

  • 创建托管 EC2 舰队。创建实例集时,Amazon GameLift Servers 会立即开始部署游戏服务器生成包进行托管。您可以配置托管式实例集的许多方面。有关指南,请参阅创建Amazon GameLift Servers托管 EC2 舰队。至少执行以下操作:

    • 为实例集命名并指定要部署的已上传游戏生成包。

    • 为实例集选择按需型实例,并选择在实例集所在位置可用的实例类型。竞价型实例集是一个很有价值的选择,但需要额外的设计和配置。

    • 为实例集创建运行时配置。至少为游戏服务器可执行文件指定启动路径。

    • 指定端口设置以允许入站流量访问游戏服务器。

  • 将托管式实例集添加到队列。在游戏会话队列中,将 Anywhere 实例集替换为您的托管式实例集。

  • 使用托管式实例集测试游戏托管。此时,您应该能够测试整个托管周期,即游戏客户端请求游戏会话、获取连接信息和成功连接到游戏会话。

在为游戏发布做准备时,您需要对托管式托管资源进行微调。需要考虑的决策包括: