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

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

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

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

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

设置您的个人资料

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

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

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

将您的游戏与 Amazon 集成 GameLift

注意

如果您导入了示例游戏,则可以跳过此步骤。示例游戏资产已经准备好了必要的服务器和客户端代码。

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

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

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

集成您的服务器代码

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

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

  2. 前往 aws/ GitHub 仓库amazon-gamelift-plugin-unity并打开路径。Samples~/SampleGame/Assets/Scripts/Server

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

示例代码包括以下最低必需元素,这些元素使用 Amazon GameLift C# 服务器SDK(版本 5):

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

  • 实现所需的回调函数以响应 Amazon GameLift 服务的请求OnStartGameSession,包括OnProcessTerminate、和onHealthCheck

  • ProcessReady()使用指定端口调用,以便在服务器进程准备好托管游戏会话时通知 Amazon GameLift 服务。

如果要自定义示例服务器代码,请参阅以下资源:

集成您的客户端代码

如果您使用自己的游戏项目和自定义场景,则需要将基本功能集成到游戏客户端中。您还需要添加用户界面元素,以便玩家可以登录并加入游戏会话。使用 Amazon GameLift 服务APIs(在 AWS SDK)获取游戏会话信息、创建新的游戏会话或加入现有游戏会话,

使用 Anywhere 队列构建用于本地测试的客户端时,您可以添加对 Amazon GameLift 服务的直接调用。当你为云托管开发游戏时,或者计划使用 Anywhere 队列进行生产托管时,你需要创建一个客户端后端服务来处理游戏客户端与 Amazon 服务之间的所有通信。 GameLift

要将 Amazon GameLift 集成到您的客户代码中,请使用以下资源作为指导。

  • 将客户端与 GitHub repo 中的 GameLiftCoreApi 类集成 aw amazon-gamelift-plugin-unity s/。该类提供玩家身份验证和检索游戏会话信息的控件。

  • 查看示例游戏集成,可在 GitHub repo aw amazon-gamelift-plugin-unity s/ 中找到。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 编辑器的输出日志中跟踪此请求的进度。

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

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

启动游戏

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

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

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

    2. Launch Game 中,选择配置客户端:在任何地方应用设置。此操作会更新您的游戏客户端设置以使用您刚刚设置的 Anywhere 舰队。

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

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

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

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

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

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

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

  • 一个简单的加入游戏用户界面。当客户尝试加入游戏时,客户端会自动寻找具有可用玩家插槽的活跃游戏会话。如果没有可用的游戏会话,则客户端会请求新的游戏会话。如果游戏会话可用,则客户端会请求加入可用的游戏会话。使用多个并发客户端测试游戏时,第一个客户端会启动游戏会话,其余客户端会自动加入现有的游戏会话。

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

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

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

  1. 使用标准的 Unity 编译流程生成服务器可执行文件。在 “文件”、“编译设置” 中,将平台切换到专用服务器并构建。

  2. 使用您的 Anywhere 舰队 ID 和 AWS 区域调get-compute-auth-token用 AWS CLI命令,即可获得短期身份验证令牌。创建队列时,舰队 ID 会显示在 Connect to a Anywhere 队列中。当您选择有效的个人资料时,该 AWS 地区将显示在 “设置您的个人资料” 中。

    aws gamelift get-compute-auth-token --fleet-id [your anywhere fleet ID] --region [your AWS region]
  3. 从命令行启动新建的游戏服务器可执行文件,并传入有效的身份验证令牌。

    my_project.exe --authToken [token]