

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# Amazon GameLift Servers と Unity ゲームサーバープロジェクトを統合する
<a name="integration-unity-server-sdk4"></a>

**注記**  
このトピックでは、Unity 用 Amazon GameLift Servers プラグインの前のバージョンについて説明します。バージョン 1.x では、サーバー SDK for Amazon GameLift Servers 4.x 以前が使用されます。サーバー SDK 5.x を使用し、Amazon GameLift Servers Anywhere やマネージドコンテナホスティングなどの新しい機能をサポートする最新のプラグインバージョンのドキュメントについては、「[Unity 用 Amazon GameLift Servers プラグイン (サーバー 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>

ゲームサーバーを統合する前に、次のタスクを完了します。
+ [Amazon GameLift Servers 用に IAM サービスロールをセットアップする](setting-up-role.md)
+ [プラグインをインストールしてセットアップする](unity-plug-in-sdk4.md#unity-plug-in-sdk4-install)

## 新しいサーバープロセスのセットアップ
<a name="integration-unity-server-sdk4-server-process"></a>

**注記**  
このトピックでは、サーバー SDK 4.x 以前を使用する Unity バージョン 1.0.0 用の Amazon GameLift Servers プラグインについて説明します。

Amazon GameLift Servers との通信をセットアップし、サーバープロセスがゲームセッションをホストする準備ができたことを報告します。

1. `InitSDK()` を呼び出してサーバー SDK を初期化します。

1. サーバーがゲームセッションを受け入れる準備をするには、接続ポートとゲームセッションの場所の詳細を指定して `ProcessReady()` を呼び出します。`OnGameSession()`、`OnGameSessionUpdate()`、`OnProcessTerminate()`、`OnHealthCheck()` など、Amazon GameLift Serversサービスが呼び出すコールバック関数の名前を含めます。コールバックの提供には数分かかる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>

**注記**  
このトピックでは、サーバー SDK 4.x 以前を使用する Unity バージョン 1.0.0 用の Amazon GameLift Servers プラグインについて説明します。

ゲームの初期化が完了すると、ゲームセッションを開始できます。

1. コールバック関数 `onStartGameSession` を実装します。Amazon GameLift Servers はこのメソッドを呼び出して、サーバープロセスで新しいゲームセッションを開始し、プレイヤー接続を受信します。

1. ゲームセッションをアクティブ化するには、`ActivateGameSession()` を呼び出します。SDK の詳細については、「[C\$1 サーバー SDK for Amazon GameLift Servers 4.x -- アクション](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>

**注記**  
このトピックでは、サーバー SDK 4.x 以前を使用する Unity バージョン 1.0.0 用の Amazon GameLift Servers プラグインについて説明します。

ゲームセッションの終了を 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>

**注記**  
このトピックでは、サーバー SDK 4.x 以前を使用する Unity バージョン 1.0.0 用の Amazon GameLift Servers プラグインについて説明します。

ゲームサーバーを Amazon GameLift Servers と統合したら、ビルドファイルをフリートにアップロードして、Amazon GameLift Servers がゲームホスティング用にデプロイできるようにします。Amazon GameLift Servers にサーバーをアップロードする方法については、「[Amazon GameLift Servers のゲームサーバービルドを作成する](gamelift-build-cli-uploading.md)」を参照してください。