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
+84 -68
View File
@@ -1,96 +1,112 @@
# UI・操作仕様書
## 1. 目的
更新日: 2026-09-09。ドット断面版の復旧基準は `423fd6d`。この文書には、その後に追加した通常開業ガイド、継続配属、日次帳簿と単日確認を反映する。現在の接続状態と製品版へ向けた要求を分け、3営業日を含むP1全体は未合格として扱う。
メイン画面を離れずに、宿の観察、問題発見、建築、改善までを完結できる経営シミュレーションUIとする。
## 1. 目的と外観
操作感は、施設配置が人流へ影響し、その結果を画面上の混雑、待機列、稼働率として観察できることを中心に置く。外観は、暖色の木、革、真鍮、羊皮紙を使った日本製ファンタジーSLG調とし、写実的な西洋ストラテジー表現は避ける。
メイン画面を離れずに、宿の観察、問題発見、建築、改善までを完結できる経営シミュレーションUIとする。The Tower SPを参考に、世界樹の断面と小さなドット人物の営みを画面の中心へ置く。施設配置と動線の変更が、人の移動、混雑、待機、稼働として観察できることを重視する。
## 2. 画面の固定領域
現在は濃緑、クリーム、木色の平坦で小さな枠を使う。部屋、家具、床、世界樹はドット主体で描き、人物・小物・庭木にKenneyの16px素材を使う。太い装飾枠や大きな人物アイコンを常設して中央の断面を狭めない。
| 領域 | 常時表示する情報 | 主な操作 |
## 2. 画面の領域と開閉
| 領域 | 現在の情報・操作 | 表示状態 |
|---|---|---|
| 上部 | 営業日、時刻、時間帯、来客、宿泊、資金、主要資源、評判、警戒 | 停止、通常、2倍、4倍 |
| 左側 | 従業員、施設、商品、探索、投資、帳簿 | 管理モード切替 |
| 中央 | 世界樹の断面、施設、客、従業員、経路、待機列 | 選択、建築、追跡、移動、拡大縮小 |
| 右側 | 選択対象の状態、容量、待機、担当者、清潔、当日売上 | 詳細表示、営業切替、担当変更 |
| 下部 | 建築カテゴリ、施設カード、費用、占有サイズ | 建築、回転、解体、取消 |
| 右下 | 現在の目標、重要通知 | 目標詳細、通知位置へ移動 |
| 上部 | 営業日、時刻、時間帯、来客、宿泊予定、資金、Mana、資材、Faith、Heat、停止、x1/x2/x4 | 常設の小型HUD |
| 左側 | 従業員、施設、商品、探索、投資、帳簿の入口 | 常設の細いカテゴリ列。入口があるだけの準備中項目を含む |
| 中央 | 世界樹の断面、施設の室内、客、従業員、工事、待機、混雑、6段階の開業手引き | 手引きは左上の見出しで折り畳める。断面を広く使用 |
| 右側 | 運営概要、施設状態、雇用候補/雇用済み人物の配属、帳簿、要対応イベント | `I`、カテゴリ、施設選択で必要な内容を開く重ね表示。初期は閉じる |
| 下部 | 建築、FRONT/BACK、掘削、回転、解除、運営、保存、読込と状況案内 | 操作バーと案内を常設 |
| 下部の追加領域 | MVP施設16種のカード、建設費、資材 | `B`で開閉する横スクロール建築パレット。初期は閉じる |
中央マップの可視面積を優先し、通常の管理パネルは画面幅の35%を超えて中央を覆わない。
中央の可視面積を優先する。通常の管理パネルは画面幅の35%以内を設計目安とし、現実装は右側約312pxを使用する。人物編成や帳簿など一覧性が必要な機能は、将来の専用パネルで扱う。目標と通知を独立した右下領域へ常設する製品案は未接続。
## 3. 基本操作ループ
## 3. 観察と基本操作
1. 中央マップで宿の営業を観察する。
2. 待機人数、赤い経路、警告通知から問題を発見する。
3. 施設または人物を選び、右側で原因を確認する。
4. 左側の施設ボタンまたは下部の建築カードから対策を選ぶ。
5. 半透明の建築予告をマップ上へ直接配置する。
6. 営業を再開し、待機時間と経路色の変化を確認する。
1. 中央の断面で営業を観察する。
2. 待機人数や施設の状態表示を見て、必要なときだけ `G` で格子・混雑を表示する。
3. 施設を選び、右パネルで状態と停止理由を確認する。
4. `B`または左の施設カテゴリから建築カードを選ぶ。
5. マップのPreviewと下部の失敗理由を確認して配置する。
6. 営業を再開し、人流と待機人数の変化を確認する。
施設の建築、選択、情報確認のために別画面へ移動させない。人物編成、商品詳細、帳簿など一覧性が必要な機能だけを専用画面または大型パネルにする。
ホイールはカーソル基準のズーム、中ボタンドラッグはパン、Homeは全体表示へ戻す。TabはFRONT/BACK切替、Spaceは停止/再開、1・2・4は時間倍率。Hは雇用候補、Eは掘削、Rは回転、Escはツールとパネルの解除に使う。地上/地下とFRONT/BACKは異なる軸として説明する。
現在は施設・工事・セルの選択を接続している。客や従業員のクリック選択、再クリック追跡、通知から原因地点への移動、トラックパッドや中ボタンなし環境の代替パンは今後の要求であり、現操作として案内しない。
## 4. 建築操作
- 施設カード選択後、カーソル位置に半透明の完成予想を表示する。
- 建築可能は緑、条件不足は黄、建築不可は赤で示す。
- 建築不可の場合は、資金不足、接続不足、未掘削、占有衝突などの理由をカーソル付近へ一行表示する。
- 同種の床、通路、壁、装飾はドラッグによる連続配置を許可する。
- 右クリックまたはEscで建築を取り消す。
- 回転後も建築カードの選択状態を維持する。
- 解体前に対象、返金額、停止する経路を予告する。
- 人物が利用中の施設は即時消去せず、退避完了後に解体する。
現在の接続範囲:
## 5. 観察表示
- カード選択後、カーソル位置に占有セルを示す半透明Previewを表示する。
- 配置可能と不可を枠・色・失敗理由で区別する。範囲外、占有、資金、未掘削、接続・支持等の根拠はRuntimeの検証結果を用いる。
- 左クリックで建設Commandを送る。回転後もカード選択を維持する。
- Escまたは下部の解除でツールを取り消す。パレットは横スクロールする。
- 掘削はRank/運営gate、費用、資材、入口、支保をPreviewし、FRONT/BACKを同時に解放する。
- 客用/業務用昇降機は階間Topology未統合のため建設を拒否する。見えるカードを利用可能な運行設備として説明しない。
通常表示では装飾を優先し、問題が起きた場所だけ小さな待機表示を出す。管理表示では次のオーバーレイを切り替えられる。
今後の要求:
| 表示 | 色と内容 |
|---|---|
| 混雑 | 緑=快適、黄=やや混雑、赤=混雑または通行不能 |
| 客経路 | 客用通路と主要目的地 |
| 従業員経路 | 裏通路、搬送経路、勤務先までの移動 |
| 清潔 | 施設と通路の清潔度ヒートマップ |
| 騒音 | 発生源と距離減衰 |
| 治安・警戒 | 犯罪、目撃、監査リスク |
| 物流 | 倉庫、予約在庫、搬送中の物資 |
- 注意状態の黄色表示、カーソル付近の短い理由、右クリック取消、床・通路・装飾のドラッグ連続配置。
- 解体前の返金額、停止する経路、利用中人物の退避を予告し、退避完了後に撤去するUI。
- 必要人員、欠品、接続の案内を建設後の対処へつなげる。
待機列は人数だけでなく推定待ち時間を保持する。通常は人数を表示し、選択または警告状態で推定時間を展開する。
## 5. 観察表示と人物の動作
## 6. 人物と施設の選択
| 表示 | 現在の状態 | 次に接続する要求 |
|---|---|---|
| 室内・人物 | 施設別家具、Kenneyの小人物、セル間補間、左右反転、簡易歩行 | 専用の食事、睡眠、清掃、運搬、休憩動作と利用位置 |
| 混雑 | `G`で実密度/容量に基づく緑・黄・赤を表示 | 改善前後の待ち時間比較と目的地への案内 |
| 待機 | 実待機人数Badge、人物の小さな待機表示 | 推定待ち時間を保持し、選択または警告時に展開 |
| 客/従業員経路 | FRONT/BACK切替と共通の実混雑表示 | 人物ごとの経路、職員の搬送・勤務先の個別表示 |
| 清潔・騒音・治安・物流 | 専用オーバーレイ切替は未接続 | 清潔、距離減衰、目撃・監査、倉庫・予約・運搬の表示 |
- 客を選ぶと、現在の目的、行き先、経路、欲求、残り忍耐を表示する。
- 従業員を選ぶと、勤務先、移動中か勤務中か、疲労、担当、次の休憩を表示する。
- 施設を選ぶと、営業状態、容量、利用中、待機、担当者、清潔、在庫、当日売上を表示する。
- 選択対象をもう一度押すと追跡を開始し、中央マップが対象へ緩やかに追従する。
- 警告通知を押すと原因地点へ移動し、関係する施設または人物を選択する。
人物はRuntimeの実Actorを表示する。客のサービス中位置は施設内へ描画上だけ投影し、権威セル、経路探索、占有、保存を変えない。停止中は動作も止め、移動は確定セルへ合わせる。隣接Atlasセルの別人物を歩行差分に使用しない。
昇降機については待つ→乗る→昇降→降りるを将来の運行状態へ接続する。乗客の徒歩表示と車内表示の重複を防ぐ。現段階の上下通路移動を昇降機完成の証拠にしない。
## 6. 人物と施設の詳細
施設の営業状態、複数停止理由、容量、利用中Service、待機、人員は右パネルへ接続済み。客や従業員の画面上のクリック選択と追跡は未接続。次を製品要求とする。
- 客: 目的、行き先、経路、欲求、残り忍耐。
- 従業員: 勤務先、状態、疲労、担当、再配属と勤務帯変更は雇用済みパネルに接続済み。実通勤・到着、次の休憩の詳しい予告と人物クリック連動は追加が必要。
- 施設: 営業/休業、価格・方針、清潔、在庫、当日売上・費用、担当変更。
雇用候補20人の比較と雇用Commandに加え、雇用済み一覧から人物、配属先、日勤06:00〜18:00/夜勤18:00〜翌06:00を選ぶ操作を接続した。「配属・勤務帯を変更」はRuntime Commandで確定し、未配属、反映予定、役割・定員・経路の失敗理由、作業中などの変更不可、処理中の重複防止を表示する。勤務帯は継続計画として保存する(D-032)。
この配属では人物の位置を変更せず、配属先への経路存在を事前に検証して論理的に確定する。勤務先へ実通勤し、到着後に施設人員へ加える統合は未完了である。契約、計画の確定、現場到着の3つを同じ意味で表示しない。
商品、探索、投資の準備中案内を完成した経営機能として説明しない。
## 7. 時間進行と06:00決算
- 時間操作は時計の近くへ置き、停止、通常、2倍、4倍を一操作で切り替える。
- 重要な選択肢、経営破綻、監査結果など即時判断が必要な場合だけ自動停止する。
- 06:00に前営業日を締め、夜営業の結果まで含めて決算する。
- 決算は画面全体を長時間塞がず、まず収入、支出、利益、前日差、警告だけを短く表示する。
- 詳細帳簿は任意で開く。閉じると朝営業が動いている中央マップへ戻る。
時間操作は上部の時計の近くへ置き、停止・通常・2倍・4倍を一操作で切り替える。重要な選択肢では右パネルを開き、選択と解決後の停止解除を接続する。
## 8. 視覚ルール
Runtimeでは00:00の暦日更新と、06:00の前営業日締め・朝運用を別の境界として扱う。帳簿は当営業日の現金入出金・うち建築・給与支払と、選んだ確定営業日の売上・運営費・給与・その他費用・利益・前日差・未払・照合・施設別損益を表示する。建築による資金減少を営業赤字と混同しない。06:00の給与現金支払が新営業日の出金、費用が前営業日の決算に属する点を案内する。
- 上位情報は太い木枠または革タブ、詳細情報は明るい羊皮紙パネルに載せる。
- 正常は緑、注意は黄、危険は赤、地下固有情報は紫を基本色とする。
- 小さな数値へ筆文字を使わない。日本語本文と数値は太く読みやすい書体を使う。
- アイコンには可能な限り日本語ラベルまたはツールチップを併記する。
- 成人向け施設は露骨な図像を常設せず、紫の照明、幕、宝石、夜の装飾で区別する。
- 固有作品のボタン、アイコン、キャラクター、画面寸法を複製しない。
- 背景画像、UI配色、背景とGridの合成率は`VisualThemeProfile`から取得し、Simulation、Save、施設Definitionへ画像Pathを保存しない。
- 施設、管理カテゴリ、資源、共通操作のIconも`VisualThemeProfile`から安定IDで取得する。Icon Atlasの画像Pathと切り出し位置はTheme資源だけが保持し、Simulation、Save、施設Definitionへ保存しない。
- Map上の完成施設、建設中施設、配置Preview、および右Inspectorは同じ施設IDのIconを共有する。建設中は暖色半透明、配置可能Previewは緑系半透明、配置不可Previewは赤系半透明とし、占有Cellの状態色と選択枠を隠さない。
- Map上の客は客クラス、従業員は役割群に対応する成人キャラクターMarkerをThemeから取得する。同一Cellでは決定的な位置ずらしで重なりを軽減し、未登録IDやTheme欠落時も従来の図形MarkerへFallbackする。
- 主要Panel、Button状態、選択/警告枠、待機Badge、工事中、経路、層境界の外装は`ui_skin_textures`から意味IDで取得する。伸縮PanelとButtonはNine-patchとして描画し、画像がない場合は既存の色・枠・図形へFallbackする。
- UIの設計基準は1440×810とし、HiDPIと`canvas_items`拡縮で720p、1080p、1440p、4Kへ対応する。横長画面の余白は中央Mapへ配分し、固定領域の最小可読サイズを維持する。Theme TextureはMipmapを生成し、縮小時のちらつきと輪郭崩れを抑える。
- Theme Textureが未設定または読込不能な場合は、操作不能にせず手続き的な背景色とGridへFallbackする。
開業の手引きは受付→客室→接続→配属→初宿泊売上→翌朝決算の6段階を実状態から示す。達成後は売上と決算の履歴を先に評価し、夜間の勤務外や配属変更だけで達成が消えないようにする。Save復元では新しいServiceから読み直す。手引きは状態を書き換えず、ボタンから通常の建築・従業員・時間・帳簿操作へ進める。
## 9. モック基準
通常初期予算での宿泊売上320G、翌06:00の給与120G・未払0・照合一致・専用保存復元を単日確認した。受付売上6,020Gと全利益6,040Gの現結果は調整対象で、価格や宿泊の決済時点を今回のUI追加で改定していない。厨房・補給・実配送を含む3営業日運営、初見試遊、製品バランスは残る。
実装時の構成基準は `assets/mockups/the-tree-main-gameplay-visual-mock-v3-tower-style.png` とする。
帳簿は表示中だけ更新し、日付のPopup操作中は選択肢を再構築しない。画面を閉じれば断面の観察へ戻る。
画像内の文字、数値、施設サイズはレイアウト検証用であり、正式なゲームデータは各仕様書とデータ定義を正とする。
## 8. 視覚と資源管理のルール
- 濃緑、クリーム、木色を基本にし、正常は緑、注意は黄、危険は赤、地下固有情報は紫で示す。状態名や記号を添え、色だけに依存しない。
- 日本語と小さな数値に筆文字を使わず、読みやすい書体を使用する。小アイコンには日本語ラベルまたはツールチップを併記する。
- 成人向け施設は紫の照明、幕、夜の装飾などで区別する。固有作品のボタン、キャラクター、画面寸法を複製しない。
- KenneyのPacked Atlasを `VisualThemeProfile.pixel_dungeon_tiles`/`pixel_town_tiles` から取得する。16pxセルと用途の切り出しは描画ヘルパー側で扱い、画像Path・Atlas座標・カメラ状態をSimulationやSaveへ保存しない。
- KenneyのPixel素材はNearest、Mipmap無効。人物の小ささと床への接地を維持し、整数倍率を優先する。最小表示や大きな世界の一覧では縮小が起こるため、ズームで確認できるようにする。
- 建築カード、管理カテゴリ、資源、操作の小アイコンは既存のTheme安定ID参照を維持する。マップの施設は大きな共通Iconではなく室内として描き、右Inspectorの小Iconとは役割を分ける。
- 現マップは旧生成背景、人物Bust Marker、装飾Skinを使用しない。旧TextureのMipmap方針をPixel素材へ一括適用しない。
- 基準解像度1440×810、HiDPI、`canvas_items`/`expand`/fractional stretchを使用し、横長画面の余白を中央へ配分する。解像度別のレイアウト確認と実描画fpsの検証を分ける。
- Pixel Texture欠落時にも背景・家具・操作系は手続き描画を継続する。ただし現人物描画は素材がなければ省略されるため、「必ず代替人物Markerが出る」とは保証しない。
## 9. 現在の表示基準と確認資料
現在の基準は [PIXEL_TOWER_VISUALS.md](PIXEL_TOWER_VISUALS.md)、`make capture-pixel` の実描画・状態JSONと、`make capture-opening` の通常開業・配属後・決算PNGとする。`scenes/main/world_preview.gd`、`scripts/ui/pixel_tower_art.gd`、`scenes/main/main.gd` が主な表示実装である。
旧V3モック `assets/mockups/the-tree-main-gameplay-visual-mock-v3-tower-style.png` と旧画像制作仕様書は過去の資料として保存する。現在の画面を旧モックの装飾や常設パネルへ戻す基準にはしない。画像内の数値・施設寸法ではなく、正式DefinitionとWorldServiceの占有を正とする。
確認手順は [PLAYTEST_GUIDE.md](PLAYTEST_GUIDE.md)、実装と未接続の区分は [DEVELOPMENT_BACKLOG.md](DEVELOPMENT_BACKLOG.md) を参照する。