23 KiB
実装状況
この文書は仕様書そのものではなく、現在のコードがどこまで到達しているかを記録する。ゲームルールの正本は GAME_SPECIFICATION.md、System境界と不変条件の正本は SYSTEM_SPECIFICATION.md とする。
更新日: 2026-09-09。ドット断面版の基準コミットは 423fd6dd2e75da926e38b35ac8c435e462b168d9。復旧方法は RECOVERY_GUIDE.md、承認済み制作計画の課題と検証残は DEVELOPMENT_BACKLOG.md を参照する。
以下のSystem別一覧は既存の実装・試験記録を引き継いでいる。直前のドット版変更では起動とUI・カメラの359項目、その後の配属APIでは103項目の個別確認記録がある。P1追加後に make check と make test の全構成ターゲットを2群に分けて実行し、全件が成功終了した。追加の配属API103項目、スタッフ画面44項目、通常開業35項目も合格。対象と制約は P1単日検証記録 に記録した。通常初期予算での最小宿は単日受入・保存復元を確認したが、14日MVP、Windows実機性能、通常操作だけによる3営業日は別の完成条件として残る。
実装・自動検証済み
S0: 決定的Simulation基盤
- 1ゲーム分固定Tickと11段階の処理順
- Command Queue、priority、予約時刻、処理後も保持する受理ID/idempotency対応、旧Queue Snapshot移行
- 原子的State Transaction
- subsystem別の決定的RNG Stream
- Stable ID、全件検証後に一括Commitする再入安全なDomain Event Batch、Simulation Digest
- Directory単位のAtomic Save、Checksum、backup、Load直後の時刻維持
- 同一Seed・Command列を24時間再生したDigest一致
S1: 世界・建設
(x, y, layer)Cell、ZoneとFRONT/BACKの分離- Rank 1〜7の非破壊World拡張
- Occupancy、掘削、構造支持Component
- 決定的A*、Path Cache、明示Connectorと利用権限
- セル容量・密度・動的Cost、Soft Collision、混雑回避
- Cost低下・通行再開時のCache失効、権限別の正確な経路Cost、無関係な障害を除いた不到達理由
- Elevator稼働状態と有限Queue、Request/Unit二重登録防止、停止時迂回、30分停滞検知と安全復旧候補
- Placement検証、ConstructionJob、取消、完成、撤去
- 建設完了通知の保留・確定・破棄境界。完成処理の検証中は外部通知を出さず、成功時だけ順序を保って一度ずつ公開する
- 硬度別の地下掘削Job、入口までの接続、支保条件、中断再開、FRONT/BACK同時解放
- 地下施設の全Footprint掘削済み検証と、Zoneを跨ぐFootprintの拒否
- 境界施設はanchorを境界へ固定し地上側へのFootprint展開を許可、地上/地下施設は全Footprintを指定Zoneへ厳格固定
- 主要施設占有と独立して同一Cellへ共存できるROUTE/DECORATION/UTILITYの3種subslot、複数Cell横断、Path投影用query、厳密Snapshot
- ROUTE subslotの追加・置換・撤去とPath graphを原子的に同期し、失敗時の双方復元、revision/stale判定、冪等再送、隔離まで扱うAdapter
- 完成した客用通路/業務用通路を実ROUTEへ、従業員ドアを職員専用FRONT↔BACK Connectorへ原子的に投影・撤去する境界。安定ID、crosslink、exact rollback、隔離、厳密Snapshotを含む
- Runtime v6で掘削、subslot、Path投影、施設投影を1分Tick・Rank拡張・建設完了・撤去・Saveへ統合。Runtime v5の旧代理施設を決定的に実ROUTEへ移行する
- World、Path、Constructionを含むSnapshot往復
S2: 施設・在庫・物流・Mana・経済
- Facility状態の優先評価と複数reason
- 営業時間、Policy Snapshot、priority Queue、Capacity Slot
- Service開始・進行・中断・完了Callback
- owner別Inventory Stack、FEFO Reservation、期限切れ、監査修復、既定IDの再利用を防ぐTombstone
- 入力fingerprint付き冪等性、競合する一括操作の事前拒否、全件原子rollback
- Logistics Request、貨物所有権移転、決定的Dispatcher、候補外になった運搬人の予約積載保持
- 歩行Graphと独立したMana Network、優先供給、蓄電、Brownout、復旧保持
- Goldを直接代入しない複式Ledger、逆仕訳、部分返金、日次照合
- 建設費・撤去返金とLedgerの原子的Adapter
- 原料予約から施設Serviceと売上記帳までの統合Cycle
- Cycle途中のSave→Load→再実行でDigest完全一致
- §7.6のMVP施設16種をStable ID付きDefinitionとして登録・Schema検証
- 施設詳細Schema version 2を追加。静的Definitionと可変Instance/日次履歴の境界、Access、Upgrade、営業時間、Policy、環境・リスク、客層、解禁、統計、サービス種別ごとの時間・品質・価格・処理単位・欲求効果を定義し、Registryで厳密検証
- 受付、厨房、成人向け個室を詳細Schemaへ先行移行し、複数接客・BACK生産・夜間成人向け営業の3類型を自動検証。その他MVP 13施設と拡張16施設は互換Schema version 1で段階移行可能
- MVP互換性を保つ拡張施設16種を
data/facilities/expansion/へ分離して定義。地上一般向け5種、地下FRONT5種、BACK6種についてZone/Layer、建設費、Footprint、人員、容量、時間、価格、在庫、Risk Tagを固定し、通常建築パレットへの解放前に個別検証できるCatalog境界を追加
S3: 客・従業員
- 6種のGuest Need(Hunger/Sleep/Hygiene/Medical/Leisure/Intimacy)、Utility、状態遷移、実経路を1セル/分で移動
- 旧5欲求Saveだけの決定的移行、現行経路での旧Need名・欠落・混在拒否、成人確認付き昼夜Intimacy
- 所持金と未決済予約を考慮した施設選択
- Queue、Service、退出、経路失敗の安全な復旧
- Staffの複数Shift、Task Dispatcher、実移動、疲労と危険作業制約
- 雇用区分、人物別日給、ID順の日次給与入力、当日発生と繰越債務を分けた部分清算、退職者の未払給与別台帳、旧Saveの互換移行
- 清算ID/日付/入力fingerprintによる二重発生防止と、派生合計まで照合する給与履歴Snapshot
- 勤務終了、施設人員喪失、Service猶予と失敗の連動
- Guest/Staffのnamespaced Path投影、密度同期、固定小数点混雑速度、30分停滞復旧
- Guest/Staff/Facility/Inventory/Ledgerの24時間決定的再生
- 破損Snapshotと孤児参照を副作用なしで拒否
S4: 関係・Event
- Affection、Trust、Fear、Corruption、Rival Bond、Shield
- Shield攻撃、反復Penalty、段階閾値、Route Lock確認境界
- データ駆動Condition/Action/Choice
- foreground Event排他、Actor Lock、Cost escrow
- Content FilterのFADE/REPLACE/DISABLE
- 選択二重送信、Actor欠落、Action失敗、Save途中再開の安全な復旧
- Threshold発火と24時間exact replayのRuntime統合
- 配置確定前に共有施設・重複時間、Shield攻撃候補、発火可能Event、Route Lock警告、施設/時間の回避案を決定的に比較する読み取り専用Preview
S5: 行政・監査
- Heat、Suspicion、Incident重複排除、日次減衰とactive-case下限
- Evidenceの位置、視線、到達、証言、既知施設による発見根拠
- 監査予告、専用RNG、監査官の実Path巡回、到達不能時の安全退出
- 証拠点による処分、罰金の複式台帳反映、
resolution_id二重適用防止 - Authority全Command、Domain Event、Snapshot、原子的RestoreのRuntime統合
- 毎日06:00評価、途中Save、24時間exact replay
- Raid Wave、明示参加者と画面外戦力、扉・設備・目的物のラウンド更新
- 防衛Score、疲労・奇襲・複数入口、Active Skill、撤退方針、複数Wave
- Round再送、操作種別付き解決ID、外部効果/RNG rollback、厳密な時刻契約
- Cancel終了の原子反映、Wave別侵入口、防具軽減、途中Save、JSON輸送、破損Snapshot拒否
- Defense全10 Command、専用RNG、Skill費用、Staff/Facility損害、Raid排他LockのRuntime統合
- 終了Raidの履歴化と後続治療/修理、scheduled Command時刻、Runtime v1からDefense付きv2への決定的移行
S6: 保存・運用の基礎
- 正式Saveを維持する3世代Autosave
- Checksum付きRecovery候補と明示的Recovery Load
- N→N+1の連続Migration RegistryとMigration前backup
- Migration/Autosave回転中断の自己修復とRecovery候補
- 保存root・親directory・非package・package内symlink越境を全Load入口で拒否するパス安全性
- 通常Saveのrename中断マーカーと自己復旧、Autosave世代縮小時の検証済み候補だけを安全に整理
- 安定Save ID、完全Manifest既定値、Thumbnail生成と上書き時のidentity保持
- 実行画面だけが有効化する本番Autosave policyと、Test/独立Runtimeの保存先分離
- 毎日06:00の固定境界Checkpoint、3世代回転、手動保存Queue、復旧候補の検査・明示Load
- Load直後の時刻保持と、壊れたTask/終了Event Lockだけを対象とする原子的なRecovery限定修復
- 正式、backup、移行前、Autosaveの各候補をRuntime全Domainへ隔離復元し、ゲームとして成立する最初の候補だけを採用する復旧fallback
- Saveより厳しいContent FilterをLoadで弱めない安全な統合と、不明enumの厳密拒否
- Simulation、Path、Save、Load、stallの実測付き性能予算Collector
- PERF-MVP-001の正確なFixtureと24時間Harness。完全条件を3回連続24/24合格(x4 P95 8.14~8.45ms、最大停止予算も合格)。これは独立Service合成の論理負荷であり、Runtime全Domainや実描画Frameの計測とは区別する
14日運営Coordinator基盤
- 暦日は00:00に更新し、06:00に前営業日の日次締めと朝運用境界を固定順で一度だけ実行
- 需要の60分更新と30分ごとの来客計画、fixed-point carry、収容・来客上限
- DaySummary、前日差、7日移動平均、施設別損益、未払解消と3回連続破綻
- 外部Domainのcapture/validate/apply/rollback境界、14日間の省略なしexact replay、Snapshot v3と旧版移行
MVP人物・進行データ境界
- 客8クラスと種族4種を別軸にした32通りの成人確認済みGuestDefinition生成
- 自由雇用候補20人の固定ID、成人確認、役割、契約費、日給、4技能、許可業務
- ヒロイン
heroine_anriとライバルrival_raiの相互参照、固有効果、通常売却禁止タグ - 不明field/tag、重複ID、成人未確認、18歳未満、孤児参照、型の暗黙変換を全体fail-closedで拒否
- Rank 1~7の逐次条件、累計Faith/客、地上・地下稼働条件、派生MapBounds、冪等昇格Request
- World拡張用capture/apply/rollback境界、rollback失敗時の隔離、厳密Snapshot往復
- 32 Guest定義のRuntime登録、候補雇用時の契約費・日給・Shift・Pathの一括確定、重複雇用防止
- 累計Faith/累計客の実取引連動、Rank昇格とWorld/Path/GameStateの原子的確定、旧Runtime Rank 1保存の安全な移行
操作画面:現在のドット断面版
- The Tower SPを参考にした世界樹の断面を中央へ広く表示する。空、幹、枝葉、床、部屋を手続き的なドット描画で構成し、受付のカウンター、客室のベッド、食堂の卓、厨房などを施設IDに応じて描き分ける。
- Kenney Tiny Dungeon/Tiny Townの16×16px素材を人物、小物、庭木へ接続。Packed Atlas、Nearest、Mipmap無効を使用し、公式配布元・CC0原文・取得ZIPのSHA-256を
assets/kenney/に保存する。 - 客と従業員はRuntimeに存在する人物を表示する。移動の補間、左右反転、足のずらしと上下動、待機・利用・作業の状態表示を行い、一時停止中はアニメーションも停止する。専用の食事・清掃・運搬フレームは未制作。
- サービス中の客は施設内の利用位置へ描画上だけ投影する。シミュレーションの権威セル、経路、占有、保存形式は維持する。
- 濃緑、クリーム、木色のコンパクトUI。上部HUD、左の細い管理カテゴリ、中央マップ、下部操作バーを常設し、右の運営詳細と下部の建築パレットは必要なときに開く。起動時は両パネルを閉じる。
- 上部HUDに営業日、時刻、時間帯、来客、宿泊予定、所持金、Mana、資材、Faith、Heat、停止、x1/x2/x4を表示する。
- 実World Cell、占有、工事、施設、Guest、StaffをFRONT/BACK別に描く。ホイールでカーソル基準ズーム、中ボタンドラッグでパン、Homeで全体表示、Gで格子と実混雑表示を切り替える。
- PathServiceの密度/容量を緑・黄・赤の経路に、FacilityServiceの待機人数を小さなBadgeに表示する。施設クリックで右パネルを開き、状態、reason、待機列、Service、配置人員を確認する。
- MVP施設16種を選べる下部の横スクロール建築パレット、回転、配置Preview、失敗理由、建設Commandを接続。客用/業務用昇降機は安全な階間Topologyが未統合のため、現在は建設を拒否する。
- 掘削モードでは費用、入口接続、支保、Rank/運営gate、進捗を表示し、FRONT/BACK同時解放Commandへ接続する。
- 雇用候補20人の氏名、役割、勤務帯、契約金、日給、4技能を表示。原子的な雇用、未払/破綻gate、二重クリック防止、予約実行結果、保存したCommand履歴との整合を扱う。その後のP1追加で、雇用済み人物の配属・再配属、DAY/NIGHTの継続勤務計画、未配属、反映予定と変更不可理由を通常UIへ接続した。配属先までの経路を検証するが、実通勤して到着してから稼働する経路は未統合。
- 本番運営の明示起動、個人AP、未払給与、前日損益、要確認/破綻、失敗境界の再試行表示、foreground Eventの日本語Choice、下部の手動Save/Loadを接続する。P1追加で6段階の「開業の手引き」と、営業日選択、現金入出金、建築出金、確定損益、給与・未払、施設別損益、照合を示す帳簿を接続した。建築出金と営業利益を分け、内部のcost_of_goodsは雇用契約金等を含むため「運営費」と表示する。
- 商品は有料仕入れ・厨房設定・実配送の3タブへ接続済み。探索・投資等の管理カテゴリは入口または準備中の案内に留まる。すべてのカテゴリを製品機能の完成として数えない。
- 従来の大きな生成背景、施設アイコンによるマップ表現、人物Bust Marker、装飾Skinは現マップ表示に使用しない。小型の建築・管理・資源・操作アイコンは
VisualThemeProfileの既存参照を残す。 - 基準解像度1440×810、HiDPI、
canvas_items/expand/fractional stretchは維持。Pixelの元画像にはMipmapを生成しない。旧UIの解像度別Layout試験と現在のPixel・カメラ試験は、実描画Frame性能とは別に評価する。
見学・制作基準
make preview-pixelは実施設7件、通路、従業員4人、自然来客を組み立てる専用見学。食堂へ食材32個を明示的に支給し、保存・読込・自動保存を無効にする。通常ゲームの初期状態や完成した経営ループの代用ではない。make capture-pixelは時間差PNG 2枚と状態JSONをartifacts/pixel-tower/に再生成する。生成物はGit管理対象外。- ローカル制作版をGitへ記録し、基準コミットの完全履歴bundleを作成・検証済み。
.godot/、build/、artifacts/、ゲームのuser://保存はbundleに含めない。 - 旧V3モックと
ART_ASSET_PRODUCTION_SPECIFICATION.mdは過去のアート資産として保持する。現在の画面実装の基準は PIXEL_TOWER_VISUALS.md と実描画であり、旧モックへの再一致を要求しない。
P1:通常開業の最小ループを単日確認
- 通常の初期Gold 5,000・資材50から、UIのCommand経路で受付1件、一般客室2件、通路7セルを建築し、アカネを雇用・受付へ日勤配属する。見学Fixture、客やServiceの直接挿入、無料在庫支給は使用しない。
- 自然来客による宿泊売上320G、翌06:00の給与120G、未払0G、帳簿照合一致を確認。専用
user://tests/first_operating_day_<process_id>/restore-checkから決算・配属・開業達成を復元する。 - 受付売上6,020G、全体営業利益6,040Gという現結果はバランス合格ではない。受付の会計上の役割、価格、宿泊料金の決済・売上記帳タイミングは仕様との差を調整する必要がある。
- 配属は繰返し計画をStaffService v4へ保存し、過去の勤務区間を保持してShiftを分割する。旧v3は計画なしで互換復元する。設計判断はD-032を参照。
make test-openingで単日受入、make capture-openingでartifacts/first-operating-day/{opening,staffed,first-close}.pngを生成する。自動受入は通常UI処理を呼び出すもので、初見プレイヤーの試遊合格とは区別する。- P1全体は未合格。供給経路は下記へ追加した。価格・営業方針は下記へ追加した。宿泊精算・維持費の会計統一、初見プレイヤーの3営業日試遊は残る。配属は経路存在の事前検証と論理確定であり、人物位置を変えず、職場到着後の稼働はMOVEへ追加する。
P1追加:仕入れから食堂まで
- 商品パネルから完成倉庫へ調理用食材を1個3Gで有料購入し、現物と台帳費用を一括確定する。支払い失敗時は両方を戻す。
- KitchenProductionService は客の注文なしで原料4→料理4を15稼働分で生産。自動ON/OFF、目標4/8/12/16、予約・期限・容量・職員・魔力・接続の待機を扱う。
- SupplyLogisticsBridge は勤務中のporterへ実Taskを割り当て、荷元への歩行→積込→納品先への歩行→納品を実行する。満杯・経路断・担当不能では貨物を保持し、部分腐敗時は残った品を実際に荷元へ返す。
- 配送中の保存、無効参照の拒否、厨房counterの再使用防止を含むRuntime v7を追加。旧v6以下は生産計画なしとして復元し、既存の物流Commandは維持する。供給配送の到着確認は手動advanceで迂回できない。
- 倉庫の担当職種を実catalogのporterへ補正し、食堂はattendantも配属可能にした。設定値・正本の料理ポイント/食器等との差はD-033へ記録。
- 初期5,000G・資材50、通常建設と採用5人、有料食材120個で3営業日を45項目確認。食堂売上4,200G、実配送81便、3日とも給与645G・未払0・帳簿一致。配送途中のディスク保存と最終Snapshotを復元した。
- 部品・UI・通常運営の検証範囲は 供給検証記録。
make test-supply、make capture-supplyで再現する。
統合済みの運営縦断
- 14日運営CoordinatorをEconomy/Guest/Staff/Facility/Authority/Eventへ接続し、06:00の営業日締め・朝処理、給与、未払、3回連続支払不能による破綻までRuntimeから実行する
- 人物カタログを使った自動来客・雇用時の日給と、累計客/Faith/稼働施設によるRank条件を日次運営へ接続する
- 実Simulation Tickによる24時間連続運転、選択待ち停止再開、Save復元、部分給与、破綻後no-opを受入試験で確認する
- 14日20,160分については運営境界を加速した連続/Day 7復元の一致を確認する。全Actor AIを含む20,160回の実Tick受入とは区別する
- 掘削と客用通路/業務用通路/従業員ドアをRuntime v6へ統合し、完成失敗時のConstruction・World・Path・通知を一括で戻す
MVP垂直スライスとして残る範囲
現在は、安全に保存・再生できる「操作可能なSystem縦断」であり、14日MVPの内容完成ではない。次の範囲は引き続き必要となる。
- 全Actor AI、全Event、監査、経路移動を含む20,160分の実TickによるS14-CORE受入
- ユニーク2人の配置・接触判定と、そこから生成する14日Event列
- 通常隣接Edgeを安全に抑制する垂直Topologyと、客用/業務用昇降機
- 配置と同一Shiftから関係Event候補を生成する接触判定と事前リスクPreview
- 夕方混雑、FRONT/BACK比較、健全/地下収支を直接比較するScenario Test
- 100客・30従業員の実描画Frame試験
- 供給込み3営業日の自動受入を踏まえた、価格・営業Policy操作と欠品・人手不足・経路不足の改善比較、初見プレイヤーの継続試遊
- 専用ドット動作、製品用アート、音響、物語本文、完全なチュートリアル、バランス調整
実行方法
make test
make check
make run
試遊の手順は PLAYTEST_GUIDE.md、仕様とTestの対応は TEST_MATRIX.md を参照する。各Systemのテストは画面Nodeに依存せずheadlessで実行でき、新しいSystemを追加する際はSnapshot、Atomic Restore、決定性Testを同じ変更に含める。
14日受入の共通Fixtureと数値境界は MVP_ACCEPTANCE_SCENARIOS.md に固定する。
P1 営業設定とDigest軽量化(2026-09-09)
- 「営業」パネル、価格5段階、見積の固定、客の選択・満足への反映、休業と待機客の再判断、稼働中サービスの継続を接続した。厨房・物流は既存operator_openへ同期する。
- 新設受付0G/20分、客室120G、食堂25G/45分。旧施設の基準値と受付済み見積はD-034に従って保存互換を維持する。
- Snapshot全項目・履歴を保持したまま、Digestの呼出し内辞書キー再利用と型付き文字列配列を最適化。旧v1出力との一致を検証し、模擬履歴5,000件のSHA計算中央値は281.294→133.455msだった。
- 合格範囲、通常運営の再検証、残る精算・性能・試遊課題は 営業設定QA。この追加をP1全体や昇降機の完成とはしない。
新料金の供給込み3営業日は49項目合格。受付収入0G、食堂3,000G・宿泊1,200G、給与未払0・照合差0、残金2,895G。営業・休業・配送中の保存と再開、既存回帰も成功終了。実装コミット b3b82ef。