将 Amazon GameLift 与 Unity 游戏服务器项目集成
注意
本主题提供了适用于 Unity 的 Amazon GameLift 插件的早期版本相关信息。版本 1.0.0(2021 年发布)使用 Amazon GameLift 服务器 SDK 4.x 或更早版本。有关插件最新版本(使用服务器 SDK 5.x 并支持 Amazon GameLift Anywhere)的文档,请参阅适用于 Unity 的 Amazon GameLift 插件(服务器 SDK 5.x)。
本主题可帮助您将托管在 Amazon GameLift 上的自定义游戏服务器准备就绪。游戏服务器必须能够通知 Amazon GameLift 自身状态,在提示时开始和停止游戏会话,以及执行其他任务。有关更多信息,请参阅将 Amazon GameLift 添加到您的游戏服务器。
先决条件
在集成游戏服务器之前,请完成以下任务:
设置新的服务器进程
注意
本主题指的是适用于 Unity 的 Amazon GameLift 插件版本 1.0.0(使用服务器 SDK 4.x 或更早版本)。
设置与 Amazon GameLift 的通信,并报告服务器进程已准备好托管游戏会话。
-
通过调用
InitSDK()
初始化服务器软件开发工具包。 -
要让服务器做好接受游戏会话的准备,调用
ProcessReady()
以及连接端口和游戏会话位置的详细信息。包括 Amazon GameLift 服务调用的回调函数的名称,例如OnGameSession()
、OnGameSessionUpdate()
、OnProcessTerminate()
和OnHealthCheck()
。Amazon GameLift 可能需要几分钟来提供回调。 -
Amazon GameLift 将服务器进程的状态更新为
ACTIVE
。 -
Amazon GameLift 会定期调用
onHealthCheck
。
以下代码示例展示了如何使用 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; }
启动游戏会话
注意
本主题指的是适用于 Unity 的 Amazon GameLift 插件版本 1.0.0(使用服务器 SDK 4.x 或更早版本)。
游戏初始化完成后,您可以开始游戏会话。
-
实现回调函数
onStartGameSession
。Amazon GameLift 调用此方法在服务器进程上启动新的游戏会话并接收玩家连接。 -
要激活游戏会话,请调用
ActivateGameSession()
。有关软件开发工具包的更多信息,请参阅适用于 C# 的 Amazon GameLift 服务器 SDK 4.x:操作。
以下代码示例说明了如何使用 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(); }
结束游戏会话
注意
本主题指的是适用于 Unity 的 Amazon GameLift 插件版本 1.0.0(使用服务器 SDK 4.x 或更早版本)。
游戏会话结束时通知 Amazon GameLift。最佳实操是在游戏会话完成后关闭服务器进程,以回收和刷新托管资源。
-
设置一个名为
onProcessTerminate
的函数以接收来自 Amazon GameLift 的请求并调用ProcessEnding()
。 -
进程状态更改为
TERMINATED
。
以下示例描述了如何结束游戏会话的进程。
var processEndingOutcome = GameLiftServerAPI.ProcessEnding(); if (processReadyOutcome.Success) Environment.Exit(0); // otherwise, exit with error code Environment.Exit(errorCode);
创建服务器构建并上传到 Amazon GameLift
注意
本主题指的是适用于 Unity 的 Amazon GameLift 插件版本 1.0.0(使用服务器 SDK 4.x 或更早版本)。
将游戏服务器与 Amazon GameLift 集成后,将构建文件上传到实例集中,这样 Amazon GameLift 就可以将其部署到游戏托管。有关如何将服务器上传到 Amazon GameLift 的更多信息,请参阅为 Amazon GameLift 托管部署自定义服务器生成包。