适用于 Unreal 的插件:将游戏部署到托管式 EC2 实例集
在此工作流程中,您可以使用插件修改您的游戏,使其托管在 Amazon GameLift 托管的基于云的计算资源上。您可以为 Amazon GameLift 功能添加客户端和服务器游戏代码,然后将您的服务器构建上传到 Amazon GameLift 服务以部署到基于云的资源。此工作流程完成后,您将拥有一个可以连接到云端游戏服务器且正常运行的游戏客户端。
要启动 Amazon GameLift 托管的 Amazon EC2 工作流程,请执行以下操作:
在 Unreal 编辑器主工具栏中,选择 Amazon GameLift 菜单,然后选择通过托管的 EC2 托管。此操作将打开插件页面部署 Amazon EC2 Fleet,其中提供了集成、构建、部署和启动游戏组件的六步流程。
步骤 1:设置配置文件
选择您要在遵循此工作流程时使用的配置文件。您选择的配置文件会影响工作流程中的所有步骤。您创建的所有资源都与配置文件的 AWS 账户相关联,并放置在配置文件的默认 AWS 区域中。配置文件用户的权限决定了您对 AWS 资源和操作的访问权限。
设置用户配置文件
-
从可用配置文件的下拉列表中选择一个配置文件。如果您还没有配置文件或想要创建新的配置文件,请前往 Amazon GameLift 菜单并选择设置 AWS 用户配置文件。
-
如果引导状态不是“活动”,请选择引导配置文件并等待状态变为“活动”。
步骤 2:设置游戏代码
在此步骤中,您将对客户端和服务器代码进行一系列更新,以添加托管功能。如果还没有设置 Unreal 编辑器的源代码构建版本,该插件会提供指向说明和源代码的链接。
如果您已将游戏与 Anywhere 实例集一起使用,则无需对游戏代码进行任何更改。如果您使用的是启动游戏地图,则这也适用于 EC2 部署。
构建游戏服务器后,完成以下任务,为将其上传到 Amazon GameLift 做好准备。
打包服务器构建以进行云部署
在 Unreal 编辑器默认打包服务器构建文件的 WindowsServer
文件夹中,添加以下内容
将插件下载中包含的安装脚本复制到
WindowsServer
文件夹的根目录中。查找文件[project-name]/Plugins/Resources/CloudFormation/extra_server_resources/install.bat
。Amazon GameLift 使用此文件在每个 EC2 托管资源上安装服务器构建。将 Visual Studio 安装中包含的
VC_redist.x64.exe
文件复制到WindowsServer
文件夹的根目录中。此文件通常位于C:/Program Files (x86)/Microsoft Visual Studio/2019/Professional/VC/Redist/MSVC/v142
。将游戏服务器构建的 OpenSSL DLL 复制到
WindowsServer/MyGame/Binaries/Win64
文件夹中。确保 DLL 的版本与服务器构建中使用的版本相同。复制以下文件:libssl-3-x64.dll
libcrypto-3-x64.dll
步骤 3:选择部署方案
在此步骤中,您可以选择此时要部署的游戏托管解决方案。使用任何方案,您都可以对游戏进行多个部署。
单区域实例集:将您的游戏服务器部署到活动配置文件默认 AWS 区域中的单个托管资源实例集。此方案是测试服务器与 AWS 集成和服务器构建配置的良好起点。它部署了以下资源:
已安装并运行游戏服务器构建的 AWS 实例集(按需型)。
Amazon Cognito 用户群体和客户端,使玩家能够进行身份验证和开始游戏。
将用户群体与 API 关联的 API 网关授权器。
WebACL,用于限制玩家对 API 网关的过多调用。
API 网关 + Lambda 函数,供玩家申请游戏位置。如果两者都不可用,则此函数调用
CreateGameSession()
。API 网关 + Lambda 函数,供玩家获取游戏请求的连接信息。
FlexMatch 实例集:将您的游戏服务器部署到一组实例集,并设置一个 FlexMatch 对战构建器,其中包含创建玩家对战的规则。此方案使用低成本的竞价型托管和一个多实例集、多位置结构,以实现持久可用性。当您准备好开始为托管解决方案设计对战构建器组件时,此方法非常有用。在这种方案下,您将为此解决方案创建基本资源,并可以根据需要后续对其进行自定义。它部署了以下资源:
FlexMatch 对战配置和对战规则设置为接受玩家请求和组成对战。
-
三个 AWS 实例集,安装了游戏服务器构建,并在多个位置运行。包括两个竞价型实例集和一个按需型实例集作为备份。
-
AWS 游戏会话放置队列,通过寻找尽可能好的托管资源(基于可行性、成本、玩家延迟等)并启动游戏会话来满足对提议对战的请求。
-
Amazon Cognito 用户群体和客户端,使玩家能够进行身份验证和开始游戏。
-
将用户群体与 API 关联的 API 网关授权器。
-
WebACL,用于限制玩家对 API 网关的过多调用。
-
API 网关 + Lambda 函数,供玩家申请游戏位置。此函数调用
StartMatchmaking()
。 -
API 网关 + Lambda 函数,供玩家获取游戏请求的连接信息。
-
Amazon DynamoDB 表,用于存储玩家的对战票证和游戏会话信息。
-
SNS 主题 + Lambda 函数,用于处理 GameSessionQueue 事件。
步骤 4:设置游戏参数
在此步骤中,您将描述要上传到 AWS 的游戏;
服务器生成包名称:为游戏服务器生成包提供一个有意义的名称。AWS 使用此名称来指代上传并用于部署的服务器生成包的副本。
服务器构建操作系统:输入构建服务器以在其中运行的操作系统。这将告诉 AWS 使用哪种类型的计算资源来托管您的游戏。
游戏服务器文件夹:确定本地服务器构建文件夹的路径。
游戏服务器构建:确定游戏服务器可执行文件的路径。
游戏客户端路径:确定游戏客户端可执行文件的路径。
客户端配置输出:此字段需要指向您的客户端构建中包含 AWS 配置的文件夹。在以下位置寻找:
[client-build]/[project-name]/Content/CloudFormation
。
步骤 5:部署方案
在此步骤中,您将根据所选的部署方案将游戏部署到云托管解决方案。在 AWS 验证服务器生成包、预置托管资源、安装游戏服务器、启动服务器进程以及让它们做好托管游戏会话的准备时,此过程可能需要数分钟。
要开始部署,请选择部署 CloudFormation。您可以在此处跟踪您的游戏托管状态。要了解更多详细信息,您可以登录 AWS 管理控制台了解 AWS 和查看事件通知。请务必使用与插件中活跃用户配置文件相同的账户、用户和 AWS 区域登录。
部署完成后,您的游戏服务器将安装在 AWS EC2 实例上。至少有一个服务器进程正在运行并准备开始游戏会话。
步骤 6:启动客户端
至此,您已经完成了启动和玩使用 Amazon GameLift 托管的多人游戏所需的所有任务。要玩游戏,请启动您的游戏客户端实例。
如果您部署了单个实例集方案,则可以用一个玩家打开一个客户端实例,进入服务器地图并四处移动。打开游戏客户端的其他实例,将第二个玩家添加到同一个服务器游戏地图中。
如果您部署了 FlexMatch 方案,则解决方案需要等待至少两个客户端排队等候游戏会话放置,然后玩家才能进入服务器地图。