docs/K1仕様書_磨き込みとマルチ_20260913.md

分割 1 / 1 · 元ファイル 1〜229行付近

原文の連続部分です。長い圧縮行は行の途中で分割する場合があります。全分割を順に連結するとファイル全文になります。

# 石とゾンビ — 磨き込み・マルチプレイ追加仕様書(2026-09-13 K1)

**K1の言葉をそのまま置く紙。ここに無い条件を足さない。**

## K1の言葉(原文のまま)

> 石とゾンビ — 磨き込み・マルチプレイ追加仕様書
> 作成日: 2026-09-13
>
> 【大前提】
> 既存「石とゾンビ」を土台に磨き込む。別ゲームにしない。
> 既存の芯は維持する。
> ・右から複数ゾンビが迫る
> ・石を物理挙動で投げる
> ・通常石は横から当ててもノックバックのみ
> ・頭頂部へ上から急角度で落ちた石だけが通常ゾンビを倒す
> ・「上から落とす軌道を作れるか」が遊びの中心
> ・石は無限
> ・縦画面を維持
> ・現在のコード描画中心の見た目と手触りを土台にする
>
> 【今回追加する柱】
> 1. シームレスな2人協力マルチ
> 2. HP制と前衛/後衛の交代
> 3. カラス
> 4. 30秒クールダウンの大岩
> 5. スクラップ報酬+生存時間倍率
> 6. アバター/ショップ
> 7. ラグを感じにくいネットワーク表示
>
> 【モード選択を作らない】
> トップ画面の主要導線:
> ・はじめる
> ・ショップ
> ・アバター変更
>
> 「シングル」「マルチ」の選択は作らない。
> 「はじめる」で即ゲーム開始。最初は1人で遊び、同時に裏でマッチング対象になる。
> 別端末のプレイヤーが「はじめる」を押し、参加可能なプレイがあれば途中参加して自然に2人プレイへ移行する。
> 誰も来なければそのままソロ。
> 最大2人。
> ロビー、部屋作成、準備完了等は初期仕様では不要。
> 途中参加・途中退出を許容し、退出ペナルティは設けない。相方が抜ければ残った人はソロで続行。
>
> 【前衛/後衛】
> 2人は画面左側に横並びで配置し、右側(ゾンビに近い側)が前衛、左側が後衛。
> ゾンビの攻撃は基本的に前衛が受ける。
> 1操作で2人の前後を交代できる。
> HPが減った人を後ろへ下げ、余裕のある相方が前へ出られる。
> ゾンビに取り付かれている最中は交代不可。相方が石でノックバックさせて救出する。
>
> 【HP制】
> 既存の「負けライン到達で即ゲームオーバー」はマルチ向けに変更。
> 各プレイヤーに個別HPを持たせる。
> ゾンビが前衛に取り付くとHPが継続減少。
> 相方が石を当ててゾンビをノックバックさせれば取り付きを解除できる。
> HP0のプレイヤーはそのプレイから脱落。
> 相方が生存していればゲームは続行し、1人状態へ戻る。
> 最大HPや秒間ダメージは調整しやすい定数にしてプレイテストで決める。
>
> 【協力の自然発生】
> 役職選択は作らない。2人とも基本操作は石投げ。
> ルールから自然に役割分担を発生させる。
> ・片方が横から当ててゾンビをノックバック/密集させる
> ・片方が上から落として密集したゾンビをまとめて倒す
> ・取り付かれた相方を救出する
> ・片方が地上、片方がカラスを担当する
> ・HPを見て前後交代する
> 重なった複数ゾンビを一投でまとめて倒せる現在の気持ちよさは活かす。
>
> 【新敵: カラス】
> 空中から来る敵。
> 単なる敵数増加ではなく、2人の役割分担を生む目的で追加。
> 「自分はカラス、相方は地上」という分担が効率的になるようにする。
> 画面上部を利用するが、通常石の山なり軌道を邪魔しすぎない。
> HP、倒し方、攻撃方法は最初は簡潔なプロトタイプで実装し、触って調整する。
>
> 【特殊技: 大岩】
> 初期版の特殊技は1種類のみ。
> ・通常石のおよそ3倍の大きさ
> ・クールダウン約30秒
> ・スクラップ消費なし
> ・通常石と違い、頭頂部へ上から当てなくても通常ゾンビを倒せる
> ・危険な状況をひっくり返す救済/爽快手段
> ・重量感、衝突感を出す
> 特殊技を最初から大量に増やさない。
>
> 【スクラップ】
> ゾンビ撃破でゲーム内通貨「スクラップ」を獲得。
> 倒すたびに「+1」「+3」等を視覚表示。
> 右上などに、そのプレイヤーが現在の参加区間で獲得している基礎スクラップ合計を常時表示する。
> マルチでは参加タイミングが違うため、2人の表示値は異なり得る。
>
> 【マルチ時のスクラップ共有】
> 「参加している時間帯のチーム撃破報酬は共有」「参加前の過去報酬は共有しない」。
>
> 例:
> Aがソロ中に500相当を稼ぐ。
> その後Bが途中参加。
> Bは過去の500を受け取らない。
> B参加後は、Aが倒した敵のスクラップもBへ入り、Bが倒した敵のスクラップもAへ入る。
> キルの取り合いを発生させない。
>
> 【生存時間倍率】
> プレイ世界/セッションが長く続くほど、最終精算時のスクラップ倍率を上げる。
> 倍率は基本的に「個人の参加時間」ではなく「そのゲーム自体が何秒生き残っているか」を基準にする。
> 途中参加者も、参加後に獲得した基礎スクラップについては現在の高い生存時間倍率を受けられる。
>
> 仮例:
> 序盤 ×1.0
> 60秒 ×1.2
> 90秒 ×1.3
> 120秒 ×1.5
> 以降さらに上昇
> 正確な数値はプレイテストで調整。
>
> 【精算】
> 死亡、途中退出、セッション終了時に精算。
> 基本式:
> 最終獲得スクラップ = 参加中の基礎スクラップ × 精算時点の生存時間倍率
>
> 「基礎スクラップ → 生存ボーナス×1.5 → 最終獲得」のように増えた理由を明示する。
> 途中退出でもその時点までの正当な報酬を受け取れる。
>
> 【スクラップで能力強化しない】
> スクラップは基本的に見た目の解放用。
> 投石速度、攻撃力、HP、大岩威力等の恒久強化には使わない。
> このゲームの上達軸はプレイヤー自身の投球技術。
> 長期プレイヤーの差は腕前と見た目のコレクションで表現する。
>
> 【アバター変更】
> 既存shurechara.jsの基本要素は最初から利用可能。
> ・髪型8
> ・髪色8
> ・肌色4
> ・基本服色8
> トップ画面の「アバター変更」で自由に基本アバターを変更可能。
> これらはショップ商品にしない。
>
> 【ショップ】
> 初期カテゴリは3つ。
> A. 特別衣装 約50種類
> B. 帽子/頭装備 約20種類
> C. 石スキン 約10種類
> 眼鏡等のアクセサリーは初期版では入れない。
> 全商品は見た目だけで性能差なし。
>
> 【衣装 約50種類】
> 既存の色違いではなく形そのものが違う衣装。
> 約70%をかわいい/女性向け寄り、約30%を男性向け/中性的にする。
> 例: フリル、メイド服風、アイドル風、リボン、ワンピース風、セーラー風、パーカー、作業着、スーツ、スポーツユニフォーム、オーバーオール、ジャケット等。
> 実在ブランドや既存キャラクターの模倣はしない。
> 凝った衣装ほどスクラップ価格を高くするが、性能差はない。
> 既存の素朴なコード描画の味を維持する。
>
> 【帽子 約20種類】
> 例: キャップ、ニット帽、麦わら帽子、ハット、ベレー帽、リボン、猫耳風頭装備、王冠風、ヘルメット等。
> 髪型との組み合わせで破綻しないようにする。
>
> 【石スキン 約10種類】
> 物理性能・当たり判定は通常石と同一。見た目のみ変更。
> 例: 通常石、色違い、ハート型、少し光る石、丸い石、角張った石、模様入り等。
> 季節限定は現段階では不要。
>
> 【ネットワーク/ラグ対策】
> 目標は「通信しているから操作が重い」と感じさせないこと。
>
> 自分の操作:
> ローカルで即時反映。投石時に通信往復を待たない。
>
> 相方:
> 受信位置をそのままカクカク切り替えず補間して滑らかに表示。
>
> ゾンビ:
> 同期情報間を補間し、必要に応じて予測して滑らかに表示。
>
> HP、死亡、ゾンビ撃破、スクラップ、大岩使用、前後交代、参加/退出等の重要状態は、プレイヤー間で食い違わない権威的な状態管理を行う。
>
> 投石は操作レスポンス最優先。本人端末では即座に飛ばし、その後必要な同期・補正を行う。
> 協力ゲームなので対戦FPSほどの公平性は不要だが、「自分では明らかに当たったのに何も起きない」は極力避ける。
>
> 具体的な通信方式・サーバー構成は既存の五月雨開発環境を確認して選択する。
> 新しい外部サービスを勝手に追加しない。
>
> 【既存難易度】
> 現状は主に撃破数に応じてゾンビ速度が上がり、出現間隔も短くなる。
> この「続けるほど苦しくなる」性質は生存時間倍率と相性が良いため、まず残して検証する。
> 時間制クリアにはせず、どこまで生き残れるかを基本とする。
>
> 【実装優先順位】
> 既存の投石物理と頭頂部判定を壊さないことが最優先。
>
> 順序の目安:
> 1. 既存シングルの挙動を保持
> 2. HP制
> 3. 2人参加/退出と前後交代
> 4. マルチ同期と補間
> 5. スクラップ+共有+生存倍率+精算
> 6. 大岩
> 7. カラス
> 8. アバター変更
> 9. ショップと衣装/帽子/石スキン
> 10. iPhone実寸で検品・調整
>
> 【完成条件】
> ・「はじめる」だけで即遊べる
> ・誰か来れば途中から自然に2人になる
> ・抜けてもゲームが壊れない
> ・2人でノックバック、まとめ撃破、救出、前後交代、対カラスの分担が自然に起こる
> ・投石操作が通信待ちで重くならない
> ・ゾンビと相方が通信でガクガクしない
> ・撃破のたびスクラップ獲得が視覚的に分かる
> ・死亡/退出時に生存倍率がかかり、報酬が明快
> ・スクラップを貯めて見た目を集めたくなる
> ・課金や能力強化ではなく、腕前と見た目が継続動機になる
> ・何より既存「上から落とす軌道を作る」面白さを損なわない

## 親が決めた環境(2026-09-13)

マルチが入るので、置き場が変わります。**新しい外部サービスは足しません。**

| 決めた事 | 中身 |
|---|---|
| 置き場 | **Cloudflare Workers + Durable Objects + WebSocket**。**Pagesではクラスを持てない**ので、回転寿司オンラインとぷっちーずと同じ形にする(`[assets]` で静的ファイルも同じWorkerから出す) |
| 部屋 | 1プレイ=1 Durable Object。待合・部屋作成は作らない(「はじめる」で即・空きがあれば途中参加) |
| 正 | **HP・死亡・撃破・スクラップ・大岩・前後交代・参加退出はサーバーが正。**投石の見た目は自分の端末で即時、後から合わせる |
| 守り | **DoSガード3盾を必ず入れる**(`C:\五月雨開発\DoSガード.md`)。①連打を断る ②月の上限で止める ③CPU上限 |
| ★目覚まし | **人が誰もいない部屋が回り続けないこと。**誰も繋がっていない状態が数分続いたら畳む。止める条件を「全滅」のような遊びの中の出来事にしない(2026-09-13にぷっちーずで実際に起きた) |
| 見た目 | **今のコード描画のまま。**絵は足さない(衣装・帽子・石スキンもコードで描く) |