【VRChat】勉強会系ワールドを作る際のベストプラクティス

# はじめに
ここ最近VRChatにて「XR技術者と技術系VRChatterの交流会」[XR開発者集会](https://x.com/search?q=%23XR%E9%96%8B%E7%99%BA%E8%80%85%E9%9B%86%E4%BC%9A) というものを開催しています。
集会用に専用ワールドを作り、（まだ2回ですが）複数回運用していく中で気づいたポイントや、
用意しておいて良かったギミックなどいくつかありますので、
今後同様のワールドを制作する際の参考資料としてまとめていきたいと思います。
（ベストプラクティスは過言）（アドカレなのに業務無関係テーマでごめんネ）

ワールドサンプルはこちら↓

https://vrchat.com/home/world/wrld_51472224-26b3-40ac-bbb7-2219973cf1fb/info



# 1.訪問者記録ボード

**最近利用し始めたもの**

https://booth.pm/ja/items/4377020

**制作当初使っていたもの**

https://booth.pm/ja/items/2683599


だいたいどのワールドにも存在するJoinLog系ギミックですが、
XR開発者集会では2回目以降に上記の訪問者記録ボードに交換しました。

元々入退室ログアセット（睡眠ワールドによくあるやつ）を利用していましたが、
勉強会系ワールドで大量のプレイヤー（50～60名）が流れ込んでくると、
入退室順などのログ情報が基本的に意味を成さなくなります。
（会の終了後Leaveログで埋め尽くされて、誰がいたか分からなくなる）

訪問者記録ボードだとジョイン順はわからなくなりますが、
イベントにどのような方々が来ていたのか、
ピークユーザー数・ユニークユーザー数が何名だったかなどを
記録しておいてくれるため、
イベントの集客分析などを比較的簡単に行えるようになりました。

<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">今回ユニークユーザー数が58名、、、！すごい～～～大盛りあがりだ！ <a href="https://t.co/xJG6aiwhWf">pic.twitter.com/xJG6aiwhWf</a></p>&mdash; ごんびぃーᯅ@XR開発者集会 (@GONBEEE_project) <a href="https://twitter.com/GONBEEE_project/status/1861060691916144944?ref_src=twsrc%5Etfw">November 25, 2024</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

こちらのアセットは黒・白、50人版・100人版の4パターンのPrefabが同梱されており、
ワールドの雰囲気にあったものを設置しておきましょう。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/241210/2f8d23dd-b561-9fb3-92be-2bdb0a4096c9.png" width=50%>

注意点として、**若干文字が小さく遠い位置からだと読みにくい**ケースがあるので、
「Prefab全体を拡大しておく」「SpaceDragを併用して見に行く」などの対策を取りましょう。
XR開発者集会ワールドでは白・100人版Prefabを125％スケールで配置しています。

イベントのピークユーザー数・ユニークユーザー数などが分かると、
ワールドのキャパシティ調整の指標となるため、そこそこ重要なデータです。
ジョイン順の分析が必要ない場合はこちらの訪問者記録ボードを強くおすすめします。



# 2. ヨドコロちゃんのタグマーカー
https://booth.pm/ja/items/3109716

VRChatでは勉強会などのイベント終了後、参加者同士での交流会が発生します。
（現実空間イベントにおける懇親会のようなものです。）
そこでこのようなタグマーカーを用意しておくことで、
初対面の人同士でもお互いの興味領域をぼんやり把握することができ、
交流会での話のタネとして利用、、、できると思います。
現実空間イベントで稀に「属性シール」を配布している会がありますが、
それのVRChat版という認識で大丈夫です。

タグマーカーはこれ自体の利用ももちろんですが、
どのようなタグマーカーを用意しておくかで
「そのイベントがどのような会なのか」を説明する個性アピールにもなり得ます。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/241210/238e3663-1bf2-33d7-ad1e-64b2945f7d5f.png" width=50%>

XR開発者集会ではこのようなタグ一覧を用意しています。
VR・AR・MRといった大カテゴリだけではなく、
「VPS派・マーカー派」など技術スタック対立タグや
「HoloLens2・Apple Vision Pro」など興味のあるデバイスタグなども用意し、
かなり~~ニッチ~~ディープなXR関連情報をやり取りするイベントとして構築しています。

このイベントをTwitterで告知したところ、このタグ内容自体を巡り
「[〇〇がない！](https://x.com/vjroba/status/1846376692656623648)」や「[触ったことのないものを羅列した方が速そう](https://x.com/koukiwf/status/1846386420572999711)」など
このタグの内容自体が話のタネになり得るため、
集会系ワールドではほぼ必須クラスのギミックではないかと思います。

（ただ、ニッチすぎてイベント当日にどれを付ければいいか悩むという声も、、、）


# 3. 軽量アバターペデスタル
ありがたい事にXR開発者集会は第0回（初回）から参加者数が50名を超える
大好評イベント（自称）となっておりますが、その分負荷軽減策がかなり重要です。
VRChatのユーザーは基本的にVery Poorランクのアバターを利用しており（要出典）、
（ハイポリゴンだったり、揺れ物が多かったり、描画負荷が高いもの）
高負荷アバターが50体も並ぶとそれはもう凄まじい重さになり、
フレームレートがとんでもないことになります。（10FPSを割る可能性がある）

そこで本ワールドではフレンドにご協力いただき、
Goodランクアバターをお借りしてアバターペデスタルを設置しました。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/241210/1bdcf576-ab28-941e-bc7d-783400087585.png" width=50%>

https://zeusisgood.booth.pm/items/5036167

イベント開始時のお知らせスライドでも軽量アバター ニャイムを周知したところ、
参加者の大半がニャイムを着て聴講してくれました。
お陰さまで大幅な負荷軽減に成功しており、50人が密集するレベルの集合写真でも
かなりの高FPS（40FPS超、VRChatの集会にしては高い方）を維持できています。
ただ同時に「誰が誰か分からない」という致命的なトレードオフが発生します、、、
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/241210/b5418fb1-5ec6-f165-71f4-8c09996cd585.png" width=50%>

貸出アバターとしてニャイムを採用したのは完全にごんびぃーの趣味です。
元々頭に飼っているお気に入りペットで、作者とも仲良しだったため
せっかくだからと縁を辿ってお貸し出しいただきました。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/241210/b1c06171-63ab-a111-9d12-ccdb7c48f57b.png" width=25%> <img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/241210/cc9e31de-f9ee-3848-d8e6-a76c28882bad.png" width=25%>


軽量アバターペデスタルを設置する場合必ずしもこれを使ってくださいという話ではなく、
GoodランクやExcellentランクのアバターであればなんでもいいと思います。
パブリックアバターで軽量なものは結構出回っているので、
そのワールド属性・イベント属性にあったアバターを採用すると良いでしょう。
有名どころでいくと Mururu 辺りは軽く視界の邪魔もしないためオススメです。↓

https://vrchat.com/home/avatar/avtr_cc110e10-142d-4cce-80a6-992c4cdefa0b

# 4. ギミックを多めに配置する
こちらも特定のギミックについてではありませんが、
「ワールド内に何かグッズやアイテムを配置する場合は多めに置いておくとよい」
という学びです。

https://booth.pm/ja/items/6246286

第1回の裸眼立体視ディスプレイ特集にて、かーたれっと工房さんから販売されている
「LKGのようなもの」をワールドに配置して展示していましたが、
複数人で同時に体験できるように8台分ワールド内に設置しておきました。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/241210/5e9747ca-aa02-6b5a-b9bc-5516a779d0e6.png" width=50%>

VRChatは現実と異なり複数人で同時体験可能、、、と思いきや、
アバター同士が近いと視界の邪魔になるため、思いの外現実と同様の制約が発生します。
そのため何か体験する物の場合、シンプルに大量配置しておけば
複数人で同時に体験できるようになり、待機列をさばくことができます。

またタグマーカーについても設定メニューを複数箇所に配置しています。
流石にスポーンポイント付近のメニューは混雑しますが、
交流会前に付けたり、途中で付け替えたりする際には、うまく分散できている模様です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/241210/867a55e5-38e8-537a-1195-4358c277fc10.png)

他にも3Dスキャンモデルを複数用意しておいたりなど、
多すぎて負荷にならない程度に配置しておくのをオススメします。
[GaussianSplattingスキャンモデルの表示用シェーダーもよろしくね。](https://qiita.com/GONBEEE_project/items/1819841ba78570de8cc9)

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/241210/3968840b-675f-7122-4e48-ebdabe3aba3f.png" width=40%>


# 5. QVPenのSurftraceモード
こちらはまだ活躍したことがなく理論止まり（戯言）となりますが、
将来的に活用するビジョンがあるので紹介しておきます。

https://booth.pm/ja/items/1555789

ご存知「空中に書けるペン」QvPenには実は**壁や床に沿って書けるモード**が存在します。
ペン先を床などのColliderに触れさせると、
一定距離離れるまでそのCollider上にペン先マークが追従し、
床に直接文字や絵を書き込むことができます。
デフォルトではオフになっているため、このモードを知らない人も多々いますね。

実装当初はクラス図や数式、設計図の類を床に書いてもらう事を想定していましたが、
まだそこまでディープなテーマの会がないため、
今のところそのような使われ方はしてなさそうです・・・。

今後やろうと思っている使い方は、
登壇席の立ち位置を示すバミリテープ的な床書き込みや、
集合写真を撮る際のどこからどこまでが画角かを示す目印など、
イベント進行に必要なマークの書き込みです。
こんな感じで↓

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/241210/bb28e8e8-5d8d-11b7-3ff3-6960ede90654.png" width=70%>





XR開発者集会では毎回ゲストをお呼びしてLT&パネルディスカッションを行っていますが、
登壇エリアのどこに立つと声が通りやすいか（ワールド全域に声を流すギミックがある）、
パネルディスカッション時にそれぞれどこに立つかなど、
比較的プレイヤーの立ち位置が重要なイベントです。
そこで、まだ活用していませんが今後は予め登壇エリアにバミっておき、
スムーズな立ち位置変更など、イベント進行を円滑に出来るかなと企んでいます。

設定方法は比較的シンプルで、
`QVPen/Bureau/UI/Surftrace`にある`QV Pen_Toggle Mode Button`コンポーネントの
下から3行目の`IsOn`をアクティブにしておくだけです。
手軽に設定できるのでオススメしたい反面、
この機能がそこまで有名ではなく、変な挙動として混乱を与える可能性があります・・・。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/241210/6306129d-9e30-966d-b085-c1e767128a82.png" width=40%>

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/241210/1f3abfa3-3bbd-6a49-5719-665901e2e5b0.png" width=55%>


# おわりに

今回の内容はあくまでもXR開発者集会における一例であり、
「集会はこうあるべきだ！」というものではありません。
また、今後更に複数回開催していって新たなギミックを追加したり、
今回紹介したギミックの設定を見直したりなどの可能性も大いにあります。
あくまでも2回開催時点における知見ということでご了承ください。

最後まで読んでいただきありがとうございました。
「このギミックおすすめ！」や「ここ分からんので詳細希望」などご意見ありましたら、
コメント欄か[ごんびぃー](https://x.com/GONBEEE_project)までご連絡いただければと思います。