ゲーセンに置いてあるSEGAの競馬ゲーム的なやつでベースの演出をウマ娘寄りにしたワールドを作りたい。これは配布ギミックではない。
どういうやつ
一般的な競馬と同じもの。
UdonChip(以下”UC”)を馬に賭け、馬を走らせ、馬の順位によって払戻が確定する。
同期問題
同期に関する問題には以下の手段で解決としたい。
- VRChatではMaster、Ownerといったオブジェクトに所有権があり、
それはつまり一般的な同期型ゲームと同じでホストとゲストが存在する。
- 例: Splatoon3の”サーモンラン”で「金イクラの取得演出の速さが可変になった」
→ 「金イクラの取得判定はホスト基準」
- つまり自分が”ホスト”であるかのロジックを組む必要があるため
インスタンス内での同期を行うのはとても面倒。
- であれば最初から全プレイヤーをゲスト(以下”ゲスト”)として、ホストの役割をVRChat外に設けてしまえばよいと考えた。(以下”ホスト”)
- ワールド上ではデータの受信+受信データを元に演出の再生だけを考慮するだけで良さそう。
- 出走馬の順位の決定、各馬のスキル使用順序などはホストが行い、
ゲストは所定時刻にホストに対してデータリクエストを行う。
ホストはVRChatの外側に存在する為、「全てのインスタンスが同じデータを持つ」ことになる。
→ インスタンス毎に結果が変動しないため話題の共有が可能。
配布できない理由
- 走らせる3DモデルをHumanoid(VRCアバターとして販売されているもの)にするため
- 前述の通りゲーム結果の決定はUdonギミック内で行わず、外部のサーバーで行うため
プロトタイプ
ウマ娘的演出、スキル発動などはとりあえずあとにして、
一般的競馬のシステムをWeb上で構築してみる。
<aside>
⚠️ VRChat上のワールドは所詮フロントエンドに過ぎない。
</aside>
データ仕様
エンドポイント/api/v1/getDarbyInfomation
とかでいいんじゃね