

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

# 迁移到 Amazon GameLift Servers 服务器 SDK 5.x
<a name="reference-serversdk5-migration"></a>

要将游戏项目更新为使用服务器软件开发工具包版本 5.x，请进行以下更改：

**注意**  
如果您需要继续使用服务器 SDK 版本 4.x 或更早版本，请参阅 [Amazon GameLift Servers 服务器 SDK 版本 4 及更早版本](reference-serversdk4.md)以获取文档和下载信息。特别是对于 SDK 版本 4.0.2，您可以从[官方 GitHub 版本](https://github.com/amazon-gamelift/amazon-gamelift-servers-csharp-server-sdk/releases)中下载。

1. 获取适用于您的开发环境的最新 Amazon GameLift Servers 服务器 SDK 软件包 **[[下载网站](https://aws.amazon.com/gamelift/servers/getting-started-sdks/)]**。按照下载的软件包和版本`Readme`的文件中的安装说明进行操作。有关在游戏项目中使用服务器的信息 SDKs，请参阅以下说明。
   + [针对使用 C\+\+、C\# 或 Go 的开发环境](gamelift-sdk-server-api.md)
   + [针对 Unreal Engine 项目（仅限适用于 Unreal 库的 C\+\+ 服务器 SDK）](integration-engines-setup-unreal.md)
   + [针对 Unity 项目（仅限适用于 Unity 库的 C\# 服务器 SDK）](integration-engines-unity-using.md)
   + [针对与适用于 Unreal Engine 的 Amazon GameLift Servers 插件结合使用](unreal-plugin.md)
   + [针对与适用于 Unity 的 Amazon GameLift Servers 插件结合使用](unity-plug-in.md)

1. 按如下方式更新服务器代码：
   + 将服务器代码回调函数 `onCreateGameSession()` 更改为 `onStartGameSession()`。
   + 根据需要更新 `InitSDK()` 输入：
     + 如果您计划在有 Amazon GameLift Servers 代理的情况下将游戏服务器生成包部署到 Amazon GameLift Servers 托管式 EC2 实例集或 Anywhere 实例集：

       调用 `InitSDK()` 而无需使用参数（[C\+\+](integration-server-sdk5-cpp-actions.md#integration-server-sdk5-cpp-initsdk)）（[C\#](integration-server-sdk5-csharp-actions.md#integration-server-sdk5-csharp-initsdk)）（[Unreal](integration-server-sdk5-unreal-actions.md#integration-server-sdk5-unreal-initsdk)）。此调用设置计算环境和与Amazon GameLift Servers服务的 WebSocket 连接。
     + 如果您计划在没有 Amazon GameLift Servers 代理的情况下将游戏服务器生成包部署到 Anywhere 实例集：

       使用服务器参数调用 `InitSDK()`（[C\+\+](integration-server-sdk5-cpp-actions.md#integration-server-sdk5-cpp-initsdk-anywhere)）（[C\#](integration-server-sdk5-csharp-actions.md#integration-server-sdk5-csharp-initsdk-anywhere)）（[Unreal](integration-server-sdk5-unreal-actions.md#integration-server-sdk5-unreal-initsdk-anywhere)）。游戏服务器进程使用这些参数与 Amazon GameLift Servers 服务建立连接。

1. 如果您的游戏服务器生成包或其他托管应用程序在运行时与其他 AWS 资源通信，您需要更改应用程序访问这些资源的方式。使用新服务器 SDK 操作 `GetFleetRoleCredentials()` 替换 `AssumeRoleCredentials`（对于游戏服务器），或使用共享凭证（对于其他应用程序）。有关如何实施此更改的更多信息，请参阅[将您的Amazon GameLift Servers托管游戏服务器连接到其他 AWS 资源](gamelift-sdk-server-resources.md)。

1. 如果您的项目调用了服务器 SDK 操作 `GetInstanceCertificate()` 来检索 TLS 证书，请将代码修改为使用新的 `GetComputeCertificate()`（[C\+\+](integration-server-sdk5-cpp-actions.md#integration-server-sdk5-cpp-getcomputecertificate)）（[C\#](integration-server-sdk5-csharp-actions.md#integration-server-sdk5-csharp-getcomputecertificate)）（[Unreal](integration-server-sdk5-unreal-actions.md#integration-server-sdk5-unreal-getcomputecertificate)）。

1. 将游戏版本上传到时Amazon GameLift Servers（例如使用 [upload-build](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/gamelift/upload-build.html) 或 [CreateBuild()](https://docs.aws.amazon.com/gameliftservers/latest/apireference/API_CreateBuild.html)），请将`ServerSdkVersion`参数设置为您正在使用的 5.x 版本（此参数当前默认为 4.0.2）。该参数必须与游戏服务器生成包中的实际服务器 SDK 库匹配。如果为上传的游戏服务器生成包指定了错误的版本，那么使用该生成包创建的所有实例集都将失败。请参阅[为 Amazon GameLift Servers 创建游戏服务器生成包](gamelift-build-cli-uploading.md)。

   以下示例说明了如何指定服务器 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
   ```

1. 如果您使用脚本远程连接到托管式实例集，请更新脚本以使用新流程，如[Connect 连接到舰队实例](fleets-remote-access.md)中所述。