使用托管容器进行托Amazon GameLift Servers管的开发路线图 - Amazon GameLift Servers

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

使用托管容器进行托Amazon GameLift Servers管的开发路线图

此路线图将指导您如何为容器化游戏服务器开发托Amazon GameLift Servers管解决方案。托管容器只是提供的一种托管解决方案Amazon GameLift Servers。有关托管选项的更多信息,请参阅Amazon GameLift Servers 解决方案

包含的托管容器解决方案包含Amazon GameLift Servers以下组件:

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

  • 包含您的游戏服务器版本的容器镜像,已上传到亚马逊弹性容器注册表 (Amazon ECR) Container Registry 私有存储库。游戏服务器版本与 Linux 的服务器 SDK 集成,专为Amazon GameLift Servers在 Linux 上运行而构建。

  • 代表游戏客户端与Amazon GameLift Servers服务交互的后端服务。后端服务使用作为 AWS 软件开发工具包一部分的服务 API 中的功能。Amazon GameLift Servers

  • 一种Amazon GameLift Servers游戏会话队列,用于处理新游戏会话的请求,在所有舰队中搜索可用的游戏服务器,并提示游戏服务器启动游戏会话。

  • (可选)匹配器,用于创建多FlexMatch人比赛并为其设置游戏会话。

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

使用这些托管容器工具加快入门速度:
  • 容器入门套件简化了集成和舰队设置。它为您的游戏服务器添加了基本的游戏会话管理功能,并使用预先配置的模板为游戏服务器构建容器队列和自动部署管道。部署后,使用Amazon GameLift Servers控制台和 API 工具监控队列性能、管理游戏会话和分析指标。

  • 对于虚幻引擎和Unity开发者,使用Amazon GameLift Servers插件来集成游戏服务器,并从游戏引擎的开发环境中构建容器舰队。该插件的指导式工作流程可帮助您使用托管容器创建快速、简单的解决方案,实现基于云的托管。您可以在此基础上再接再厉,为您的游戏创建自定义托管解决方案。

向游戏服务器添加功能,使其在部署用于托管时可以与Amazon GameLift Servers服务通信。

  • 为您的游戏项目获取适用于Amazon GameLift Servers(5.2 或更高版本)的服务器 SDK。服务器 SDK 支持 C++、C# 和 Go 语言。下载适用于的服务器 SDK Amazon GameLift Servers。服务器 SDK 有 C++、C# 和 Go 版本。

  • 修改游戏服务器代码以添加服务器 SDK 功能。有关指南,请参阅将游戏与自定义游戏服务器集成。至少执行以下操作:

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

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

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

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

  • 打包游戏服务器生成包。构建您的游戏服务器以在 Linux 上运行。准备运行游戏服务器所需的版本和其他文件。如果你在 Windows 上进行开发,则此步骤可能涉及设置单独的 Linux 工作区或使用诸如适用于 Linux 的 Windows 子系统 (WSL) 之类的工具。你需要一个 Linux 环境来测试你的游戏服务器版本,以及构建和测试你的容器镜像。

  • 测试游戏服务器集成。确认您的集成游戏服务器可以连接到Amazon GameLift Servers服务并响应提示。我们建议设置一个简单的 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 Anywhere 队列与本地工作站一起使用进行测试。使用新的后端服务请求新的游戏会话,并验证:(1) 该Amazon GameLift Servers服务成功提示您的服务器进程启动游戏会话,以及 (2) 游戏客户端可以连接到游戏会话。

自定义处理新游戏会话请求的方式,并找到可用的游戏服务器来托管这些请求。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 ServersFlexMatch开发者指南

  • 测试安置系统。您可以将现有的 Amazon GameLift Servers Anywhere 队列与本地工作站一起使用进行测试。使用后端服务请求新的游戏会话,并验证该Amazon GameLift Servers服务是否成功提示您的服务器进程启动游戏会话。

成功集成游戏服务器后,使用游戏服务器可执行文件创建容器镜像。将其存储在亚马逊弹性容器注册表 (Amazon ECR) Container Registry 存储库中以供使用。Amazon GameLift Servers有关详细说明,请参阅为构建容器镜像 Amazon GameLift Servers

  • 获取游戏服务器容器的 Dockerfile 模板(由Amazon GameLift Servers提供)。修改游戏服务器编译文件的文件。

  • 生成游戏服务器容器镜像。在 Linux 环境中工作,使用 Docker 工具创建您的镜像。

  • 将您的容器镜像推送到 Amazon ECR。在 Amazon ECR 中创建公共或私有存储库,使用该存储库 AWS 账户 以及您计划部署容器队列 AWS 区域 的位置。将你的容器镜像推送到它。

  • 使用 Anywhere 队列测试您的容器映像(可选)。在将容器镜像部署到云托管的容器队列之前,您可能需要在本地对其进行测试。您可以将现有的 Amazon GameLift Servers Anywhere 队列与本地工作站一起使用进行测试。安装并运行游戏服务器容器并验证:(1) Amazon GameLift Servers 服务成功提示您的服务器进程启动游戏会话,以及 (2) 游戏客户端可以连接到游戏会话。

到目前为止,你已经使用了自我管理的 Anywhere 队列来测试和迭代你的游戏组件。解决方案的最后一部分是设置生产系统所需的基于云的托管资源。要开始规划和配置生产,您需要设置Amazon GameLift Servers托管集装箱船队并对其进行自定义以进行生产。

  • 创建容器组定义。容器组定义描述了舰队的容器架构。并确定要部署哪些容器镜像。请参阅为集装箱舰队创建Amazon GameLift Servers容器组定义。在存储容器镜像的相同 AWS 区域 位置创建容器组定义。有关选择实例集位置的更多信息,请参阅实例集位置。至少执行以下操作:

    • 创建游戏服务器容器组定义。

    • 在游戏服务器版本中添加带有容器镜像的容器定义。

    • 为容器的游戏服务器进程配置端口范围。

  • 创建托管集装箱舰队。创建队列后,Amazon GameLift Servers会立即开始部署游戏服务器版本进行托管。您可以配置托管式实例集的许多方面。有关指南,请参阅创建一个 Amazon GameLift Servers 托管集装箱船队。至少执行以下操作:

    • 为容器舰队设置 AWS Identity and Access Management (IAM) 服务角色。请参阅为设置 IAM 服务角色 Amazon GameLift Servers

    • 指定要部署到舰队实例的游戏服务器容器组定义。

    • 如果所有其他参数都可用,则使用默认值。 Amazon GameLift Servers计算一些参数以实现最佳配置。

  • 将集装箱舰队添加到您的队列中。在游戏会话队列中,将 Anywhere 测试队列替换为托管容器队列。

  • 使用您的集装箱舰队测试游戏托管。此时您应该能够测试整个解决方案。启动游戏客户端并通过后端服务请求游戏会话。获取连接信息并连接到集装箱舰队的游戏会话。

  • 迭代您的舰队部署。您可以更新容器组定义和队列配置,然后将更新部署到现有舰队。

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