ClientSim

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をデバッグできます。
はじめに
- VRChatのワールドシーンを開きます。
- UnityでPlayボタンを押します。
- Unityの「Game」ウィンドウでワールドをテストします。
各システムの仕組みの詳細については、システムのセクションをご覧ください。
ClientSimにおけるネットワークの違い
ClientSimはローカルのVRChatプレイヤーのみをシミュレートし、リモートプレイヤーはシミュレートしません。Deserializationイベントはローカルプレイヤーに対してシミュレートされます。
VRChatサーバーの一部がシミュレートされます。例えば、リモートプレイヤーをスポーンした際、ローカルプレイヤーはOnPlayerRestoredイベントを受け取ります。
ClientSimはVRChatのネットワークシリアライザーとは異なる実装になっています。そのため、イベントプロパティに格納およびシリアライズされるデータ量に違いがあります。OnPostSerializationやOnDeserializationといったイベント内のデータは、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 |
最終更新: