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

ClientSim

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

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

機能

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

Windows

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

はじめに

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

各システムがどのように動作するかについての詳細は、Systemsセクションを参照してください。

ClientSimにおけるネットワークの差異

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

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

最終更新: