VRChat 非公式日本語ドキュメント

ClientSim

ClientSimのスクリーンショット。Sceneビューにはローカルプレイヤーとリモートプレイヤーが表示されています。GameビューにはClientSimの「Pause」メニューが表示されており、プレイヤーのリスポーン、リモートプレイヤーのスポーン、メニューを閉じるボタンやその他の様々なオプションが並んでいます。ClientSim SettingsウィンドウとPlayerDataウィンドウも表示されています。

ClientSim(クライアントシミュレーターの略)は、Worlds SDKの一部です。Unityエディタ上でVRChatクライアントの挙動を再現し、開発を効率化するために使用できます。

機能

  • VRChatを起動することなく、Unity上でワールドをテストできます。
  • マウスとキーボード、またはゲームパッドでプレイヤーを操作できます。
  • Playモード中にUdon変数をインスペクト(調査)できます。
  • Pickupを掴んだり、InteractやUI、Stationを使用したりできます。
  • Playモードへの移行時にEditorOnlyオブジェクトを削除します。

ワールドを公開する前には、必ずVRChat上でテストしてください!ClientSimではVRChatのすべての機能をシミュレートすることはできません。

ウィンドウ

ClientSimには、ワールドのデバッグやテストに役立つ以下のUnityエディタ用ウィンドウが追加されます。

  • ClientSim Settingsでは、ローカルプレイヤーの名前や身長の変更、ClientSimの無効化などが行えます。
  • Play Mode中に「Escape」キーを押すと、ゲーム内の設定ウィンドウを開くことができます。
  • ClientSim PlayerDataウィンドウを使用すると、PlayerDataをデバッグできます。
  • ClientSim PlayerObjectウィンドウを使用すると、PlayerObjectをデバッグできます。

はじめに

  1. VRChatのワールドシーンを開きます。
  2. UnityでPlayボタンを押します。
  3. Unityの「Game」ウィンドウでワールドをテストします。

各システムの仕組みの詳細については、システムのセクションをご覧ください。

ClientSimにおけるネットワークの違い

ClientSimはローカルのVRChatプレイヤーのみをシミュレートし、リモートプレイヤーはシミュレートしません。Deserializationイベントはローカルプレイヤーに対してシミュレートされます。

VRChatサーバーの一部がシミュレートされます。例えば、リモートプレイヤーをスポーンした際、ローカルプレイヤーはOnPlayerRestoredイベントを受け取ります。

ClientSimはVRChatのネットワークシリアライザーとは異なる実装になっています。そのため、イベントプロパティに格納およびシリアライズされるデータ量に違いがあります。OnPostSerializationOnDeserializationといったイベント内のデータは、ClientSimとVRChatの間で異なります(下記参照)。

OnPostSerialization(SerializationResult)

ClientSimでは、同期されたPlayer Objectの一部である場合にのみ、このイベントが実行されます。

ClientSimの場合VRChatの場合
SerializationResult.success常にtrueシリアライズが成功した場合はtrue
SerializationResult.byteCountオブジェクト上でシリアライズされたプロパティ数送信されたバイト数

OnDeserialization(DeserializationResult)

ClientSimでは、同期されたPlayer Objectの一部である場合にのみ、このイベントが実行されます。

ClientSimの場合VRChatの場合
DeserializationResult.sendTime常に0このメッセージが送信された時刻(秒単位)
DeserializationResult.receiveTime常に0このメッセージが受信された時刻(秒単位)
DeserializationResult.isFromStorage通常通り動作永続ストレージから送信された場合はtrue

最終更新: