Skip to content

パラメータ仕様

概要

Vibeverse プロトコルで送受信するパラメータと、Rift Survivors 内部のキャラクター属性とのマッピングを定義する。

重要: パラメータの任意性

?portal=true 以外のすべてのパラメータはオプショナルである。 パラメータが存在しない場合は、必ずデフォルト値を使用すること。パラメータの存在前提でロジックを組んではならない。

"All parameters except portal are optional and may or may not be present — do not rely on their presence." — Vibeverse 公式仕様

受信パラメータマッピング(Inbound)

パラメータ → ゲーム属性 変換表

Vibeverseパラメータデフォルト値ゲーム内属性変換ルール
portalstring— (必須)"true" のみポータル経由と判定
usernamestring"Drifter"キャラクター名そのまま使用(最大20文字で切り詰め)
colorstring"#00ffff"キャラクターカラーCSSカラーコードとしてパース、無効値はデフォルト
speednumber5移動速度倍率clamp(1, 10) で制限
hpnumber100最大HPclamp(1, 999) で制限
avatar_urlstringnullアバター画像URLHTTPS のみ許可、無効URLはデフォルトアバター
refstringnull戻りポータル先URLHTTP/HTTPS のみ許可、存在時に戻りポータル生成

ゲーム属性への詳細マッピング

速度変換の詳細

Vibeverse の speed パラメータ(1〜10)を、ゲーム内の移動速度に変換する:

speed 値移動速度倍率体感
10.2x非常に遅い
30.6xやや遅い
51.0x(基準)通常速度
71.4xやや速い
102.0x非常に速い

計算式: moveSpeedMultiplier = speed / 5

HPマッピングの詳細

Vibeverse の hp パラメータを、ゲーム内の最大HPに直接マッピングする:

hp 値ゲーム内最大HP備考
1〜50そのまま低HP(脆い旅人)
51〜100そのまま標準
101〜999そのまま高HP(タフな旅人)

カラーの適用範囲

color パラメータは以下のビジュアル要素に適用される:

適用先適用方法
キャラクターモデルのアクセントTHREE.MeshStandardMaterial.color
攻撃エフェクトの色パーティクルのカラー
カットイン演出の背景色グラデーションのベースカラー
名前プレートの装飾色ボーダー・グロウ色
ポータル経由マーク(✦)の色テキストカラー

送信パラメータ(Outbound)

Vibeverseポータル退場時に送信するパラメータ

パラメータ値の取得元説明
username現在のキャラクター名ポータル経由: 受信値、正規: 登録名
color現在のキャラクターカラーHEXカラーコード
speed現在の速度ステータスゲーム内速度倍率 × 5 に逆変換
ref本ゲームのURLデプロイ先のURL

送信URLの構築例

https://vibej.am/portal/2026?username=Drifter&color=%2300ffff&speed=5&ref=https%3A%2F%2Four-game.pages.dev

パラメータのエンコード

URL パラメータは encodeURIComponent() で適切にエンコードすること。特に color#%23 にエンコードされる。


戻りポータル送信パラメータ

戻りポータル利用時は、ref 先のURLに以下のパラメータを付与してリダイレクトする:

パラメータ説明
portaltrueポータル経由であることを示す
username現在のキャラクター名Rift Survivors での名前
color現在のカラーRift Survivors でのカラー
speed現在の速度ゲーム内速度の逆変換値

バリデーションルール

入力値の検証と安全なデフォルト

セキュリティ考慮

リスク対策
XSS(username に悪意のあるスクリプト)HTML エスケープ + 文字数制限
Open Redirect(ref に悪意のあるURL)HTTP/HTTPS のみ許可、確認ダイアログ表示
不正な avatar_urlHTTPS のみ許可、CORS チェック、ロード失敗時はデフォルト
巨大な値(hp=999999999)clamp() で上限制限
パラメータ改ざんクライアントサイドゲームのため許容(不正防止は範囲外)

TypeScript 型定義

typescript
/** Vibeverse ポータルパラメータ */
interface VibeVerseParams {
  portal: true;
  username: string;   // デフォルト: "Drifter"
  color: string;      // デフォルト: "#00ffff"
  speed: number;      // デフォルト: 5, range: 1-10
  hp: number;         // デフォルト: 100, range: 1-999
  avatarUrl: string | null;
  ref: string | null;
}

/** ゲーム内キャラクターデータ(ポータル経由) */
interface PortalCharacter {
  name: string;
  color: string;
  moveSpeedMultiplier: number;  // speed / 5
  maxHp: number;
  avatarTextureUrl: string | null;
  returnPortalUrl: string | null;
  isPortalVisitor: true;        // ✦ マーク表示用フラグ
}