本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
迁移到亚马逊 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 维度FleetId
Location
、和的新指标ComputeType
。该指标取代了之前的指标ActiveInstances
。
-
用于远程访问的 Amazon S EC2 ystems Manager (SSM) — 为了提高安全性,在连接亚马逊 GameLift 托管队列中的实例SSH时请使用SSM而不是使用。请参阅 远程连接到 Amazon GameLift 舰队实例。
更新你的游戏代码
要将游戏项目更新为使用服务器SDK版本 5.x,请进行以下更改:
-
获取适用于您的开发环境的最新 Amazon GameLift Server SDK 软件包 [下载网站
]。按照下载的软件包和版本 Readme
的文件中的安装说明进行操作。有关在游戏项目中使用服务器的信息SDKs,请参阅以下说明。 -
按如下方式更新您的服务器代码:
将服务器代码回调函数更改
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 服务建立连接。
-
-
如果您的游戏服务器版本或其他托管应用程序在运行时与其他 AWS 资源通信,则需要更改应用程序访问这些资源的方式。将的
AssumeRoleCredentials
使用替换为新的 Amazon GameLift 服务器SDK操作GetFleetRoleCredentials()
(适用于游戏服务器)或使用共享凭证(用于其他应用程序)。有关如何实现此更改的更多信息,请参阅与您的实例集中的其他 AWS 资源进行通信。 -
如果您的项目调用服务器SDK操作
GetInstanceCertificate()
来检索TLS证书,请修改您的代码以改用新的GetComputeCertificate()
(C ++) (C#) (Unreal) (Go)。 -
将游戏版本上传到亚马逊时 GameLift (例如使用 upload-build
或 CreateBuild()),请将 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
-
如果您使用脚本远程连接到托管舰队,请更新脚本以使用新流程,如中所远程连接到 Amazon GameLift 舰队实例述。