Vibeverse統合仕様
概要
Vibeverse は Vibe Jam 2026 の公式ゲーム間ポータルプロトコルである。本ページでは、Rift Survivors における Vibeverse 統合の詳細仕様を定義する。
必須ウィジェット
Vibe Jam 2026 の参加要件として、以下のウィジェットスクリプトを index.html に組み込む:
html
<script async src="https://vibej.am/2026/widget.js"></script>重要
このウィジェットは非同期で読み込み、ゲームの初期表示を妨げないこと。
Inbound フロー(外部 → Rift Survivors)
他のVibe Jamゲームからプレイヤーが来訪するフロー。
フロー全体図
詳細シーケンス
パラメータ解析ルール
重要: パラメータの任意性
portal=true 以外のすべてのパラメータはオプショナルである。 パラメータの存在に依存したロジックを書いてはならない。
"All parameters except
portalare optional and may or may not be present — do not rely on their presence." — Vibeverse 公式仕様
パラメータ解析の擬似コード:
typescript
function parsePortalParams(url: URL): PortalCharacter {
const params = url.searchParams;
// portal=true の検出が唯一の必須チェック
if (params.get('portal') !== 'true') {
return null; // ポータル経由ではない
}
// すべてのパラメータはオプショナル — デフォルト値で補完
return {
username: params.get('username') ?? 'Drifter',
color: params.get('color') ?? '#00ffff',
speed: Number(params.get('speed')) || 5,
hp: Number(params.get('hp')) || 100,
avatarUrl: params.get('avatar_url') ?? null,
ref: params.get('ref') ?? null,
};
}ポータル経由時の制約
| 制約 | 理由 |
|---|---|
| 名前入力画面を表示しない | username パラメータ(またはデフォルト値)を使用 |
| キャラカスタマイズ画面を表示しない | color パラメータ(またはデフォルト値)を使用 |
| 設定画面を表示しない | 即座にゲーム体験を開始する |
| ログイン/認証を要求しない | ブラウザゲームとして即プレイ |
ポータル経由プレイヤーのデータは sessionStorage に保存する。 ブラウザを閉じると自動消去され、次回は新規プレイヤーとして扱われる。
Outbound フロー(Rift Survivors → 外部)
プレイヤーがVibeverseポータルから他のゲームへ移動するフロー。
フロー全体図
リダイレクトURL構築
https://vibej.am/portal/2026?username={username}&color={color}&speed={speed}&ref={OUR_URL}送信パラメータ
| パラメータ | 値の取得元 | 例 |
|---|---|---|
username | プレイヤーの現在の名前 | username=Drifter |
color | プレイヤーの現在のカラーコード | color=%2300ffff |
speed | プレイヤーの速度ステータス | speed=7 |
ref | 本ゲームのURL | ref=https://our-game.pages.dev |
詳細シーケンス
戻りポータル
生成条件
- Inbound フローで
refパラメータが 存在する 場合のみ、ロビーに戻りポータルを生成する refが存在しない場合、戻りポータルは 表示しない
挙動
戻りリダイレクトURL
戻りポータルに入った場合、受信時のパラメータを保持して ref 先へリダイレクトする:
{ref}?portal=true&username={current_username}&color={current_color}&speed={current_speed}設計意図
戻りポータルでは受信時のパラメータではなく 現在のプレイヤー状態 を送信する。これにより、Rift Survivors で装備変更やレベルアップした結果が戻り先に反映される。
戻りポータルの表示仕様
| 項目 | 仕様 |
|---|---|
| 表示位置 | Vibeverseポータルの右隣 |
| ラベル | RETURN TO {ref のドメイン名} |
| カラー | アンバー(#ffaa00) |
| ライフサイクル | セッション中のみ存在(sessionStorage に紐づく) |
| 非表示条件 | ref がない場合 / セッション終了後 |
ポータル経由プレイヤーと正規プレイヤーの統合
データ保存の違い
| 項目 | 正規プレイヤー | ポータル経由プレイヤー |
|---|---|---|
| 保存先 | localStorage | sessionStorage |
| 永続性 | ブラウザを閉じても保持 | セッション終了で消去 |
| キャラ作成 | 手動入力 | パラメータから自動生成 |
| 装備 | 保存・引き継ぎ | セッション中のみ |
| レベル | 永続的に蓄積 | セッション中のみ |
ゲーム内での扱い
- ポータル経由プレイヤーも正規プレイヤーと 同じゲームプレイ が可能
- ダンジョンミッションへの参加可能
- 装備の獲得・変更可能(セッション中のみ保持)
- ポータル経由プレイヤーには名前の横に ✦ マークを表示(Vibeverseからの漂流者であることを示す)
エラーハンドリング
| ケース | 処理 |
|---|---|
portal=true だがパラメータが一切ない | デフォルト値でキャラ生成、カットイン演出後にロビーへ |
ref のURLが不正(非HTTP/HTTPS) | 戻りポータルを生成しない |
color が不正なカラーコード | デフォルトの #00ffff を使用 |
speed / hp が数値でない | デフォルト値(5 / 100)を使用 |
avatar_url が無効なURL | デフォルトアバターを使用 |