HTML5とWebGLを利用したクライアントの作成方法

Unityはターゲットとして「WebGLプラットフォーム」をサポートしており、HTML5テクノロジーとWebGLグラフィックレンダリングサブシステムを用いてウェブブラウザー上でUnityアプリケーションを実行できます。Strix Unity SDKのバージョン1.5.0以降では、STRIXのクライアントをWebGLプラットフォーム用にビルドすることができるようになりました。

A screenshot of a sample game running on a web browser using 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.ConnectMasterServerhostパラメーターでは常に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にはその機能がないため、別のウェブサイトが必要になります。