マスターサーバー接続

マスターサーバーは、現在実行中のルームサーバーと利用可能なルームに関する情報を保持しています。マスターサーバー接続は、StrixNetworkインスタンスのmasterSessionメンバーに保存されています。

まずマスターサーバーに接続する必要がありますが、これはインターネットアドレスやポートなどのルームサーバーに関する情報や利用可能なルームに関する情報を取得するためです。

一定時間使用されないとマスターサーバー接続は閉じられることがあります。しかし、一度マスターサーバー接続が確立すると、内部に接続情報が保存され、必要に応じてマスターサーバー接続が自動的に復元されます。

Strix Serverの使用を終える際には、マスターサーバー接続を明示的に切断することができます。

接続

接続に先立って、StrixNetworkシングルトンのapplicationIdプロパティにサーバーで指定されている値を設定しておきます。次に、StrixNetworkシングルトンのConnectMasterServer()メソッドを呼び出して接続します。この際にマスターサーバーのドメイン (ホスト) 名かIPアドレスを使用します。

// デフォルトのポート番号
void ConnectMasterServer(string host, StrixNetworkConnectEventHandler connectEventHandler, StrixNetworkConnectFailedEventHandler errorEventHandler)

// ユーザー指定のポート番号
void ConnectMasterServer(string host, int port, StrixNetworkConnectEventHandler connectEventHandler, StrixNetworkConnectFailedEventHandler errorEventHandler)

注釈

Strix Cloudを使用する場合は、アプリケーションIDはStrix Cloudが割り当て、Strix Cloudのご自分のアプリケーションのアプリケーションダッシュボードに表示されます。マスターサーバーのドメイン名も、ダッシュボードに [マスターホスト名] として表示されます。

Strix Cloudは常にデフォルトのポート番号 (後述) を使用するため、最初のオーバーロードを使用できます。

Strix Cloudを使用する際には、IPアドレスを指定するべきではありません。IPアドレスはサーバーインスタンスの運用中に変化する可能性があります。

既に接続している場合は、異なるhostportパラメーターを使用してこのメソッドを再度呼び出すと、新しい接続を開く前に、まず既存の接続が閉じられます。

接続が確立されると、StrixNetworkシングルトンのmasterSessionプロパティを介して、必要に応じてマスターサーバーセッションにアクセスできるようになります。

URLを用いた接続

Strix Unity SDKのバージョン1.5.0以降では、ConnectMasterServerの第1のオーバーロードのhostパラメーターに、IPアドレスやホストドメイン名を指定することに加えてURL形式の文字列を指定できるようになりました。

ホスト文字列の構文は次の通りです。

[protocol://]address[:port][/path]

ここに

  • 省略可能なprotocolはtcp、udp、ws、wssのいずれかです。

  • 必須のaddressはIPアドレスまたはドメイン名です。

  • 省略可能なportはポート番号です。

  • 省略可能なpathはサーバーの設定によって決まる文字列です。

このURL形式の文字列のプロトコルは次の通りです。

文字列

説明

(省略した場合)

hostの文字列全体をIPアドレスかドメイン名として、portとpathは省略します。プラットフォームのデフォルトのトランスポートプロトコルを使用します。

tcp://

トランスポートはTCPになります。

udp://

トランスポートはReliable UDPになります。(RUDPはStrix Cloudでは使用できません.)

ws://

トランスポートは通常のWebSocketになります。

wss://

トランスポートはセキュアWebSocketになります。

portを省略すると、プロトコルのデフォルトのポート番号が使用されます。それは以下の通りです。

使用するプロトコル

ポート番号

TCP

9122

Reliable UDP

9122

通常のWebSocket (ws)

80

セキュアWebSocket (wss)

443

注釈

セキュアWebSocketのURLではデフォルトのポート番号は443ですが、Strix CloudのマスターサーバーはWebSocketの場合も常にポート9122を使用します。Strix CloudでセキュアWebSocketを使用するときには、ポート番号を省略できません。

TCPかUDPを使用するときには、pathは無視されます。

WebSocketプロトコルを使用するときには、pathは接続ハンドシェイクの一部としてサーバーに送信されます。pathを省略すると"/"であると見なします。pathはサーバーが期待するパスと一致する必要があります。Strix Cloudを使用する場合は、サーバーはパスとして常に"/"を期待するため、ホスト文字列ではパスを省略します。

例:

  • "000000000000000000000000.game.strixcloud.net": TCPでドメイン名が000000000000000000000000.game.strixcloud.netであるサーバーのポート9122へ接続。

  • "tcp://198.51.100.2:8888": TCPで198.51.100.2にあるサーバーのポート8888へ接続。

  • "wss://000000000000000000000000.game.strixcloud.net:9122": セキュアWebSocketでドメイン名が000000000000000000000000.game.strixcloud.netであるサーバーのポート9122へ空のパス文字列を用いて接続。

注釈

WebSocketのプロトコルは (通常のものもセキュアなものも) WebGLプラットフォームで使用することを意図しています。これらのプロトコルはTCPと比べると、CPU使用率もネットワークトラフィックもオーバーヘッドが大きくなります。WebGLプラットフォームをターゲットにしているか、WebGLプラットフォームとの間のクロスプラットフォーム対戦を予定しているのでないかぎり、WebSocketトランスポートの使用はお勧めしません。

(WebGLサポートに関する詳細はHTML5とWebGLを利用したクライアントの作成方法をご覧ください。)

Strix Cloudは、トランスポートとしてTCPとセキュアWebSocket (wss) をサポートします。Reliable UDPと通常のWebSocket (ws) は利用できません。

切断

マスターサーバーは、StrixNetworkDisconnectMasterServer()メソッドを用いて明示的に切断できます。

void DisconnectMasterServer()

明示的に切断した後は、内部的に保存されていた接続情報は破棄され、マスターサーバーを必要とする全ての機能の呼び出しが失敗するようになります。通常、マスターサーバーの切断は、ゲームのマルチプレイヤーモードを抜けて、ネットワーク機能を終了するときに行います。

状態

マスターサーバー接続のステータスがStrixNetwork.masterSessionIsConnected値に保存されています。

bool isConnected = StrixNetwork.instance.masterSession.IsConnected;

マスターサーバー接続は常に有効ではありません。SDKはその利用状況を把握し、リソースを節約するためにタイムアウトによって接続を閉じるからです。しかし、ConnectMasterServerで指定された接続情報が内部的に保存されており、マスターサーバー接続が再び必要になった際には自動的に接続が復元されます。この処理はユーザーコードに対して透過的であり、気にする必要はありません。

masterSession.IsConnectedは実際の接続状態を示します。つまり、使用されなかったためにマスターサーバー接続が閉じられると、これはfalseを返します。通常はIsConnectedの状態も気にする必要はありません。