Contents — 7 sections

VRChatのContactギミックを試すとき、最終的には実際のアバター同士で触れて確認したい。

でも開発中に毎回、

  • HMDを被る
  • 右手を正しい位置へ持っていく
  • 相手アバターへ触れる
  • タイミングを合わせる
  • 同じ条件を何度も再現する

のはかなり面倒だった。

そこでDancelaveの試験では、**人の手の代わりにワールド側からContact Senderを出す「偽の手」**を作った。

これでVR機器を使わず、実際のVRChatクライアント上でContact受信経路を繰り返し確認できる。

欲しかったのは「Unity内の再現」ではなく「実VRChatまで通る中間試験」

Dancelaveは、他人の手が胸元のReceiverへ触れるとダンスを開始するギミック。

Editor上ではAv3Emulatorを使って、

  • Animator
  • Contact
  • State transition
  • Remote clone

などをかなり試せる。

ただし、Emulatorは実VRChatクライアントそのものではない。

一方で、本物のVRユーザー2人を用意して毎回試験するのは重い。

そこで試験階段を分けた。

Static / Smoke
    ↓
Av3Emulator
    ↓
実VRChat + ワールド側の偽Contact
    ↓
実VR + アバター同士Contact

「全部自動化」ではなく、人手が必要な最後の段階をできるだけ後ろへ送る。

Test Worldのスポーン地点にSenderを置いた

専用の DancelaveTestWorld を作った。

スポーン地点で、ワールド側の VRCContactSender が周期的に現れる。

当時の設定では、

  • 3秒ごと
  • 0.4秒だけSenderを出す

という動き。

アバター側のReceiverへ、一定条件で接触を繰り返す。

つまり人間が手を伸ばさなくても、

World Contact Sender
       ↓
Avatar Receiver
       ↓
Animator / Parameters
       ↓
Dance

の経路を実VRChatで通せる。

実クライアントで5/5通った

実際のVRChatクライアントで確認した結果は5 / 5 PASS。

観測した内容は、

  • 受信OFFでは触れても踊らない
  • 受信ON後、接触から0.59秒でダンス開始
  • 触れ続けても延長せず8.00秒で終了
  • 5秒Cooldown中は再発動しない
  • ダンス中でも受信OFFで0.02秒で停止

だった。

ここで重要なのは、Unity Editor内の疑似Contactではなく、

World Sender → 実VRChat client → Avatar Receiver

が通ったこと。

一方で、これでもまだ「他人の右手で触れた」と同じ試験ではない。

偽の手で確認できないこと

このTest Worldで確認できるのは、Contact受信経路のかなり大きな部分。

でも未確認は残る。

  • 実アバターの右手Sender
  • 他プレイヤーとのAvatar Interaction permission
  • VR内での実際の手位置
  • FBT / 3点Trackingによる差
  • 人間が接触したときの操作感
  • AがBを発動し、Cからどう見えるかという完全な複数人経路

だから「偽の手で5/5 PASS = Contact完成」ではない。

目的は、最後の実機試験へ進む前に、壊れている可能性を減らすこと。

GUI自動化だけでは3D接触を再現しにくかった

別の試みでは、同じPCでVRChatを2クライアント動かし、GUI自動操作から接触試験を回せないか考えた。

ただ、Computer Useのような2D GUI操作で、

「3D空間のこの位置へ手を持っていき、相手のReceiverへ一定時間触れる」

を安定再現するのは難しい。

そこで発想を逆にした。

手を自動操作するのではなく、Receiverの場所へSenderの方を出す。

試験対象がContact判定なら、その方がずっと再現しやすい。

テストは現実を完全再現しなくていい

偽の手は、本番入力そのものではない。

でもそれでいい。

試験ごとに確認範囲を明確にすれば、

  • Core logic
  • Animator
  • Contact path
  • Client behavior
  • Multi-client sync
  • Human interaction

を段階的に分離できる。

毎回すべてを人間がVRで確認するより、壊れた場所を絞り込みやすい。

いまの結論

VR開発は、最後の1mがどうしても実機依存になる。

だからこそ、実機試験をゼロにするより、

「人間が必要な実機試験を最小限まで減らす」

方が現実的だった。

Dancelaveでは、ワールド側の偽の手がその中間層になった。

PicoTowaでは、VRでしか確認できないものを「どこまでVRなしで検査できるか」も引き続き詰めていく。