Files
TheTree_mock/docs/IMPLEMENTATION_STATUS.md
T

20 KiB
Raw Blame History

実装状況

この文書は仕様書そのものではなく、現在のコードがどこまで到達しているかを記録する。ゲームルールの正本は 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は雇用契約金等を含むため「運営費」と表示する。
  • 商品・探索・投資等の管理カテゴリは入口または準備中の案内に留まる。すべてのカテゴリを製品機能の完成として数えない。
  • 従来の大きな生成背景、施設アイコンによるマップ表現、人物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へ追加する。

統合済みの運営縦断

  • 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営業日運営
  • 専用ドット動作、製品用アート、音響、物語本文、完全なチュートリアル、バランス調整

実行方法

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 に固定する。