マルチプレイとフレンド部屋
同じ地形を同時に走るので、相手の失敗も情報になります。
01通信の構成
ビルドには Colyseus・JSON_players・ArrAllrooms というオブジェクトがあり、Firebase 側は FirebaseAuthBasic・FirebaseSDK が入っています。つまり部屋立てと同期を Colyseus が、ログインと保存を Firebase が担当する二本立てです。
認証は匿名で、名前と見た目だけをサーバーに送る形になります。アカウント登録を求められないのはそのためです。
| オブジェクト | 役割 |
|---|---|
| Colyseus | リアルタイム同期のクライアント |
| JSON_players | 他プレイヤーの状態(位置・生死・勝利) |
| ArrAllrooms | 参加できる部屋の一覧 |
| FirebaseAuthBasic / FirebaseSDK | 匿名認証とスコア保存 |
| ArrLB / LeaderboardJsonData | ランキングの取得と表示 |
02プライベート部屋はコードで合流
タイトル画面には private レイヤーがあり、PRI_sharebox(共有用の箱)・PRI_joinbox(参加用の箱)・copyInput / pasteInput / Clipboard が並びます。コードをコピーして渡し、貼り付けて合流する、という流れが読み取れます。
フレンドと遊ぶときは、このコードをそのままチャットに貼るのが最短です。
03他プレイヤーの扱い
ダミー本体の変数には otherDEAD・otherDESTx・otherDESTy・otherWON があります。他の人の到着先の座標を受け取って補間しているので、通信が遅れても相手は滑らかに動いて見えます。
逆に言えば、表示位置は少し先の予測です。相手の現在地を当てにして進路を合わせると、実際にはずれていることがあります。
04同期で分かること・分からないこと
変数名から分かるのは「位置・生死・勝利の3つを他プレイヤーぶん受け取っている」ところまでです。通信の頻度や補間の強さは、ビルドのイベントからは数値として読めませんでした。
そのため「ラグで負けた」という現象を、当サイトが数値で説明することはできません。言えるのは、相手の位置が予測表示である以上、見た目どおりに動いているとは限らない、という性質だけです。
部屋の定員、観戦の可否、途中参加の扱いも不明です。これらは画面の部品からも読み取れず、実際に部屋を立てて確認する必要があります。