======================================================================== ゲームプレイ仕様 (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ベースのクロック同期でクライアント・サーバー間の時刻差を推定する ・推定オフセットはスムージングされ,急激な変動を抑制する