迁移到亚马逊 GameLift 服务器 SDK 5.x - Amazon GameLift

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

迁移到亚马逊 GameLift 服务器 SDK 5.x

您的托管游戏服务器使用亚马逊 GameLift 服务器SDK与亚马逊 GameLift服务通信,以启动和管理玩家的游戏会话。最新版本的 Amazon s GameLift erver SDK 5 对亚马逊的新 GameLift 功能进行了多项改进和支持。如果您的游戏服务器版本当前使用的是 Amazon GameLift server SDK 4 或更早版本,请按照本主题中的指导更新您的游戏。

关于亚马逊 GameLift 服务器 SDK 5

Amazon GameLift 服务器SDK版本 5.0.0 及更高版本包含以下更新:

  • 扩展语言-库有以下语言版本:C++、C#、Go。你可以编译用于虚幻引擎的 C++ 库。

  • 游戏引擎插件支持 — 适用于虚幻引擎和Unity的亚马逊 GameLift 独立插件需要Amazon GameLift server SDK 5库。这些插件提供了指导性工作流程,用于集成、测试游戏并将其部署到Amazon GameLift 进行托管。参见适用于 Unity 的亚马逊 GameLift 插件服务器指南 SDK 5.x将游戏与适用于虚幻引擎的 Amazon GameLift 插件集成文档。

  • 亚马逊 GameLift Anywhere支持 — 借助Anywhere舰队,您可以设置自己的托管资源以使用亚马逊的 GameLift 功能(包括配对)。添加 Amazon GameLift 代理以自动管理游戏会话生命周期。使用Anywhere队列使用本地硬件进行生产托管,或者设置测试环境以实现快速迭代游戏开发。参见 亚马逊无 GameLift 处不在托管 Amazon A GameLift gent

  • 更新的测试工具 — Amazon GameLift Anywhere 功能允许您为游戏设置本地或基于云的测试环境。使用或不使用 Amazon A GameLift gent 设置测试。这些工具取代了 Amazon L GameLift ocal。请参阅 在 Amazon 上设置本地测试 GameLift Anywhere

  • 合并。 NETC# 的解决方案 — C# 服务器 SDK 5.1+ 支持。 NET框架 4.6.2(从 4.6.1 升级)和。 NET单个解决方案中包含 6.0。。 NET标准 2.1 在 Unity 构建的库中可用。

  • Compute资源-这种新资源结合了不同类型的托管资源。它包括基于云的托管资源(托管EC2或容器队列)和客户控制的托管资源(Anywhere舰队)。它包括以下更新:

    • Compute资源的新API调用包括:ListCompute()DescribeCompute()GetComputeAccess()。这些操作会返回任何类型的 Amazon GameLift 舰队的托管资源信息。通常,对于拥有使用服务器 SDK 5.x 的游戏服务器的舰队,请使用特定于计算的操作来替换特定于实例的操作。此外,这些操作适用于没有 Amazon A GameLift gent 的Anywhere车队:RegisterCompute()DeregisterCompute()GetComputeAuthToken()

    • ActiveCompute包含 CloudWatch 维度FleetIdLocation、和的新指标ComputeType。该指标取代了之前的指标 ActiveInstances

  • 用于远程访问的 Amazon S EC2 ystems Manager (SSM) — 为了提高安全性,在连接亚马逊 GameLift 托管队列中的实例SSH时请使用SSM而不是使用。请参阅 远程连接到 Amazon GameLift 舰队实例

更新你的游戏代码

要将游戏项目更新为使用服务器SDK版本 5.x,请进行以下更改:

  1. 获取适用于您的开发环境的最新 Amazon GameLift Server SDK 软件包 [下载网站]。按照下载的软件包和版本Readme的文件中的安装说明进行操作。有关在游戏项目中使用服务器的信息SDKs,请参阅以下说明。

  2. 按如下方式更新您的服务器代码:

    • 将服务器代码回调函数更改onCreateGameSession()onStartGameSession()

    • 根据需要更新InitSDK()输入:

      • 如果您计划将游戏服务器版本部署到亚马逊 GameLift 托管EC2队列或使用 Amazon A GameLift gent 的Anywhere队列中,请执行以下操作:

        InitSDK()带参数调用 (C++) (C#) (Unreal) (Go)。此调用设置计算环境和与 Amazon GameLift 服务的 WebSocket 连接。

      • 如果您计划将游戏服务器版本部署到没有 Amazon A GameLift gen Anywhere t 的队列中,请执行以下操作:

        InitSDK()使用服务器参数 (C++) (C#) (Unreal) (Go) 调用。游戏服务器进程使用这些参数与 Amazon GameLift 服务建立连接。

  3. 如果您的游戏服务器版本或其他托管应用程序在运行时与其他 AWS 资源通信,则需要更改应用程序访问这些资源的方式。将的AssumeRoleCredentials使用替换为新的 Amazon GameLift 服务器SDK操作GetFleetRoleCredentials()(适用于游戏服务器)或使用共享凭证(用于其他应用程序)。有关如何实现此更改的更多信息,请参阅与您的实例集中的其他 AWS 资源进行通信

  4. 如果您的项目调用服务器SDK操作GetInstanceCertificate()来检索TLS证书,请修改您的代码以改用新的 GetComputeCertificate() (C ++) (C#) (Unreal) (Go)。

  5. 将游戏版本上传到亚马逊时 GameLift (例如使用 upload-buildCreateBuild()),请将ServerSdkVersion参数设置为您正在使用的 5.x 版本(此参数目前默认为 4.0.2)。此参数必须与游戏服务器版本中的实际服务器SDK库相匹配。如果您为上传的游戏服务器版本指定了错误的版本,则使用该版本创建的所有队列都将失败。请参阅 将自定义服务器版本上传到 Amazon GameLift

    以下示例说明如何指定服务器SDK版本:

    aws gamelift upload-build \ --operating-system AMAZON_LINUX_2023 \ --server-sdk-version "5.0.0" \ --build-root "~/mygame" \ --name "My Game Nightly Build" \ --build-version "build 255" \ --region us-west-2
  6. 如果您使用脚本远程连接到托管舰队,请更新脚本以使用新流程,如中所远程连接到 Amazon GameLift 舰队实例述。