HTML5とWebGLを利用したクライアントの作成方法¶
Unityはターゲットとして「WebGLプラットフォーム」をサポートしており、HTML5テクノロジーとWebGLグラフィックレンダリングサブシステムを用いてウェブブラウザー上でUnityアプリケーションを実行できます。Strix Unity SDKのバージョン1.5.0以降では、STRIXのクライアントをWebGLプラットフォーム用にビルドすることができるようになりました。
サーバー設定¶
STRIXクライアントをWebGLプラットフォーム上で実行するためには、WebSocketプロトコルを使用する必要があります。マスターサーバーとルームサーバーがWebSocketを使用するように設定しておきましょう。要件に応じて、通常のWebSocket (ws) かセキュアWebSocket (wss) か、いずれか一方の接続を使用できます。
Strix Cloudでは、通常のWebSocketは利用できません。[クラスター作成] や [サーバー設定] ポップアップでは [プロトコル] ドロップダウンから「WSS」(セキュアWebSocket) を選択することになります。
注釈
[クラスター作成] ポップアップの [プロトコル] ドロップダウンは、最初は非表示になっています。これを表示するには [詳細オプション] をクリックする必要があります。
詳しくはStrix Cloudユーザーズガイドを参照してください。
Strix CloudでWebSocketを使用するために他の設定は必要ありません。
WebSocketによる接続¶
WebSocketを使用してマスターサーバーに接続するためには、StrixNetwork.ConnectMasterServer
メソッドのオーバーロードのうち引数が3つのもの (つまりport
引数のないもの) を使用します。host
文字列は以下のパターンのうちいずれかにします。
ws://master-hostname[:port][/path]
(通常のWebSocket接続の場合)wss://master-hostname[:port][/path]
(セキュアWebSocket接続の場合)
Strix Cloudを使用する場合、ポート (port) は常に9122であり、パス (path) は使用しません。host
文字列を組み立てるためには、アプリケーションダッシュボードで [マスターホスト名] を確認することのみが必要になります。マスターホスト名が000000000000000000000000.game.strixcloud.net
であれば、host
文字列は次のようになります。
wss://000000000000000000000000.game.strixcloud.net:9122
例:
string masterHostUrl = "wss://000000000000000000000000.game.strixcloud.net:9122";
StrixNetwork.instance.ConnectMasterServer(masterHostUrl, successHandler, failureHandler);
ルームサーバーに接続するときには、マスターサーバーがクライアントへ使用するべきプロトコルを通知し、それをSDKが自動的に使用します。ルームサーバー接続におけるWebSocketの使用については、普通は気にする必要がありません。しかし、自分でルームサーバーに接続する必要がある場合には、接続の際のプロトコルとしてRoomInfo.protocol
を使用してください。
注釈
ゲームをWebGLプラットフォーム向けにビルドするのであれば、StrixNetwork.ConnectMasterServer
のhost
パラメーターでは常にws://
かwss://
を指定するようにしてください。
host
パラメーターでプロトコルを省略した場合、つまり"000000000000000000000000.game.strixcloud.net"
のようにマスターホスト名のみからなる文字列を指定した場合は、使用されるデフォルトのプロトコルはスクリプトを実行するプラットフォームによって異なります。WebGL用にビルドしたプログラムをウェブブラウザー上で起動した場合は、WebSocketを使用してマスターサーバーに接続しようとします。しかし、Unityエディター内の再生モード(PLAYモード) を用いてプログラムを実行するときには、デフォルトのプロトコルはTCPであり、WebSocket用に設定されているマスターサーバーに接続できなくなってしまいます。
wss://000000000000000000000000.game.strixcloud.net:9122
と指定することにより、再生モード中を含めて常にConnectMasterServer
がセキュアWebSocketを用いて接続するようになります。
クロスプラットフォームでのマッチング¶
開発したゲームをWebGLプラットフォームと他のプラットフォームと両方に向けてリリースし、クロスプラットフォームのマッチングが行えるようにできます。
そのためには、全てのプラットフォームで、ws://
かwss://
から始まる同じhost
文字列を使用してマスターサーバーに接続します。
WebGLプラットフォーム向けのパッケージ作成¶
開発したゲームをWebGLプラットフォーム向けにビルドする際は、WebGLサポートのためのUnityの通常のパッケージ手順に従ってください。つまり、[ビルド設定] ダイアログボックスの [プラットフォーム] で [WebGL] を選択し、他の設定はデフォルトのままにしておきます。
Strix Unity SDKをWebGLプラットフォーム上で使用するためには、他の特殊な設定は必要ありません。
その他の考慮点¶
WebGLプラットフォームで使用するためには、Strix Unity SDKのバージョン1.5.0以降が必要です。これよりも前のバージョンではWebSocketをサポートしていないため、WebGLプラットフォームでは動作しません。
Strix CloudをWebGLプラットフォーム用に使用する場合は、「アプリケーション」の [Strixサーバーバージョン] を1.3.0以降に設定してください。[Strixサーバーバージョン] ドロップダウンは、Strix Cloudのアプリケーションダッシュボードの [オプション] 画面にあります。(Strix Cloudユーザーズガイドを参照してください。)
Unityは正式にWebGLプラットフォームをサポートしていますが、一部のUnityの機能に関してWebGLに特有の制限や制約が存在します。UnityのWebGLサポートに関しては、該当するUnityのドキュメントを参考にしてください。特に、Unityのドキュメントには「UnityのWebGLはモバイル端末をサポートしていません。」と記載されています。
注釈
Strix Unity SDKでは、例えば、WebGLのPCクライアントとネイティブのモバイルクライアントの間のクロスプラットフォーム相互運用を実現できます。開発したゲームはこの方法でリリースできるでしょう。
ユーザーのウェブブラウザーがWebGLクライアントをダウンロードするためにウェブサーバーが必要になります。Strix Cloudにはその機能がないため、別のウェブサイトが必要になります。