本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
將 Amazon GameLift 與 Unity 遊戲服務器項目集成
注意
本主題提供適用於 Unity 的舊版 Amazon GameLift 外掛程式的資訊。版本 1.0.0(於 2021 年發布)使用 Amazon GameLift 服務器 SDK 4.x 或更早版本。有關使用服務器 SDK 5.x 並支持 Amazon 的最新版本的插件的文檔 GameLift Anywhere,請參閱Amazon GameLift 插件統一指南服務器 SDK 5.x。
本主題可協助您準備自訂遊戲伺服器,以便在 Amazon 上託管 GameLift。遊戲伺服器必須能夠通 GameLift 知 Amazon 其狀態、在出現提示時啟動和停止遊戲工作階段,以及執行其他任務。如需詳細資訊,請參閱添加 Amazon GameLift 到您的遊戲服務器。
必要條件
在整合您的遊戲伺服器之前,請先完成下列工作:
設定新的伺服器處理序
注意
本主題指的是統一版本 1.0.0 的 Amazon GameLift 插件,它使用服務器 SDK 4.x 或更早版本。
設定與 Amazon 的通訊, GameLift 並報告伺服器程序已準備好主持遊戲工作階段。
-
通過調用初始化服務器 SDK
InitSDK()
。 -
要準備服務器接受遊戲會話,請
ProcessReady()
使用連接端口和遊戲會話位置詳細信息進行調用。包括 Amazon GameLift 服務調用的回調函數的名稱,例如OnGameSession()
,,OnGameSessionUpdate()
OnProcessTerminate()
,OnHealthCheck()
。Amazon GameLift 可能需要幾分鐘才能提供回調。 -
Amazon 將服務器進程的狀態 GameLift 更新為
ACTIVE
。 -
Amazon
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.0.0 的 Amazon GameLift 插件,它使用服務器 SDK 4.x 或更早版本。
遊戲初始化完成後,您可以開始遊戲工作階段。
-
實作回呼函式
onStartGameSession
。Amazon GameLift 調用此方法以在服務器進程上啟動新的遊戲會話並接收玩家連接。 -
若要啟動遊戲工作階段,請撥打電話
ActivateGameSession()
。如需 SDK 的詳細資訊,請參閱亞馬遜GameLift服務器 SDK(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(); }
結束遊戲工作階段
注意
本主題指的是統一版本 1.0.0 的 Amazon GameLift 插件,它使用服務器 SDK 4.x 或更早版本。
GameLift 當遊戲會話結束時通知 Amazon。最佳做法是在遊戲工作階段完成後關閉伺服器程序,以回收和重新整理主機資源。
-
設置一個名為接收
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
注意
本主題指的是統一版本 1.0.0 的 Amazon GameLift 插件,它使用服務器 SDK 4.x 或更早版本。
將遊戲伺服器與 Amazon 整合後 GameLift,請將建置檔案上傳到叢集,以便 Amazon GameLift 可以部署它進行遊戲託管。如需如何將伺服器上傳到 Amazon 的詳細資訊 GameLift,請參閱將自訂伺服器組建上傳到亞馬遜 GameLift。