适用于 Unity 的插件:使用 Amazon GameLift Anywhere 设置本地测试 - Amazon GameLift

适用于 Unity 的插件:使用 Amazon GameLift Anywhere 设置本地测试

在此工作流程中,您可以为 Amazon GameLift 功能添加客户端和服务器游戏代码,然后使用该插件将您的本地工作站指定为测试游戏服务器主机。完成集成任务后,使用该插件来构建您的游戏客户端和服务器组件。

要启动 Amazon GameLift Anywhere 工作流程,请执行以下操作:
  • 在 Unity 编辑器主菜单中,选择 Amazon GameLift,然后选择通过 Anywhere 托管。此操作将打开插件页面,用于使用 @Anywhere 实例集设置您的游戏。该页面提供了集成、构建和启动游戏组件的五步流程。

设置配置文件

选择您在遵循此工作流程时要使用的配置文件。您选择的配置文件会影响工作流程中的所有步骤。您创建的所有资源都与配置文件的 AWS 账户相关联,并放置在配置文件的默认 AWS 区域中。配置文件用户的权限决定了您对 AWS 资源和操作的访问权限。

  1. 从可用配置文件的下拉列表中选择一个配置文件。如果您还没有配置文件或想要创建新配置文件,请前往 Amazon GameLift 菜单并选择设置 AWS 账户配置文件

  2. 如果引导状态不是“活动”,请选择引导配置文件并等待状态变为“活动”。

将您的游戏与 Amazon GameLift 集成

注意

如果您导入了示例游戏,则可以跳过这一步。示例游戏资产已准备好所需的服务器和客户端代码。

在工作流程的这一步中,您需要更新游戏项目中的客户端和服务器代码。

  • * 游戏服务器必须能够与 Amazon GameLift 服务通信才能接收启动游戏会话的提示、提供游戏会话连接信息和报告状态。

  • 游戏客户端必须能够获取有关游戏会话的信息、加入或启动游戏会话以及获取连接信息才能加入游戏。

集成服务器代码

如果将您自己的游戏项目与自定义场景一起使用,请使用提供的示例代码将所需的服务器代码添加到您的游戏项目:

  1. 在您的游戏项目文件中,打开 Assets/Scripts/Server 文件夹。如果该文件夹不存在,请创建它。

  2. 转到 GitHub 存储库 aws/amazon-gamelift-plugin-unity 并打开路径 Samples~/SampleGame/Assets/Scripts/Server

  3. 找到文件 GameLiftServer.cs 并将其复制到游戏项目的 Server 文件夹中。构建服务器可执行文件时,请使用此文件作为构建目标。

示例代码包含以下所需的最少元素,这些元素使用了 Amazon GameLift C# 服务器 SDK(版本 5):

  • 初始化 Amazon GameLift API 客户端。Amazon GameLift Anywhere 实例集需要使用服务器参数进行 InitSDK() 调用。这些设置会自动设置,以便在插件中使用。

  • 实施所需的回调函数以响应来自 Amazon GameLift 服务的请求,包括 OnStartGameSessionOnProcessTerminate、和 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 实例集中的计算资源。

  1. 输入本地计算机的计算名称。如果您在实例集中添加多个计算,则名称必须是唯一的。

  2. 选择注册计算。您可以在 Unreal 编辑器的输出日志中跟踪此请求的进度。

插件会注册您的本地工作站,并将 IP 地址设置为 localhost(127.0.0.1)。此设置假定您将在同一台计算机上运行游戏客户端和服务器。

作为对这一操作的响应,Amazon GameLift 会验证它是否可以连接到计算并返回有关新注册的计算的信息。

启动游戏

在此步骤中,您将构建游戏组件并启动它们来玩游戏。完成以下任务:

  1. 配置游戏客户端。在此步骤中,您将提示插件更新游戏项目的 GameLiftClientSettings 资产。插件将使用该资产来存储游戏客户端连接到 Amazon GameLift 服务所需的某些信息。

    1. 如果您没有导入和初始化示例游戏,请创建一个新的 GameLiftClientSettings 资产。在 Unity 编辑器主菜单中,依次选择资产、创建、GameLift、客户端设置。如果您在项目中创建了多个 GameLiftClientSettings 副本,插件会自动检测到这一点,并通知您插件将更新哪个资产。

    2. 启动游戏中,选择配置客户端:应用 Anywhere 设置。此操作将更新游戏客户端设置,以使用您刚刚设置的 Anywhere 实例集。

  2. 构建并运行游戏客户端。

    1. 使用标准 Unity 构建流程构建客户端可执行文件。在文件、构建设置中,将平台切换为 Windows、Mac 或 Linux。如果您导入了示例游戏并初始化了设置,则构建列表和构建目标会自动更新。

    2. 启动新构建的游戏客户端可执行文件的一个或多个实例。

  3. 在 Anywhere 实例集中启动游戏服务器。选择服务器:在编辑器中启动服务器。此任务将启动一个实时服务器,只要 Unity 编辑器保持打开状态,您的客户端就可以连接到该服务器。

  4. 启动或加入游戏会话。在您的游戏客户端实例中,使用 UI 将每个客户端加入游戏会话。如何执行此操作取决于您是如何向客户端添加功能的。

如果您使用的是示例游戏客户端,那么它具有以下特征:

  • 一个玩家登录组件。连接到 Anywhere 实例集上的游戏服务器时,不会进行玩家验证。您可以输入任意值来加入游戏会话。

  • 一个简单的加入游戏 UI。当一个客户端尝试加入游戏时,该客户端会自动查找有可用玩家位置的活动游戏会话。如果没有可用的游戏会话,该客户端会请求新的游戏会话。如果有可用的游戏会话,该客户端会请求加入该游戏会话。使用多个并发客户端来测试游戏时,第一个客户端会启动游戏会话,其余客户端会自动加入现有的游戏会话。

  • 有四个玩家位置的游戏会话。您最多可以同时启动四个游戏客户端实例,它们将加入同一游戏会话。

通过服务器可执行文件启动(可选)

您可以构建并启动游戏服务器可执行文件,以便在 Anywhere 实例集上进行测试。

  1. 使用标准 Unity 构建流程构建服务器可执行文件。在文件、构建设置中,将平台切换为专用服务器,然后构建。

  2. 使用您的 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]
  3. 通过命令行启动新构建的游戏服务器可执行文件,并传入有效的身份验证令牌。

    my_project.exe --authToken [token]