ClientSim

ClientSim(クライアントシミュレーターの略)は、Unityエディタ上でVRChatクライアントの挙動を再現するWorlds SDKの一部です。これを使用することで、開発を効率化できます。
機能
- VRChatを起動することなく、Unity上でワールドのテストが可能。
- マウスとキーボード、またはゲームパッドでプレイヤーを操作。
- Play Mode中にUdon変数をインスペクターで確認。
- Pickupsの操作、InteractsやUI、Stationsの使用が可能。
- Play Mode移行時に
EditorOnlyなオブジェクトを自動削除。
ワールドを公開する前には、必ずVRChatでテストを行ってください!ClientSimでは、VRChatのすべての機能をシミュレートすることはできません。
Windows
ClientSim には、ワールドのデバッグやテストに役立つ Unity エディタウィンドウがいくつか追加されます。
- ClientSim Settings では、ローカルプレイヤー名の変更やプレイヤーの身長設定、ClientSim の無効化などを行えます。
- Play Mode 中に「Escape」キーを押すと、ゲーム内の設定ウィンドウを開くことができます。
- ClientSim PlayerData ウィンドウでは、PlayerData のデバッグが可能です。
- ClientSim PlayerObject ウィンドウでは、PlayerObjects のデバッグが可能です。
はじめに
- VRChatのワールドシーンを開きます。
- Unityで再生(Play)ボタンを押します。
- Unityの「Game」ウィンドウでワールドのテストを行います。
各システムがどのように動作するかについての詳細は、Systemsセクションを参照してください。
ClientSimにおけるネットワークの差異
ClientSimはローカルのVRChatプレイヤーのみをシミュレートし、リモートプレイヤーはシミュレートしません。Deserialization eventsはローカルプレイヤーに対してはシミュレートされますが、スポーンされたリモートプレイヤーに対してはシミュレートされません。
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 |
最終更新: