この記事は 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 で公開しています。
機能追加やバグ報告をしたい
GitHub リポジトリはこちらです。
技術の話
実装の話
Go 言語により実装されています。
GUI ライブラリは fyne を用いて実装しています。
仕組み
VRChat のログを tail のようにパースし、ログの中にインスタンスの移動があるかどうかをチェックします。
このアプリケーションが起動し、インスタンス移動の検出が有効になったときのインスタンス ID を取得し、
その後インスタンス移動のログが流れた場合 VRChat.exe を終了し、検出が有効になったときのインスタンス ID で VRChat を起動しなおします。
enable_process_check が yes に設定されている場合は、インスタンス移動の検出が有効になってから一定間隔で VRChat.exe が存在しているかを監視します。
見つからないときは、先程と同様に有効になったときのインスタンス ID を VRChat を起動しなおします。
おわりに
というわけで VRC AutoRejoinTool の紹介でした。
VRC AutoRejoinTool はもとのインスタンスに自動で戻ることを主眼としてつくられていますが、
過去に滞在したインスタンスなどを手動で選び、戻る用途では
VRChat RejoinTool がおすすめです。(Auto がつかない)
これは知見ですが、私のようにあとからもとあるツールに類似する名前でツールを公開するのはやめましょう