

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# Amazon GameLift Servers 與 Unity 遊戲伺服器專案整合
<a name="integration-unity-server-sdk4"></a>

**注意**  
本主題提供 Unity 舊版Amazon GameLift Servers 外掛程式的資訊。1.x 版使用適用於 4.x Amazon GameLift Servers 或更早版本的伺服器 SDK。如需使用伺服器 SDK 5.x 並支援 Amazon GameLift Servers Anywhere 和受管容器託管等較新功能之最新外掛程式版本的文件，請參閱 [Amazon GameLift Servers Unity 的外掛程式 （伺服器 SDK 5.x)](unity-plug-in.md)。

本主題可協助您準備自訂遊戲伺服器，以便在 上託管 Amazon GameLift Servers。遊戲伺服器必須能夠Amazon GameLift Servers通知其狀態、在出現提示時啟動和停止遊戲工作階段，以及執行其他任務。如需詳細資訊，請參閱 [使用伺服器 SDK 將 Amazon GameLift Servers新增至您的遊戲伺服器](gamelift-sdk-server-api.md)。

## 先決條件
<a name="integration-unity-server-sdk4-prereq"></a>

在整合遊戲伺服器之前，請先完成下列任務：
+ [設定 的 IAM 服務角色 Amazon GameLift Servers](setting-up-role.md)
+ [安裝和設定 外掛程式](unity-plug-in-sdk4.md#unity-plug-in-sdk4-install)

## 設定新的伺服器程序
<a name="integration-unity-server-sdk4-server-process"></a>

**注意**  
本主題參考 Unity 1.0.0 版的Amazon GameLift Servers 外掛程式，其使用伺服器 SDK 4.x 或更早版本。

設定與 的通訊，Amazon GameLift Servers並回報伺服器程序已準備好託管遊戲工作階段。

1. 呼叫 來初始化伺服器 SDK`InitSDK()`。

1. 若要讓伺服器準備好接受遊戲工作階段，`ProcessReady()`請使用連線連接埠和遊戲工作階段位置詳細資訊呼叫 。包含Amazon GameLift Servers服務叫用的回呼函數名稱，例如 `OnGameSession()`、`OnGameSessionUpdate()`、`OnProcessTerminate()`、`OnHealthCheck()`。 Amazon GameLift Servers 可能需要幾分鐘才能提供回呼。

1. Amazon GameLift Servers 會將伺服器程序的狀態更新為 `ACTIVE`。

1. 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;
}
```

## 啟動遊戲工作階段
<a name="integration-unity-server-sdk4-start-game-session"></a>

**注意**  
本主題參考 Unity 1.0.0 版的Amazon GameLift Servers 外掛程式，其使用伺服器 SDK 4.x 或更早版本。

遊戲初始化完成後，您可以啟動遊戲工作階段。

1. 實作回呼函數 `onStartGameSession`。 會Amazon GameLift Servers叫用此方法，在伺服器程序上啟動新的遊戲工作階段，並接收玩家連線。

1. 若要啟用遊戲工作階段，請呼叫 `ActivateGameSession()`。如需 SDK 的詳細資訊，請參閱 [適用於 Amazon GameLift Servers 4.x 的 C\# 伺服器 SDK -- 動作](integration-server-sdk-csharp-ref-actions.md)。

下列程式碼範例說明如何使用 啟動遊戲工作階段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();
}
```

## 結束遊戲工作階段
<a name="integration-unity-server-sdk4-end-game-session"></a>

**注意**  
本主題參考 Unity 1.0.0 版的Amazon GameLift Servers 外掛程式，其使用伺服器 SDK 4.x 或更早版本。

Amazon GameLift Servers 遊戲工作階段結束時通知 。最佳實務是在遊戲工作階段完成後關閉伺服器程序，以回收和重新整理託管資源。

1. 設定名為 的函數`onProcessTerminate`來接收來自 的請求Amazon GameLift Servers並呼叫 `ProcessEnding()`。

1. 程序狀態會變更為 `TERMINATED`。

下列範例說明如何結束遊戲工作階段的程序。

```
var processEndingOutcome = GameLiftServerAPI.ProcessEnding();

if (processReadyOutcome.Success)
   Environment.Exit(0);

// otherwise, exit with error code
Environment.Exit(errorCode);
```

## 建立伺服器建置並上傳至 Amazon GameLift Servers
<a name="integration-unity-server-sdk4-gamelift-connection"></a>

**注意**  
本主題參考 Unity 1.0.0 版的Amazon GameLift Servers 外掛程式，其使用伺服器 SDK 4.x 或更早版本。

將遊戲伺服器與 整合之後Amazon GameLift Servers，請將建置檔案上傳至機群，讓 Amazon GameLift Servers可以將其部署以進行遊戲託管。如需如何將伺服器上傳至 的詳細資訊Amazon GameLift Servers，請參閱 [為 建立遊戲伺服器組建 Amazon GameLift Servers](gamelift-build-cli-uploading.md)。