VRChatの集まり・入場管理
こんなことができます。
ルームをプロフィールで公開するか、招待した人だけにリンクを送るかを選べます。PINや一人ずつ異なるVIPチケットで入場を管理し、集まりをどこまで公開するかをクリエイター自身が決められます。
- プロフィール公開・限定リンク
- PIN・個別VIPチケット
- ワールド探し・Creator Studio
これまでにつくったもの
- プロフィールからルームの公開範囲を選べるように改善公開中
- PIN・VIP入場とルーム管理を使いやすく改善公開中
- ワールド検索と画像表示を高速化公開中
- Paddle決済サービスPaddle承認済み
技術と仕組み公開する相手も、参加の方法も、自分で決める。仕組みを見る
処理の流れ
3つのステップで見る仕組み
ワールド探し、公開範囲、一度ずつ確認する入場、端末に合うVRChatの起動をつなぎます。
キーワードと意味検索で候補を探し、公開状態・人数・Quest対応を現在の情報で確認します。プロフィールへの掲載と、実際に入場するための認証は別に管理します。
PostgreSQLの行ロックと条件付き更新で二重使用を防ぎ、トークンはハッシュで保存します。再入場認証はルームID・PINバージョン・期限に結び付け、現在の条件を確認します。
許可したVRChatの接続先と検証済みパラメーターから起動リンクを作ります。LAUNCH_READYは接続準備の状態で、実際の入場はVRChatと端末の対応条件に従います。
Hybrid search · Creator profile
キーワードと意味検索で候補を探し、公開状態・人数・Quest対応を現在の情報で確認します。プロフィールへの掲載と、実際に入場するための認証は別に管理します。
設計に組み込んだ方針
セキュリティと設計方針
公開と入場認証を分ける
Profile visibility · PIN version全体のルーム一覧は設けず、プロフィール掲載か直接共有を選べます。PINを変えると未使用の一般入場券と旧版の再入場認証を無効にします。
トークンの再使用を防ぐ
PostgreSQL row lock · Redis atomic consume入場トークンはハッシュで保管し、一度だけ原子的に消費します。短期の再入場リンクもRedisで取得と削除をまとめて処理します。
現在のワールド情報を確認
Hybrid retrieval · Revalidationキャッシュを使う場合も現在のワールド状態を確認します。同一リクエストの集約、利用予算、ローカル検索への切り替えで遅延に対応します。