将亚马逊 GameLift 与 Unity 游戏服务器项目集成 - Amazon GameLift
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

将亚马逊 GameLift 与 Unity 游戏服务器项目集成

注意

本主题提供有关适用于 Unity 的 Amazon GameLift 插件的早期版本的信息。版本 1.0.0(2021 年发布)使用亚马逊 GameLift 服务器 SDK 4.x 或更早版本。有关该插件最新版本(该插件使用服务器 SDK 5.x 且支持 Amazon)的文档 GameLift Anywhere,请参阅

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

先决条件

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

设置新的服务器进程

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

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

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

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

  4. 亚马逊onHealthCheck会定期致 GameLift 电。

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

//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; }

启动游戏会话

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

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

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

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

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(); }

结束游戏会话

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

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

  2. 进程状态更改为 TERMINATED

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

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

创建服务器、构建并上传到 Amazon GameLift

将游戏服务器与 Amazon 集成后 GameLift,将构建文件上传到队列中,以便亚马逊 GameLift 可以将其部署用于游戏托管。有关如何将服务器上传到 Amazon 的更多信息 GameLift,请参阅将自定义服务器构建上传到 Amazon GameLift