View a markdown version of this page

托管的开发路线图 亚马逊 GameLift 服务器 托管式 EC2 - 亚马逊 GameLift 服务器
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

托管的开发路线图 亚马逊 GameLift 服务器 托管式 EC2

本路线图将指导您如何为多人游戏开发 Amazon GameLift Servers 托管式 EC2 托管解决方案。Amazon GameLift Servers 提供多个游戏托管选项;有关这些选项的更多信息,请参阅 亚马逊 GameLift 服务器 游戏托管选项

使用托Amazon GameLift Servers管主机,您的游戏服务器托管在 Amazon Web Services 云基于虚拟计算的资源上,这些资源根据您的配置Amazon GameLift Servers拥有和运行。您将获得 Amazon Elastic Compute Cloud(Amazon EC2)实例的安全性、可靠性和全球可用性,这些实例针对多人游戏托管进行了进一步优化。Amazon GameLift Servers 利用自动服务器部署、生命周期处理和容量自动扩缩等工具简化了托管管理。

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

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

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

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

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

  • 一个或多个 Amazon GameLift Servers 托管式实例集,使用针对多人游戏托管进行了优化的 Amazon Elastic Compute Cloud(Amazon EC2)实例。

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

快速入门 亚马逊 GameLift 服务器 虚幻引擎和 Unity 的插件

为实现更快速的部署,请尝试使用适用于 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 实例集,如使用设置本地测试 亚马逊 GameLift 服务器 Anywhere中所述。在此步骤中,手动将游戏服务器生成包安装到测试设备上,然后启动服务器进程。使用 Amazon 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。使用生成包文件、依赖项和支持软件创建安装脚本。请参阅为其创建游戏服务器版本 亚马逊 GameLift 服务器。您可以使用控制台或 Amazon CLI 将您的版本上传到Amazon GameLift Servers。

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

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

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

    • 为您的队列选择 On-Demand 实例,然后选择您的队列所在地可用的实例类型。竞价型实例集是一个很有价值的选择,但需要额外的设计和配置。

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

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

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

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

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