========================================================================
ゲームプレイ仕様 (Gameplay Specification)
========================================================================
1. ゲーム進行 (Game Progression)
------------------------------------------------------------------------
1-1. タイムライン
・開始カウントダウン: ゲーム開始通知から5秒間のカウントダウン後にプレイ開始
・通常フェーズ: 0〜120秒(残り180〜60秒)
・フィーバータイム: 残り60秒から発動,ボムクールダウンが短縮される
・ハリケーン出現: 残り120秒から出現する(ゲーム開始60秒経過後)
・塗り率非表示: 残り30秒からチーム塗り率が隠される
・ゲーム終了: 残り0秒でサーバーがゲーム終了を通知する
1-2. 勝敗判定
・制限時間終了時のチーム別塗りセル数で順位を決定する
・塗りセル数が最も多いチームが1位となる
2. フィールド仕様 (Field Specification)
------------------------------------------------------------------------
2-1. マップ構造
・グリッドベースのセル構造
・各セルはチームIDを保持する
- 未塗装: -1
- チーム塗装: 0〜3(チームIDに対応)
・座標系: 浮動小数点のグリッド座標(左上が原点)
2-2. フィールドサイズプリセット
フィールドの実グリッドサイズは AOIセル数 × AOIセルサイズ(3)で算出される.
| プリセット | AOIセル数 | 実グリッドサイズ | 推奨人数 |
| :--------- | :-------- | :--------------- | :----------- |
| SMALL | 8×8 | 24×24 | 4〜20人 |
| MEDIUM | 12×12 | 36×36 | 20〜40人 |
| LARGE | 15×15 | 45×45 | 40〜70人 |
| XLARGE | 18×18 | 54×54 | 70〜100人 |
2-3. セル塗り処理
・プレイヤーが移動するとそのセルが自チームの色で塗られる
・競合処理: 同一セルに複数チームのプレイヤーが同時に存在する場合,そのセルは塗られない
・既に他チームが塗ったセルは上書きできる
3. プレイヤー操作 (Player Controls)
------------------------------------------------------------------------
3-1. 移動
・入力方式: 画面左側のバーチャルジョイスティック(タッチ操作)
・方向: 360度全方位入力
・移動速度: 3グリッド/秒
・プレイヤー半径: 0.5グリッド
・座標管理: 浮動小数点で管理し,滑らかな移動を実現する
・カメラ: 自プレイヤーを常に画面中央に追従する
3-2. ボム設置
・入力方式: 画面右側のボムボタンをタップ
・設置位置: プレイヤーの現在座標
・爆発までの時間(信管): 1000ms
・爆発半径: 1.5グリッド(円形判定)
・クールダウン:
- 通常時: 4000ms
- フィーバータイム時: 2000ms
3-3. フィーバータイム
・発動条件: ゲーム残り時間が60秒以下になった時点
・効果: ボムのクールダウンが4000msから2000msに短縮される
・画面表示: 「!Fever Time!」通知が表示される
4. 被弾・リスポーン (Hit & Respawn)
------------------------------------------------------------------------
4-1. 被弾判定
・ボム爆発時,爆発半径内にいるプレイヤーに被弾判定が発生する
・自チームのボムでは被弾しない
・被弾したプレイヤーの被弾カウントが1増加する
4-2. 被弾スタン
・被弾時に1000msの間,入力が無効化される(スタン状態)
・スタン中はプレイヤーが点滅する視覚エフェクトが表示される
4-3. リスポーン
・条件: 被弾カウントが5に達した場合にリスポーンが発生する
・リスポーンスタン: 2000msの間,入力が無効化される
・リスポーン位置: ゲーム開始時の初期スポーン地点
・被弾カウントはリスポーン後にリセットされる
5. ハリケーン (Hurricane Hazard)
------------------------------------------------------------------------
5-1. 出現条件
・ゲーム残り時間が120秒以下になった時点で出現する
・同時出現数: 最大5個
5-2. ハリケーンの挙動
・直径: 2.2グリッド
・移動速度: 1.5グリッド/秒
・移動方式: 直線移動し,フィールドの壁に当たると反射する
・回転: 2.6 rad/秒で視覚的に回転する
5-3. プレイヤーへの影響
・ハリケーンの範囲内に入ったプレイヤーはリスポーンが発生する
・同一プレイヤーへの連続被弾クールダウン: 3000ms
・画面表示: 出現時に「WARNING: ハリケーン出現」警告が表示される
6. Bot(AI プレイヤー) (Bot AI)
------------------------------------------------------------------------
6-1. 行動パターン
・移動: 未塗装のセルを優先的に目標として移動する
・ボム設置: 1ティック(50ms)あたり約6%の確率でボムを設置する
・被弾時: 人間プレイヤーと同じスタン・リスポーン処理が適用される
6-2. 補充ルール
・目標人数に対して人間プレイヤーが不足する場合,Botが自動補充される
・チームバランスを考慮して各チームに均等に配置される
7. サーバー同期 (Server Synchronization)
------------------------------------------------------------------------
7-1. ゲームループ
・サーバーのティックレート: 20Hz(50ms間隔)
・各ティックで実行される処理:
1. ハリケーンの位置更新と衝突判定
2. Bot AIの行動決定
3. マップの塗り処理と競合判定
4. ボムの爆発判定(Bot向け)
5. 差分データの組み立てとブロードキャスト
7-2. 位置同期
・クライアントからサーバーへ: 50ms間隔でプレイヤー座標を送信する
・サーバーからクライアントへ: 変化があったプレイヤーの座標のみを差分送信する
・座標の量子化: Float座標をスケール100で整数化し,帯域を削減する
7-3. 時刻同期
・Ping/Pongベースのクロック同期でクライアント・サーバー間の時刻差を推定する
・推定オフセットはスムージングされ,急激な変動を抑制する