适用于 Unity 的插件:使用 Amazon GameLift Anywhere 设置本地测试
在此工作流程中,您可以为 Amazon GameLift 功能添加客户端和服务器游戏代码,然后使用该插件将您的本地工作站指定为测试游戏服务器主机。完成集成任务后,使用该插件来构建您的游戏客户端和服务器组件。
要启动 Amazon GameLift Anywhere 工作流程,请执行以下操作:
在 Unity 编辑器主菜单中,选择 Amazon GameLift,然后选择通过 Anywhere 托管。此操作将打开插件页面,用于使用 @Anywhere 实例集设置您的游戏。该页面提供了集成、构建和启动游戏组件的五步流程。
设置配置文件
选择您在遵循此工作流程时要使用的配置文件。您选择的配置文件会影响工作流程中的所有步骤。您创建的所有资源都与配置文件的 AWS 账户相关联,并放置在配置文件的默认 AWS 区域中。配置文件用户的权限决定了您对 AWS 资源和操作的访问权限。
-
从可用配置文件的下拉列表中选择一个配置文件。如果您还没有配置文件或想要创建新配置文件,请前往 Amazon GameLift 菜单并选择设置 AWS 账户配置文件。
-
如果引导状态不是“活动”,请选择引导配置文件并等待状态变为“活动”。
将您的游戏与 Amazon GameLift 集成
注意
如果您导入了示例游戏,则可以跳过这一步。示例游戏资产已准备好所需的服务器和客户端代码。
在工作流程的这一步中,您需要更新游戏项目中的客户端和服务器代码。
* 游戏服务器必须能够与 Amazon GameLift 服务通信才能接收启动游戏会话的提示、提供游戏会话连接信息和报告状态。
游戏客户端必须能够获取有关游戏会话的信息、加入或启动游戏会话以及获取连接信息才能加入游戏。
集成服务器代码
如果将您自己的游戏项目与自定义场景一起使用,请使用提供的示例代码将所需的服务器代码添加到您的游戏项目:
-
在您的游戏项目文件中,打开
Assets/Scripts/Server
文件夹。如果该文件夹不存在,请创建它。 -
转到 GitHub 存储库 aws/amazon-gamelift-plugin-unity
并打开路径 Samples~/SampleGame/Assets/Scripts/Server
。 找到文件 GameLiftServer.cs 并将其复制到游戏项目的 Server 文件夹中。构建服务器可执行文件时,请使用此文件作为构建目标。
示例代码包含以下所需的最少元素,这些元素使用了 Amazon GameLift C# 服务器 SDK(版本 5):
初始化 Amazon GameLift API 客户端。Amazon GameLift Anywhere 实例集需要使用服务器参数进行
InitSDK()
调用。这些设置会自动设置,以便在插件中使用。实施所需的回调函数以响应来自 Amazon GameLift 服务的请求,包括
OnStartGameSession
、OnProcessTerminate
、和onHealthCheck
。当服务器进程准备好托管游戏会话时,请使用指定端口调用
ProcessReady()
以通知 Amazon GameLift 服务。
如果要自定义示例服务器代码,请参阅以下资源:
集成客户端代码
如果将您自己的游戏项目与自定义场景一起使用,则需要将基本功能集成到游戏客户端。您还需要添加 UI 元素,让玩家可以登录并加入游戏会话。请使用 Amazon GameLift 服务 API(在 AWS SDK 中)获取游戏会话信息、创建新游戏会话或加入现有游戏会话。
使用 Anywhere 实例集构建要进行本地测试的客户端时,您可以添加对 Amazon GameLift 服务的直接调用。当您开发要进行云托管的游戏时(或者您计划使用 Anywhere 实例集进行生产托管),您需要创建一个客户端后端服务来处理游戏客户端和 Amazon GameLift 服务之间的所有通信。
要将 Amazon GameLift 集成到客户端代码,请使用以下资源作为指南。
-
将客户端与 GitHub 存储库 aws/amazon-gamelift-plugin-unity 中的 GameLiftCoreApi 类集成。该类提供了用于玩家身份验证和检索游戏会话信息的控件。
-
查看可在 GitHub 存储库 aws/amazon-gamelift-plugin-unity 的
Samples~/SampleGame/Assets/Scripts/Client/GameLiftClient.cs
中找到的示例游戏集成。 -
按照“将 Amazon GameLift 添加到您的 Unity 游戏客户端”中的说明进行操作。
对于连接到 Anywhere 实例集的游戏客户端,您的游戏客户端需要以下信息。插件会自动更新您的游戏项目,以使用您在插件中创建的资源。
FleetId - Anywhere 实例集的唯一标识符。
FleetLocation - Anywhere 实例集的自定义位置。
AwsRegion - 托管 Anywhere 实例集的 AWS 区域。这是您在用户配置文件中设置的区域。
ProfileName - 本地计算机上的一个 AWS 凭证配置文件,支持访问适用于 GameLift 的 AWS SDK。游戏客户端使用这些凭证来验证对 Amazon GameLift 服务的请求的身份。
注意
凭证配置文件由插件生成并存储在本地计算机上。因此,您必须在本地计算机(或具有相同配置文件的计算机上)上运行客户端。
连接到 Anywhere 实例集
在此步骤中,您将指定要使用的 Anywhere 实例集。Anywhere 实例集定义了一组计算资源,这些资源可以位于任何地方,用于托管游戏服务器。
如果您当前使用的 AWS 账户已有 Anywhere 实例集,请打开实例集名称下拉字段并选择实例集。此下拉列表仅显示当前处于活动状态的用户配置文件所在 AWS 区域的 Anywhere 实例集。
如果目前没有实例集,或者您想创建新实例集,请选择创建新的 Anywhere 实例集并提供实例集名称。
在您为项目选择 Anywhere 实例集后,Amazon GameLift 会验证实例集状态是否处于活动状态并显示实例集 ID。您可以在 Unity 编辑器的输出日志中跟踪此请求的进度。
注册计算
在此步骤中,您将本地工作站注册为新的 Anywhere 实例集中的计算资源。
输入本地计算机的计算名称。如果您在实例集中添加多个计算,则名称必须是唯一的。
选择注册计算。您可以在 Unreal 编辑器的输出日志中跟踪此请求的进度。
插件会注册您的本地工作站,并将 IP 地址设置为 localhost(127.0.0.1)。此设置假定您将在同一台计算机上运行游戏客户端和服务器。
作为对这一操作的响应,Amazon GameLift 会验证它是否可以连接到计算并返回有关新注册的计算的信息。
启动游戏
在此步骤中,您将构建游戏组件并启动它们来玩游戏。完成以下任务:
-
配置游戏客户端。在此步骤中,您将提示插件更新游戏项目的
GameLiftClientSettings
资产。插件将使用该资产来存储游戏客户端连接到 Amazon GameLift 服务所需的某些信息。-
如果您没有导入和初始化示例游戏,请创建一个新的
GameLiftClientSettings
资产。在 Unity 编辑器主菜单中,依次选择资产、创建、GameLift、客户端设置。如果您在项目中创建了多个 GameLiftClientSettings 副本,插件会自动检测到这一点,并通知您插件将更新哪个资产。 -
在启动游戏中,选择配置客户端:应用 Anywhere 设置。此操作将更新游戏客户端设置,以使用您刚刚设置的 Anywhere 实例集。
-
构建并运行游戏客户端。
使用标准 Unity 构建流程构建客户端可执行文件。在文件、构建设置中,将平台切换为 Windows、Mac 或 Linux。如果您导入了示例游戏并初始化了设置,则构建列表和构建目标会自动更新。
启动新构建的游戏客户端可执行文件的一个或多个实例。
在 Anywhere 实例集中启动游戏服务器。选择服务器:在编辑器中启动服务器。此任务将启动一个实时服务器,只要 Unity 编辑器保持打开状态,您的客户端就可以连接到该服务器。
启动或加入游戏会话。在您的游戏客户端实例中,使用 UI 将每个客户端加入游戏会话。如何执行此操作取决于您是如何向客户端添加功能的。
如果您使用的是示例游戏客户端,那么它具有以下特征:
一个玩家登录组件。连接到 Anywhere 实例集上的游戏服务器时,不会进行玩家验证。您可以输入任意值来加入游戏会话。
一个简单的加入游戏 UI。当一个客户端尝试加入游戏时,该客户端会自动查找有可用玩家位置的活动游戏会话。如果没有可用的游戏会话,该客户端会请求新的游戏会话。如果有可用的游戏会话,该客户端会请求加入该游戏会话。使用多个并发客户端来测试游戏时,第一个客户端会启动游戏会话,其余客户端会自动加入现有的游戏会话。
有四个玩家位置的游戏会话。您最多可以同时启动四个游戏客户端实例,它们将加入同一游戏会话。
通过服务器可执行文件启动(可选)
您可以构建并启动游戏服务器可执行文件,以便在 Anywhere 实例集上进行测试。
使用标准 Unity 构建流程构建服务器可执行文件。在文件、构建设置中,将平台切换为专用服务器,然后构建。
-
使用您的 Anywhere 实例集 ID 和 AWS 区域调用 AWS CLI 命令 get-compute-auth-token,以获取短期身份验证令牌。当您创建实例集时,实例集 ID 将显示在连接到 Anywhere 实例集中。当您选择活动配置文件时,AWS 区域将显示在设置配置文件中。
aws gamelift get-compute-auth-token --fleet-id [your anywhere fleet ID] --region [your AWS region]
-
通过命令行启动新构建的游戏服务器可执行文件,并传入有效的身份验证令牌。
my_project.exe --authToken [token]