将 Amazon GameLift Servers 与 Unity 游戏服务器项目集成 - Amazon GameLift Servers

将 Amazon GameLift Servers 与 Unity 游戏服务器项目集成

注意

本主题提供了适用于 Unity 的 Amazon GameLift Servers 插件的早期版本相关信息。版本 1.x 使用适用于 Amazon GameLift Servers 4.x 或更早版本的服务器 SDK。有关插件最新版本(使用服务器 SDK 5.x 并支持 Amazon GameLift Servers Anywhere 和托管式容器托管等新功能)的文档,请参阅Amazon GameLift Servers适用于 Unity 的插件(服务器 SDK 5.x)

本主题可帮助您将托管在 Amazon GameLift Servers 上的自定义游戏服务器准备就绪。游戏服务器必须能够通知 Amazon GameLift Servers 自身状态,在提示时开始和停止游戏会话,以及执行其他任务。有关更多信息,请参阅 借助服务器 SDK 将 Amazon GameLift Servers 添加到游戏服务器

先决条件

在集成游戏服务器之前,请完成以下任务:

设置新的服务器进程

注意

本主题指的是适用于 Unity 的 Amazon GameLift Servers 插件版本 1.0.0(使用服务器 SDK 4.x 或更早版本)。

设置与 Amazon GameLift Servers 的通信,并报告服务器进程已准备好托管游戏会话。

  1. 通过调用 InitSDK() 初始化服务器软件开发工具包。

  2. 要让服务器做好接受游戏会话的准备,调用 ProcessReady() 以及连接端口和游戏会话位置的详细信息。包括 Amazon GameLift Servers 服务调用的回调函数的名称,例如 OnGameSession()OnGameSessionUpdate()OnProcessTerminate()OnHealthCheck()。Amazon GameLift Servers 可能需要几分钟来提供回调。

  3. Amazon GameLift Servers 将服务器进程的状态更新为 ACTIVE

  4. Amazon GameLift Servers 定期调用 onHealthCheck

以下代码示例展示了如何使用 Amazon GameLift Servers 设置简单的服务器进程。

//initSDK var initSDKOutcome = GameLiftServerAPI.InitSDK(); //processReady // Set parameters and call ProcessReady var processParams = new ProcessParameters( this.OnGameSession, this.OnProcessTerminate, this.OnHealthCheck, this.OnGameSessionUpdate, port, // Examples of log and error files written by the game server new LogParameters(new List<string>() { "C:\\game\\logs", "C:\\game\\error" }) ); var processReadyOutcome = GameLiftServerAPI.ProcessReady(processParams); // Implement callback functions void OnGameSession(GameSession gameSession) { // game-specific tasks when starting a new game session, such as loading map // When ready to receive players var activateGameSessionOutcome = GameLiftServerAPI.ActivateGameSession(); } void OnProcessTerminate() { // game-specific tasks required to gracefully shut down a game session, // such as notifying players, preserving game state data, and other cleanup var ProcessEndingOutcome = GameLiftServerAPI.ProcessEnding(); } bool OnHealthCheck() { bool isHealthy; // complete health evaluation within 60 seconds and set health return isHealthy; }

启动游戏会话

注意

本主题指的是适用于 Unity 的 Amazon GameLift Servers 插件版本 1.0.0(使用服务器 SDK 4.x 或更早版本)。

游戏初始化完成后,您可以开始游戏会话。

  1. 实现回调函数 onStartGameSession。Amazon GameLift Servers 调用此方法在服务器进程上启动新的游戏会话并接收玩家连接。

  2. 要激活游戏会话,请调用 ActivateGameSession()。有关软件开发工具包的更多信息,请参阅适用于 Amazon GameLift Servers 4.x 的 C# 服务器 SDK – 操作

以下代码示例说明了如何使用 Amazon GameLift Servers 启动游戏会话。

void OnStartGameSession(GameSession gameSession) { // game-specific tasks when starting a new game session, such as loading map ... // When ready to receive players var activateGameSessionOutcome = GameLiftServerAPI.ActivateGameSession(); }

结束游戏会话

注意

本主题指的是适用于 Unity 的 Amazon GameLift Servers 插件版本 1.0.0(使用服务器 SDK 4.x 或更早版本)。

游戏会话结束时通知 Amazon GameLift Servers。最佳实操是在游戏会话完成后关闭服务器进程,以回收和刷新托管资源。

  1. 设置一个名为 onProcessTerminate 的函数以接收来自 Amazon GameLift Servers 的请求并调用 ProcessEnding()

  2. 进程状态更改为 TERMINATED

以下示例描述了如何结束游戏会话的进程。

var processEndingOutcome = GameLiftServerAPI.ProcessEnding(); if (processReadyOutcome.Success) Environment.Exit(0); // otherwise, exit with error code Environment.Exit(errorCode);

创建服务器生成包并上传到 Amazon GameLift Servers

注意

本主题指的是适用于 Unity 的 Amazon GameLift Servers 插件版本 1.0.0(使用服务器 SDK 4.x 或更早版本)。

将游戏服务器与 Amazon GameLift Servers 集成后,将生成包文件上传到实例集中,这样 Amazon GameLift Servers 就可以将其部署到游戏托管。有关如何将服务器上传到 Amazon GameLift Servers 的更多信息,请参阅为 Amazon GameLift Servers 创建游戏服务器生成包