本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
适用于 Unity 的插件:使用亚马逊设置本地测试 GameLift Anywhere
在此工作流程中,您可以为 Amazon GameLift 功能添加客户端和服务器游戏代码,然后使用该插件将您的本地工作站指定为测试游戏服务器主机。完成集成任务后,使用该插件来构建您的游戏客户端和服务器组件。
要启动 Amazon GameLift Anywhere 工作流程,请:
在 Unity 编辑器主菜单中,选择 Amazon, GameLift然后选择 “随处托管”。此操作将打开插件页面,用于使用 @ 设置游戏Anywhere 舰队。该页面提供了集成、构建和启动游戏组件的五步流程。
设置您的个人资料
选择您要在遵循此工作流程时使用的配置文件。您选择的配置文件会影响工作流程中的所有步骤。您创建的所有资源都与个人资料的 AWS 账户相关联,并放置在个人资料的默认 AWS 区域中。个人资料用户的权限决定了您对 AWS 资源和操作的访问权限。
-
从可用配置文件的下拉列表中选择一个配置文件。如果您还没有个人资料或想要创建新的个人资料,请前往 Amazon GameLift 菜单并选择 “设置 AWS 账户资料”。
-
如果引导状态不是“活动”,请选择引导配置文件并等待状态变为“活动”。
将您的游戏与 Amazon 集成 GameLift
注意
如果您导入了示例游戏,则可以跳过此步骤。示例游戏资产已经准备好了必要的服务器和客户端代码。
在工作流程的这一步中,您需要更新游戏项目中的客户端和服务器代码。
* 游戏服务器必须能够与 Amazon GameLift 服务通信,才能收到启动游戏会话的提示、提供游戏会话连接信息和报告状态。
游戏客户端必须能够获取有关游戏会话的信息、加入或开始游戏会话以及获取连接信息才能加入游戏。
集成您的服务器代码
如果您使用自己的游戏项目和自定义场景,请使用提供的示例代码将所需的服务器代码添加到您的游戏项目中:
-
在游戏项目文件中,打开该
Assets/Scripts/Server
文件夹。如果它不存在,请创建它。 -
前往 aws/ GitHub
仓库amazon-gamelift-plugin-unity并打开路径。 Samples~/SampleGame/Assets/Scripts/Server
找到文件 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 实例集中的计算资源。
输入本地计算机的计算名称。如果您在实例集中添加多个计算,则名称必须是唯一的。
选择 “注册计算”。可以在 Unreal 编辑器的输出日志中跟踪此请求的进度。
该插件使用设置为 localhost (127.0.0.1) 的 IP 地址注册您的本地工作站。此设置假设你将在同一台计算机上运行游戏客户端和服务器。
作为对这一操作的响应,Amazon GameLift 会验证它是否可以连接到计算并返回有关新注册的计算的信息。
启动游戏
在此步骤中,您将构建游戏组件并启动它们来玩游戏。完成以下任务:
-
配置您的游戏客户端。在此步骤中,您将提示插件更新游戏项目的
GameLiftClientSettings
资产。该插件使用此资产来存储您的游戏客户端连接到 Amazon GameLift 服务所需的某些信息。-
如果您没有导入和初始化示例游戏,请创建一个新
GameLiftClientSettings
资产。在 Unity 编辑器主菜单中,选择 “资源”、“创建” GameLift、“客户端设置”。如果您在项目 GameLiftClientSettings 中创建了多个副本,插件会自动检测到这一点,并通知您该插件将更新哪个资产。 -
在 Launch Game 中,选择配置客户端:在任何地方应用设置。此操作会更新您的游戏客户端设置以使用您刚刚设置的 Anywhere 舰队。
-
构建并运行您的游戏客户端。
使用标准 Unity 编译流程生成客户端可执行文件。在 “文件”、“生成设置” 中,将平台切换到 Windows、Mac、Linux。如果您导入了示例游戏并初始化了设置,则构建列表和构建目标会自动更新。
启动新构建的游戏客户端可执行文件的一个或多个实例。
在 Anywhere 舰队中启动游戏服务器。选择服务器:在编辑器中启动服务器。此任务将启动一个实时服务器,只要 Unity 编辑器保持打开状态,您的客户端就可以连接到该服务器。
开始或加入游戏会话。在您的游戏客户端实例中,使用用户界面将每个客户端加入游戏会话。如何执行此操作取决于您如何向客户端添加功能。
如果您使用的是示例游戏客户端,则它具有以下特征:
玩家登录组件。连接到 Anywhere 舰队上的游戏服务器时,不会进行玩家验证。您可以输入任何值来加入游戏会话。
一个简单的加入游戏用户界面。当客户尝试加入游戏时,客户端会自动寻找具有可用玩家插槽的活跃游戏会话。如果没有可用的游戏会话,则客户端会请求新的游戏会话。如果游戏会话可用,则客户端会请求加入可用的游戏会话。使用多个并发客户端测试游戏时,第一个客户端会启动游戏会话,其余客户端会自动加入现有的游戏会话。
有四个玩家插槽的游戏会话。您最多可以同时启动四个游戏客户端实例,它们将加入同一个游戏会话。
从服务器可执行文件启动(可选)
您可以构建并启动游戏服务器可执行文件,以便在 Anywhere 队列上进行测试。
使用标准的 Unity 编译流程生成服务器可执行文件。在 “文件”、“编译设置” 中,将平台切换到专用服务器并构建。
-
使用您的 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]
-
从命令行启动新建的游戏服务器可执行文件,并传入有效的身份验证令牌。
my_project.exe --authToken [token]