Enable first operating day with staff assignments, opening guide, and ledger

This commit is contained in:
Codex
2026-09-09 08:26:20 +09:00
parent 423fd6dd2e
commit 29a660aed0
28 changed files with 2451 additions and 156 deletions
+38 -22
View File
@@ -2,6 +2,10 @@
この文書は仕様書そのものではなく、現在のコードがどこまで到達しているかを記録する。ゲームルールの正本は `GAME_SPECIFICATION.md`、System境界と不変条件の正本は `SYSTEM_SPECIFICATION.md` とする。
更新日: 2026-09-09。ドット断面版の基準コミットは `423fd6dd2e75da926e38b35ac8c435e462b168d9`。復旧方法は [RECOVERY_GUIDE.md](RECOVERY_GUIDE.md)、承認済み制作計画の課題と検証残は [DEVELOPMENT_BACKLOG.md](DEVELOPMENT_BACKLOG.md) を参照する。
以下のSystem別一覧は既存の実装・試験記録を引き継いでいる。直前のドット版変更では起動とUI・カメラの359項目、その後の配属APIでは103項目の個別確認記録がある。P1追加後に `make check` と `make test` の全構成ターゲットを2群に分けて実行し、全件が成功終了した。追加の配属API103項目、スタッフ画面44項目、通常開業35項目も合格。対象と制約は [P1単日検証記録](qa/P1_FIRST_OPERATING_DAY.md) に記録した。通常初期予算での最小宿は単日受入・保存復元を確認したが、14日MVP、Windows実機性能、通常操作だけによる3営業日は別の完成条件として残る。
## 実装・自動検証済み
### S0: 決定的Simulation基盤
@@ -127,28 +131,39 @@
- 32 Guest定義のRuntime登録、候補雇用時の契約費・日給・Shift・Pathの一括確定、重複雇用防止
- 累計Faith/累計客の実取引連動、Rank昇格とWorld/Path/GameStateの原子的確定、旧Runtime Rank 1保存の安全な移行
### 操作画面
### 操作画面:現在のドット断面版
- V3モックを基準にした暖色の木・革・羊皮紙UI。上部の常設HUD、左の管理カテゴリ、中央の生きたMap、右の施設Inspector、下部の建築パレットへ領域を分離
- 表層の世界樹宿と地下根域の製品向け背景アセットを導入。背景Texture、UI Palette、重ね描画Opacityを`VisualThemeProfile`へ分離し、Main SceneのTheme指定だけで一括交換可能。Theme欠落時は手続き描画へ安全にFallbackする
- 施設16種、管理カテゴリ6種、資源4種、表裏層・掘削・回転・保存などの操作アイコンを、実透明の4×4 Atlas Assetとして導入。UIは安定IDから`VisualThemeProfile`の割り当てを取得し、画像名やAtlas座標を直接参照しないため、後からTheme単位または個別割り当てで交換可能
- 施設Iconを中央Mapの完成施設・建設中施設・配置Previewへも接続。占有CellとHit Testは従来どおりWorldServiceを正とし、Iconは占有範囲中央へ視覚的に重ねるだけなのでSimulationとSave互換性を維持する。選択中の施設/工事は右Inspectorにも同じTheme Iconを表示
- 客8クラスと従業員8役割群の成人キャラクターMarkerを実透明4×4 Atlasとして導入。客種別/従業員役割の安定IDからTheme割り当てを解決し、派生客種別はクラス接頭辞へ、未知IDは既定MarkerへFallbackする
- 外枠・木・革・羊皮紙Panel、Button 4状態、選択/警告枠、待機Badge、工事中、客/従業員経路、FRONT/BACK境界装飾を4×4 UI Skin Atlasとして導入。主要Panel、全Button、Map経路、工事中Cell、待機Badgeを意味ID経由で接続し、Theme欠落時は従来のStyleBoxFlat/手続き描画へFallbackする
- 外部の画像生成AIで正式素材を再制作するための`ART_ASSET_PRODUCTION_SPECIFICATION.md`を追加。現在接続済みの全画像について推奨解像度、Alpha、Atlas順序、生成指示、差し替え手順、納品判定を固定した
- 1440×810を基準解像度として、`canvas_items`/`expand`/fractional stretchとHiDPIを有効化。背景、施設、共通操作、人物AtlasにはMipmapを生成し、720p・1080p・1440p・4Kで同一UI構造を維持する
- 上部HUDへ営業日、時刻、時間帯、来客、宿泊予定、所持金、Mana、資材、Faith、Heat、一時停止、x1/x2/x4を常設
- 実World Cell、占有、工事、施設、Guest、StaffのFRONT/BACK別描画
- PathServiceの実密度/容量から緑・黄・赤の混雑経路を描画し、FacilityServiceの実待機列をMap上の数字Badgeとして表示
- 施設選択と状態、reason、待機列、Service、配置人員の表示
- 仕様表のMVP施設16種を選べる画面下部の横スクロール建設パレット
- 回転、配置Preview、重なり等の失敗理由、建設Command
- 掘削モード、正式な費用・入口接続・支保Preview、Rank/運営gate、進捗表示、FRONT/BACK同時解放Command
- 時間、一時停止、x1/x2/x4、Event、Heat、手動Save/Load
- 本番運営の明示起動、個人AP、未払給与、前日損益、要確認/破綻状態、失敗境界の再試行表示
- 検証済み雇用候補20人の一覧。氏名、役割、勤務帯、契約金、日給、4技能を表示し、原子的な雇用Command、未払/破綻gate、二重クリック防止、即時/予約実行結果、Save済みCommand履歴からの再試行連番復元へ追従する
- foreground Eventの日本語Choiceボタン、安定した選択Command、解決後の停止解除と選択欄消去
- 1280×720、1440×810、1920×1080、2560×1440、3840×2160で、左Navigation/中央Map/右Inspector/下部Paletteの位置関係を含むLayout自動検証
- 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](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へ追加する。
## 統合済みの運営縦断
@@ -168,7 +183,8 @@
- 配置と同一Shiftから関係Event候補を生成する接触判定と事前リスクPreview
- 夕方混雑、FRONT/BACK比較、健全/地下収支を直接比較するScenario Test
- 100客・30従業員の実描画Frame試験
- 製品用アート、音響、物語本文、完全なチュートリアル、バランス調整
- 通常開始からの建設・雇用・配属・厨房生産・仕入れ・配送・収支確認・保存再開による3営業日運営
- 専用ドット動作、製品用アート、音響、物語本文、完全なチュートリアル、バランス調整
## 実行方法