WebGL
Quantumは複数のプラットフォームをサポートし、そこにはWebGLも含まれますが、WebGLで動作させるために開発者が注意すべき固有の課題が存在します。このページは、それら考慮事項の一覧になります。
WebGLパフォーマンス
WebGLは一定の制限がある特殊な環境です。一般的に、パフォーマンスは他のプラットフォームに比べて低いことが予想されます。そのため、最適なパフォーマンスを確保するには、エディター上だけではなくWebGLビルドでアプリケーションのパフォーマンスをテストすることが重要です。
runInBackgroundオプションがPlayer Settingsで無効になっている場合、プレイヤーが別のタブに切り替えた際にアプリケーションが停止します。タブが長時間非アクティブになっているとクライアントは切断されるため、タブにフォーカスが戻ったら接続を再確立する必要があります。
WebGLのパフォーマンスは低いため、Quantumコードプロジェクトはリリースモードでビルドし、UnityはIL2CPPに設定することをお勧めします。Quantumコードプロジェクトのデバッグビルドは、WebGLでは非常に遅くなります。
Unityの古いバージョンのWebGLはシングルスレッドのみをサポートしていて、シミュレーションはメインスレッドに制限され、SimulationConfigのThreadCount設定は無視されます。Unity 6からは、実験的機能としてマルチスレッドが導入され、PlayerSettingsから有効にすることができます。
LTOを有効にしたWebGLプロジェクトビルド時に、ネイティブLLVMビルドチェーンにおいて既知のコードストリップ問題が発生します。これによって、Quantumが圧縮処理を行っている場合にRuntimeError: unreachableエラーが発生する可能性があります。
この問題を回避するには、Quantum SDKを最新の3.0または3.1にアップグレードし、プロジェクトにcom.unity.sharp-zip-libパッケージを追加してください。
ネイティブLLVMビルドチェーンにおいて、LTOを有効にしたWebGLプロジェクトのビルド時に既知のコード削除問題が発生します。これにより、Quantumが圧縮処理を行う際にランタイムでRuntimeError: unreachableエラーが発生する可能性があります。
この問題を回避するには、Quantum SDKを最新版の3.0または3.1にアップグレードし、プロジェクトにcom.unity.sharp-zip-libパッケージを含めるようにしてください。
スタックトレース
リリースビルドのWebGLパフォーマンスを向上するために、Unityのログのスタックトレースを無効にすることができます。edit > project settings > Player > Other Settingsに移動し、Stack Trace*までスクロールして、Warning/LogのスタックトレースをNoneに設定してください。
LUTの非同期ローディング
WebGLにおいて、ビルドサイズは重要な考慮事項です。Quantumパッケージサイズの大部分はLUT(ルックアップテーブル)ファイルに由来しているため、これらをAddressableアセットとしてロードすることで最終ビルドサイズを削減できます。LUTファイルをAddressableとして設定するには、以下の手順に従ってください。
Addressablesのインストール
Window>Package Managerを開きます。Addressablesを選択してインストールします。
Addressablesの初期化
Window>Asset Management>Addressables>Groupsを開きます。Create AddressablesSettingsをクリックします。
LUTファイルをAddressablesに設定
Assets/Photon/Quantum/Resources/LUT内のすべてのファイルを、Resourcesフォルダー外のフォルダーに移動します。
- インスペクターから
Addressableチェックボックスを有効にします。 Assets/QuantumUser/ResourcesにあるQuantumLookupTablesについても同じ手順を繰り返します。Resourcesフォルダー外にファイルを移動し、インスペクターからAddressableチェックボックスを有効にします。
Scripting Define Symbol
Edit>ProjectSettings>Playerを開きます。- 正しいプラットフォームタブを選択していることを確認します。ここでは
WebGL settingsです。 ScriptDefineSymbolsリストにQUANTUM_ENABLE_ASYNC_LUT_LOADING定義を追加します。
WebSockets
ブラウザは直接UDP接続を確立できず、かわりにTCP上のWebSocketが使用されます。しかし、TCPには信頼性があり、シーケンスの順序制御は、ネットワーク接続状況が悪いプレイヤーのゲームプレイに悪影響を及ぼす可能性があります。最高のプレイ体験を提供するには、ゲームをダウンロードさせることも推奨されます。
アプリケーションがWebSocketに切り替わる際に、ブラウザに警告が表示されることもありますが、これは安全に無視できます。
インタラクティブなデモ
ウェブブラウザで今すぐ試すことができるQuantum WebGLビルドのデモになります。
PhotonのItch.ioページには、さらに多くのWebGLデモがあります。
Back to top