この記事は VRChat Advent Calendar 2020の12日目の記事です。
VRChatとは
普段このブログを読んでくださっている方にはあまり馴染みがないと思うので簡単にVRChatの説明をしておきます。
仮想空間上でアバターを用いてユーザーと交流できるソーシャルVRプラットフォームです。
VRプラットフォームというものの、VR HMDがなくとも遊ぶことが可能です。
だいたい私は毎晩VRChatにいると思うので、知り合いの方でVRChatに興味がある方がいれば、一緒に遊びましょう、案内します。
詳細は公式サイトへ
VRC AutoRejoinTool について
私が作成しているツールで、無料で使えるVRChatのユーティリティーソフトです。
VRChatのログファイルを読んで動作します。
VRChatの実行ファイルを書き換えたりすることはありません。
「VRChatのエラーでホームに戻されたときに自動で戻るやつ」というタイトルでも配布をしていますが、同じ同一のソフトウェアです。
なにができるツールなの?
VRChatでは、インスタンスにいる状態でネットワークに問題がおきると自分しかいないホームワールドに飛ばされます。
このときホームワールドから元いたインスタンスに自動で戻ることができるツールです。
同様にVRChatでインスタンスにいる状態でVRChatがクラッシュした場合も直前までいたインスタンスに自動で戻ることができます。
※プライベートインスタンスやフレンドオンリーのインスタンスでも利用できます。
それはどういうシーンで便利なの?
VRChatの一部では、VR機器もしくはPCをつけたまま、睡眠をする文化があります。
(本記事では以降ではVR睡眠と記載します)
人によってはVR機器自体は外し、音だけを聞いていたりするケースもあるでしょう。
いずれの状態であっても、睡眠をしている最中に前述のようにVRChatのネットワークのエラーか、クライアントのクラッシュが起きた場合はその事実に気づくことができません。
例えば、
- VR睡眠をしていたときに起こしてもらう約束をしていた場合
- 朝に挨拶をしてから落ちるようにしていた場合
- 朝の寝起きの書き置きを楽しみにしていた場合
- できるかぎり一緒に過ごしたい相手がいる場合
このような状況下で VRC AutoRejoinTool は自動で元いたインスタンスに戻るため一定の効果を発揮します。
どこで手に入るの?
BOOTHで公開しています。
機能追加やバグ報告をしたい
技術の話
実装の話
Go言語により実装されています。
仕組み
VRChatのログをtailのようにパースし、ログの中にインスタンスの移動があるかどうかをチェックします。
このアプリケーションが起動し、インスタンス移動の検出が有効になったときのインスタンスIDを取得し、 その後インスタンス移動のログが流れた場合 VRChat.exe を終了し、検出が有効になったときのインスタンスIDでVRChatを起動しなおします。
enable_process_check が yes に設定されている場合は、インスタンス移動の検出が有効になってから一定間隔で VRChat.exe が存在しているかを監視します。
見つからないときは、先程と同様に有効になったときのインスタンスIDをVRChatを起動しなおします。
おわりに
というわけで VRC AutoRejoinTool の紹介でした。
VRC AutoRejoinToolはもとのインスタンスに自動で戻ることを主眼としてつくられていますが、 過去に滞在したインスタンスなどを手動で選び、戻る用途では
VRChat RejoinTool がおすすめです。(Autoがつかない)
これは知見ですが、私のようにあとからもとあるツールに類似する名前でツールを公開するのはやめましょう