Add explicit stairs and measure elevator congestion with real actors

This commit is contained in:
Takeshi
2026-09-09 14:26:38 +09:00
parent e246ce382b
commit fb4ad23190
57 changed files with 3030 additions and 162 deletions
+13
View File
@@ -273,3 +273,16 @@
- 素材: 既存のKenney人物を車内でも使い、レール・扉・かごは既存のコード描画によるドット表現へ追加する。外部画像の新規導入はない。
- 撤去の保存修正: 施設撤去の成功時は対応する完成済み工事を現役の工事一覧と進捗時刻表から取り除く。これまで完成工事だけが残り「完成施設がない」と保存検証で拒否されていた。IDの最大値、台帳、DomainEventの履歴は維持し、工事IDを再利用しない。延伸後の部分撤去・全撤去と、失敗時の巻き戻しを検証する。
## D-036 明示階段と車内密度、旧通路の一回限りの移行
- 状態: 採用(2026-09-09。承認済みMOVE-01・02・06の続き)。D-035の「昇降路以外は上下徒歩を維持」を新ゲームについて更新する。
- 新ゲーム: Pathの全階間WALKを禁止し、階段CONNECTORまたは物理昇降機を通る。左右の同階通路、staffドア、昇降路の所有者付き遮断は維持する。独立Path部品は旧呼出し互換のため既定false、Runtimeは必ずtrue。
- 階段: 客用40G・通行容量3、業務用50G・容量2、双方資材0・建設10分・維持魔力0。1×1の上部踊り場を置き、同じx/layerの一つ下の通行可能セルへ双方向接続する。業務用はstaff権限を要求する。下部足場は先に完成させ、依存する階段があれば撤去を拒否する。
- 移動: 新階段は1階cost150・通常速度で1.5ゲーム分。1分tickの移動creditを繰越し、2階を3分で移動する。途中の1000~1499creditは階段端点でのみ保存できる。閉塞で端点に留まっていても保存でき、撤去で使えなくなった端数は切り詰める。経路評価のcostと実移動を接続するが、「3階以内を優先」の距離別選好は今回追加しない。
- 保存: Runtime v9/Path v5。Runtime v8以下の正当な旧Path3/4等を読み、既存の垂直WALK辺のみを `legacy.stairs:<layer>:<x>:<lower_y>` CONNECTORへ一度だけ実体化する。旧通路のcost100・空accessを維持し、古いBACKの権限も変更しない。新しい階段施設へ無償で置換する方式ではなく、既設接続を独立所有する。Pathと所有記録を厳密照合する。
- 撤去: 旧接続は端点消失・昇降路への変更で除去し、その位置へ後から普通の通路を作っても再生成しない。Construction・Operations・Rankの巻戻しにはPathと旧階段所有者を同時に含める。階間の復旧誘導も実際の接続があるセルだけを候補にする。
- 車内: BOARDEDの実Actorを床の混雑人数から除外する。待機者は床に数える。位置の所有アンカーは降車まで乗車元へ残し、車内所有・描画・密度はその状態から導く。旧v4保存では旧方式の全Actor密度が正しいことを先に検証し、その後に乗客を除く。新v5の保存はtransit集合と密度の双方を厳密照合する。
- 表示・測定: 乗車確定時にELEVATOR_BOARDEDを記録する。選択詳細の平均・P95は保持中の直近256出来事から過去60分の乗車を抽出したサンプルであり、全履歴の集計とは表示しない。現在の最長待ちは実待機者から算出する。比較試験は別の完全traceで48人全員を記録し、UIの保持上限に依存しない。
- 比較の範囲: 同Seed・需要traceで客用昇降機1台と2台を比較。自然来客AI、離脱改善、3階以上の混雑比較やS14の総合合格とは区別する。追加設備代・資材・維持魔力、および動的再経路選択による実歩数増も結果に含める。
+6 -6
View File
@@ -44,16 +44,16 @@ P0の保存物はGit管理対象の制作ファイル。`.godot/`、`build/`、`
## P2:上下移動と混雑
完成条件: 3階以上で実乗降し、同じ人数・需要のまま設備と動線の改善で待ち時間・離脱が減ること。**現在は運行未統合。**
完成条件: 3階以上で実乗降し、同じ人数・需要のまま設備と動線の改善で待ち時間・離脱が減ること。**基本運行・明示階段・実通勤を統合済み。同需要48人の設備比較を追加。自然来客の離脱比較は継続。**
| ID | 実装済みの根拠 | 未接続・仕様差・検証残と次の確認 |
|---|---|---|
| MOVE-01 | **部分統合**。Path v4の所有者付き縦徒歩抑制を昇降路の全マスへ投影。旧Path3保存は移行 | 昇降路以外の上下通路は階段相当を維持。全階間の徒歩禁止と明示的階段への移行が残る。D-035 |
| MOVE-02 | **基本運行接続済み**。同じ昇降路を1台で運行、客用4人/業務用8人、扉・実移動時間・FIFO同目的地のまとめ乗り | 途中階の相乗り、複数かご運行は未実装。車内人数は論理上乗車元の密度に残る |
| MOVE-01 | **統合済み**。新ゲームは全階間の通常徒歩を禁止し、客用/業務用階段を通常建設。旧上下通路を一度だけ階段接続へ移行 | 1階150cost・1.5分の端数移動、下部足場の撤去防止、旧接続の撤去後無再生成。3階以内優先の特別経路規則は未導入。D-036 |
| MOVE-02 | **基本運行接続済み**。同じ昇降路を1台で運行、客用4人/業務用8人、扉・実移動時間・FIFO同目的地のまとめ乗り | 途中階の相乗り、同一昇降路の複数かご運行は未実装。車内人数は床密度から除外し、待機者だけ乗場の混雑に数える |
| MOVE-03 | **建設・UI接続済み**。連結モジュール、停止階、空車時延伸・撤去、BACK権限、魔力供給、停止/再開 | 通常初期予算から4停止階の建設を受入。工事中の新規乗車は完了まで保留 |
| MOVE-04 | **運行描画接続済み**。実かご、扉、Kenney乗客、待機表示。乗車中は徒歩側の重複表示を除外 | 施設ごとの専用アニメーション、混雑時の人物配置は改善を継続 |
| MOVE-05 | **基本異常系・保存検証済み**。満員、停止、延伸拒否、安全な降車、停留所閉塞、所有不整合、途中Saveの厳密再生 | 長期の大量需要、対照試遊、明示階段移行時の閉じ込め対策は継続 |
| MOVE-06 | 既存の混雑密度/容量表示、[MVP受入](MVP_ACCEPTANCE_SCENARIOS.md)の比較条件 | **未検証**。同一Seed・需要・人数・施設数で改善前後を比較し、画面と移動時間P95・離脱で記録する |
| MOVE-05 | **基本異常系・保存検証済み**。満員、停止、延伸拒否、安全な降車、停留所閉塞、所有不整合、途中Saveの厳密再生 | 階段途中の保存、旧v8保存移行、待機/乗車中の再生を確認。全AIの長期大量需要と帰宅は継続 |
| MOVE-06 | **限定条件の比較済み**。同Seed・48人・480分・同一最短歩行距離で客用昇降機1台→2台。実Actorの総移動P95は224→73分、両方48人到着 | 固定需要の実移動比較であり自然来客AIではない。未完了0→0で離脱改善は未検証。途中階・夕方混雑・BACK物流等のS14条件は継続。[比較QA](qa/P2_STAIRS_AND_COMPARISON.md) |
| MOVE-07 | **実通勤接続済み**。同じ階の職場へ到着してから稼働。混雑端数、再配属、夜勤、運搬員出勤、Saveと旧論理配属の移行 | 帰宅経路と出退勤演出、移動設備改善による遅刻削減の対照試遊は未実施 |
## P3:営みと初見の操作
@@ -111,4 +111,4 @@ P0の保存物はGit管理対象の制作ファイル。`.godot/`、`build/`、`
営業設定追加後の通常供給3営業日も49項目合格。受付売上0G、食堂3,000G・宿泊1,200G、給与未払0、残金2,895G。初日の契約金を除く2・3日目は各+715G。実装 `b3b82ef`。
P2の基本昇降機・実通勤の証跡は [P2_TRANSPORT.md](qa/P2_TRANSPORT.md)。MOVE-01の全階間移行とMOVE-06の同需要比較を完了するまでP2全体を合格とはしない。
P2の基本昇降機・実通勤の証跡は [P2_TRANSPORT.md](qa/P2_TRANSPORT.md)、階段・車内密度・48人比較は [P2_STAIRS_AND_COMPARISON.md](qa/P2_STAIRS_AND_COMPARISON.md)。自然来客の離脱とS14条件を含む対照試遊が残るためP2全体を合格とはしない。
+12
View File
@@ -193,3 +193,15 @@ version 2では、ID形式、Access範囲、Upgrade件数、営業時間キー
| 拡張16施設 | 1 | 通常パレット未解放、順次移行 |
次の移行順は、一般客室・食堂・酒場・浴場、倉庫・警備、通路・昇降機、地下拡張施設とする。売上施設を先に移行すると、客AI・価格・在庫の縦断検証を早い段階で固定できる。
## 明示階段(D-036、2026-09-09)
基礎16施設と任意拡張16施設の定義順は保持し、追加インフラ2種を `data/facilities/infrastructure/` と `FacilityCatalog.INFRASTRUCTURE_FACILITY_PATHS` に分ける。通常Runtimeの登録数と建築パレットは基礎16+階段2の18種。既存Registryの既定ディレクトリ単独走査は基礎16のまま。
| ID | 表示 | サイズ | 設置層 | 建設G/資材/分 | 通行容量 | cost/維持魔力 |
|---|---|---:|---|---|---:|---|
| guest_stairs | 客用階段 | 1×1 | FRONT | 40/0/10 | 3 | 150/0 |
| service_stairs | 業務用階段 | 1×1 | BACK | 50/0/10 | 2 | 150/0 |
置くセルが上部踊り場で、同じx/layerのy-1へ接続する。下部足場が必要。業務用はstaff権限。旧保存の既設階段は施設定義へ置換せず、旧速度・権限を持つ別の接続所有記録として保存する。
+14 -3
View File
@@ -141,7 +141,7 @@
- 上部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が未統合のため、現在は建設を拒否する。
- MVP施設16種と階段2種を選べる下部の横スクロール建築パレット、回転、配置Preview、失敗理由、建設Commandを接続。客用/業務用昇降機と明示階段は通常建設・実移動へ統合済み。
- 掘削モードでは費用、入口接続、支保、Rank/運営gate、進捗を表示し、FRONT/BACK同時解放Commandへ接続する。
- 雇用候補20人の氏名、役割、勤務帯、契約金、日給、4技能を表示。原子的な雇用、未払/破綻gate、二重クリック防止、予約実行結果、保存したCommand履歴との整合を扱う。その後のP1追加で、雇用済み人物の配属・再配属、DAY/NIGHTの継続勤務計画、未配属、反映予定と変更不可理由を通常UIへ接続した。配属先までの経路を検証するが、実通勤して到着してから稼働する経路は未統合。
- 本番運営の明示起動、個人AP、未払給与、前日損益、要確認/破綻、失敗境界の再試行表示、foreground Eventの日本語Choice、下部の手動Save/Loadを接続する。P1追加で6段階の「開業の手引き」と、営業日選択、現金入出金、建築出金、確定損益、給与・未払、施設別損益、照合を示す帳簿を接続した。建築出金と営業利益を分け、内部のcost_of_goodsは雇用契約金等を含むため「運営費」と表示する。
@@ -189,7 +189,7 @@
- 全Actor AI、全Event、監査、経路移動を含む20,160分の実TickによるS14-CORE受入
- ユニーク2人の配置・接触判定と、そこから生成する14日Event列
- 通常隣接Edgeを安全に抑制する垂直Topologyと、客用/業務用昇降機
- 昇降機の途中階相乗り、同一昇降路の複数かご、自然来客・多階層混雑の改善比較
- 配置と同一Shiftから関係Event候補を生成する接触判定と事前リスクPreview
- 夕方混雑、FRONT/BACK比較、健全/地下収支を直接比較するScenario Test
- 100客・30従業員の実描画Frame試験
@@ -221,4 +221,15 @@
- 断面に実際のかごとKenney人物を表示する。完成した昇降機を選ぶと現在階・目的階・人数・待機・魔力と運行操作が出る。
- 継続配属は歩いて職場へ到着してから稼働する。運搬も同じ階のアクセス点で受渡しし、上下階越しの到着や受取を防ぐ。
- Path v4/Runtime v8。旧保存移行、乗車途中の復元、変更拒否の原子性を検証する。
- 残課題は全階間の徒歩規則、途中階相乗り、車内を分離した混雑密度、同じ需要での改善比較。P2全体の完成とは扱わない。詳細と実測は [昇降機QA](qa/P2_TRANSPORT.md)。
- この保存点の詳細と実測は [昇降機QA](qa/P2_TRANSPORT.md)。全階間徒歩規則・車内密度・固定需要比較は次項のv9で追加した。P2全体の完成とは扱わない。
## P2 階段・車内密度と同需要比較(2026-09-09)
- 客用/業務用階段を通常建設・Kenneyアイコン・断面・選択詳細へ接続。新ゲームは階段か昇降機で階を移動し、上に普通の通路を置くだけでは移動できない。
- Runtime v9/Path v5。旧上下通路を一度だけ既設階段として保持する。階段途中の端数、旧乗車中の密度移行、撤去と巻戻しを保存へ接続する。
- 車内の人物を床密度から除外。昇降機詳細には最近の乗車記録の平均・P95待ちと現在の最長待ちを表示する。
- 同じ48人を480分流す実GuestRuntime比較では1台→2台で平均待ち105.60→23.58分、総移動P95 224→73分、両方48人到着。追加建設1500G・資材15・維持魔力5。2台側では動的な経路再選択で5人に迂回が発生し、その時間も含めた。
- 通常開業・供給の上階動線も明示階段に更新。自然来客の離脱、途中階相乗り、帰宅、S14の多条件比較は継続する。設定根拠はD-036、検証は [階段と比較QA](qa/P2_STAIRS_AND_COMPARISON.md)。
階段追加後の通常3営業日も49項目合格。食堂3000G・宿泊1200G、原材料配送30便・料理72便、残金2855G、3日とも未払0・照合済み。旧版の残金2895Gと比較すると新しい階段2セルの追加費用40Gを反映している。初日ガイドは実Pathで到達を判定し、描画・営業・保存再開41項目も成功。
+15 -3
View File
@@ -16,6 +16,9 @@
| 仕入れ・厨房・配送をすぐ試遊 | `make preview-supply` | 初期予算から通常建設・実購入した宿を12:20まで進め、停止して開く。Spaceで再開。保存なし |
| 有料仕入れ・厨房・配送の検証 | `make test-supply` | 通常予算から供給を接続し、配送途中保存と3営業日の運営を検証 |
| 稼働中の商品パネルを撮影 | `make capture-supply` | 通常建設・実購入で用意した初日の仕入れ/厨房/配送をPNG出力 |
| 昇降機の乗降を試遊 | `make preview-transport` | 通常予算から4停止階を建設。自然に来た客の乗車場面で停止。保存なし |
| 階段・車内密度・旧保存の検証 | `make test-stairs` | 上下移動の規則、階段途中保存、互換移行、UIを検証 |
| 同需要の昇降機比較 | `make test-transport-comparison` | 同じ48人・480分で1台と2台を比較、全員traceを保存 |
| 通常開業の画面を出力 | `make capture-opening` | 同じ単日受入を描画し、開始・配属後・決算のPNGを生成 |
見学は実施設7件と通路、従業員4人をRuntimeコマンドで組み立て、食堂へ食材32個を用意した再現場面です。保存・読込・自動保存は無効で、通常の初期状態には反映しません。準備中は少し待ってから操作します。PNGの生成には描画可能なデスクトップ環境が必要です。
@@ -56,7 +59,7 @@
4. `G`で格子と混雑を表示し、施設をクリックして右側の営業状態・待機・人員と照合します。
5. `Tab`でBACKの厨房を確認します。中ボタンドラッグとズームを試した後、`Home`で全体表示へ戻します。
この見学は収支・補充・配送の完成を保証する試験ではありません。昇降機の乗降は未実装で、見学の上下移動は既存の通路接続を使っています。
この見学は収支・補充・配送の完成を保証する試験ではありません。昇降機の実乗降を見る場合は `make preview-transport` を使います。
## 通常UIで最初の宿を開業する
@@ -65,8 +68,8 @@
次は単日受入と同じ小さな宿です。座標は `(x, y)`、すべてFRONTです。画面では `y=0` が地表の1F、`y=2` が3F、`y=3` が4Fに当たります。`G`で格子を出し、空きセルを選ぶと右パネルで座標を確認できます。配置するたびに停止し、完工を待つと進めやすくなります。
1. `B`で「受付」を選び、`(-8, 0)`へ配置します。受付は4×2セルを占有します。`Space`で再開して120ゲーム分進め、完成したら再び停止します。
2. 「一般客室」を `(-8, 2)` と `(-6, 2)` に1室ずつ配置します。完成した受付のすぐ上、左右に並ぶ2室です。同時に「客用通路」を `(-4, 1)` へ配置し、60ゲーム分進めます。
3. 「客用通路」を `(-4, 2)` へ配置し、10ゲーム分進めます。続いて客室の上側をつなぐように `(-8, 3)`、`(-7, 3)`、`(-6, 3)`、`(-5, 3)`、`(-4, 3)` へ置き、さらに10ゲーム分進めます。通路は合計7セルです。
2. 「一般客室」を `(-8, 2)` と `(-6, 2)` に1室ずつ配置します。完成した受付のすぐ上、左右に並ぶ2室です。同時に「客用階段」を `(-4, 1)` へ配置し、60ゲーム分進めます。
3. 「客用階段」を `(-4, 2)` へ配置し、10ゲーム分進めます。続いて「客用階段」を `(-4, 3)` に、「客用通路」を `(-8, 3)`、`(-7, 3)`、`(-6, 3)`、`(-5, 3)` に置き、さらに10ゲーム分進めます。階段は3セル、横の通路は4セルです。
4. `Esc`で建築を解除します。左の「従業員」から「候補を見る」または `H` で雇用候補を開き、受付係のアカネを雇用します。契約金と日給を確認してください。
5. 「雇用済み」を開いてアカネを選び、配属先を建てた受付、勤務帯を「日勤 06:00〜18:00」にして「配属・勤務帯を変更」を押します。成功表示を確認し、時間進行中の予約Commandなら次の処理まで待ちます。勤務帯は翌日以降も繰り返す計画として保存されます。
6. `Space`で再開し、必要なら `1`または`4`で速度を選んで、自然に到着した客の宿泊を観察します。現在の宿泊サービスは完了時に売上を記帳するため、到着直後に宿泊売上が出るとは限りません。客が来ない・利用されない場合は施設を選び、接続と人員の理由を確認します。
@@ -150,3 +153,12 @@ Windows書き出しコマンドの存在はWindows実機合格を意味しませ
`make preview-transport` で、通常初期資源から建設した4停止階の宿を開く。検証と保存再開の確認後に一時停止して表示する。Spaceで再開し、客が扉の前で待ち、かごで上階へ移る様子を見る。完成した昇降機をクリックすると、現在階・人数・待機列と停止/再開の操作が出る。保存先は試験専用、通常の自動保存は無効。
新規ゲームでは、客用昇降機を同じx座標で上へ積み重ねると停止階を延ばせる。運行・待機中の延伸と撤去は拒否するため、空になってから着工する。工事中の新規乗車は完成まで待機する。通常の配属後は、従業員が同じ階の職場まで歩いてから施設が稼働する。
## 階段と昇降機を使う
上下階の移動には階段または昇降機を使います。階段は上の階へ置く1セルの施設です。同じxの一つ下のセルに通路・地表などの足場を先に用意します。客用は40G、業務用は50G、建設10分・資材と維持魔力は不要です。通常速度では1階を1.5ゲーム分で昇り降りし、業務用は従業員だけが使えます。
完成した昇降機をクリックすると、かごの現在階、人数、待機人数、運行の停止/再開が表示されます。最近の乗車記録の平均待ちと95%の待ち時間、現在の最長待ちも確認できます。平均・95%は保持中の乗車サンプルなので、詳しい集計範囲は表示のツールチップを確認してください。
以前のセーブの上下通路は、読み込むと「既設の階段」として同じ移動時間・利用権限で使えます。小さな階段マークをクリックして接続階を確認できます。その足場を撤去した後に新しい普通の通路を置いても階段は戻らないため、必要なら階段施設を建設します。
+2
View File
@@ -107,3 +107,5 @@ make preview-pixel
営業設定版は `the-tree-business-management-2026-09-09.bundle` と同名 `.bundle.sha256` を使用する。`git bundle list-heads` の `HEAD` がこの保存点のコミット。復元後は `make check test-business`、試遊は `make preview-business`。画像・検証ログは `artifacts/business-management/` に別保管し、bundleへは含めない。
昇降機・実通勤版の実装コミットは `0f12c74`。`the-tree-transport-2026-09-09.bundle` と同名 `.bundle.sha256` を使用し、`git bundle list-heads` の `HEAD` で資料更新を含む最終保存点を確認する。復元後は `make check test-transport test-ui`、試遊は `make preview-transport`。Runtime v8/Path v4。検証結果は [P2昇降機QA](qa/P2_TRANSPORT.md)、画像とログは `artifacts/transport/` に保存し、bundleには含めない。
階段・車内密度・同需要比較版は `the-tree-stairs-2026-09-09.bundle` と同名 `.bundle.sha256` を使用する。保管先は同じ `/Users/korizatou114/Projects/the-tree-backups/`。`git bundle list-heads` の `HEAD` で最終保存点を確認する。Runtime v9/Path v5、基礎施設16+明示階段2。旧v8の上下通路と乗車中の密度を移行する。復元後は `make check test-transport`、数値比較は `make test-transport-comparison`、試遊は `make preview-transport` または `make preview-pixel`。検証記録は [P2階段と比較QA](qa/P2_STAIRS_AND_COMPARISON.md)。以前のbundleは上書きせず残す。
+9
View File
@@ -104,3 +104,12 @@ System単体の合格と、ゲームとしてのMVP合格を混同しないた
- ヒロイン/ライバルの配置変更前に、接触・Shield・EventリスクPreviewが変化することを確認する。
- 100客、30従業員を表示した状態で基準PCの実Frame rateを測定する。
- 初見Playtestで地上/地下とFRONT/BACKの違いを30分以内に説明できるか観察する。
## P2 明示階段と車内混雑(Runtime v9/Path v5)
- `make test-stairs`: 全階間Path policy、transit密度、階段投影と下部足場、一回限りの旧通路移行、実移動端数と保存、占有中の撤去拒否、階段と待ち統計のUI。
- `make test-transport`: 上記に加え、既存の実かご・実通勤・工事勤務境界・自然4停止階の乗降、旧乗車中保存の密度移行を検証。
- `make test-transport-comparison`: 同Seed/同需要48人/480分で1台と2台を比較。Path+かご版と実GuestRuntime版を区別し、P95・全員の完了・実歩数・途中再生・設備費を記録。
- `make test-opening`/`make test-supply`: 上階動線を明示階段へ更新した通常初期予算の営業。Guideは実Path到達を使う。
- 条件・数値・限界は [P2階段と比較QA](qa/P2_STAIRS_AND_COMPARISON.md)。固定需要比較を自然来客の離脱改善やS14全条件の合格としない。
+84
View File
@@ -0,0 +1,84 @@
# P2 明示階段・車内密度・同需要比較
2026-09-09、ローカル正本、Godot 4.7.2。D-036に対応する追加実装。P2全体・自然来客の離脱改善・S14総合受入の完了ではない。
## 実装範囲
- 新しい宿は階段か昇降機で階間を移動する。客用/業務用階段を通常予算、建築パレット、Kenney Tiny Dungeonの階段アイコン、断面、接続階の詳細へ接続。
- 1階150cost・1.5ゲーム分。2階分を3分で移動し、階段途中の1000creditを保存・再生できる。
- 下部足場を先に完成させる。上部階段や建設中の階段が使う足場、人物が立っている階段・通路の撤去は事前拒否する。後段でもActor/Path所有の整合を検証する。
- 旧Runtime v8/Path v4等は正当な旧構造を検証後、一度だけ上下通路を既設階段へ移行。従来の速度と権限を維持し、足場を撤去した後には自動再生成しない。
- BOARDEDの実Actorを床の混雑密度から除外。QUEUEDは乗場へ数える。旧保存は旧方式の密度が正しいことを検証してから移行する。
- 昇降機詳細の平均・P95待ちは保持中の直近256出来事から過去60分の乗車を抽出したサンプル。全期間の集計とは表示しない。現在の最長待ちは実待機者全員から算出。
- 開業ガイドは実際の入口から客室の左右の入口へ到達できるかをGuest AIと同じPathで確認する。施設の既定accessフラグだけで案内を先へ飛ばさない。上階への道が足りなければ客用階段を案内する。
## 48人の設備比較
`make test-transport-comparison` で二種類の検証を実行する。評価対象は同じ固定需要であり、自然来客の料金・目的選択AIによる需要ではない。
両者の共通条件:
- Seed `806042`、48人、480ゲーム分(実Runtimeは絶対時刻670~1150)。同じ到着時刻列と目的地。
- 需要SHA-256 `5bafa62275370c2a6ce5b4d4f283c3d7679c679a2b3fc6b054b681f2647456cf`。
- 共通出発 `(2,0,FRONT)` → 共通到着 `(2,1,FRONT)`。最短の徒歩は両側とも乗場まで2歩+降車後2歩。
- 1台の客用昇降機を、同じ仕様の客用昇降機2台へ増やす。別々の昇降路であり、同じ昇降路の複数かごではない。
- 実Runtime版は通常初期予算5000G・資材50から通常建設する。既存2×2客用モジュールと上階通路2セルを使う。1台側1540G・資材15・維持魔力需要5、2台側3040G・資材30・維持魔力需要10。
- 到着を観測後、通常begin_leaving/despawn_guestで退出させ、完了者を後続の渋滞に残さない。
- P95は観測済み全員のnearest-rank。未到着を黙って集計から落とさず、未完了人数を別記し、両側の全員完了を改善判定の条件にする。
### 実GuestRuntime・実混雑による結果
| 指標(ゲーム分) | 1台 | 2台 |
|---|---:|---:|
| 平均の乗車待ち | 105.60 | 23.58 |
| 乗車待ちP95 | 197 | 48 |
| 出発~最終目的地の総移動P95 | 224 | 73 |
| 完了/需要 | 48/48 | 48/48 |
| 未完了 | 0 | 0 |
| 実歩数の平均 | 4.00 | 4.25 |
| 実歩数の最大 | 4 | 8 |
| 迂回した人数 | 0 | 5 |
| かご別利用人数 | 48 | 23/25 |
総移動P95は67.4%短縮した。2台側では5人が動的な混雑評価で乗場を選び直し、4人が6歩、1人が8歩を歩いた。その時間も上表へ含む。経路を固定して迂回を隠す処理や特別な階間遮断をRuntimeへ挿入していない。
`test_runtime_transport_comparison.gd` は **51項目合格**。同一構成の全区間再生に加え、QUEUED/BOARDINGの各checkpointから12分間の全Runtime Snapshotと全観測traceが完全一致する。記録は `artifacts/transport/runtime-comparison.json` と `runtime-comparison-{1,2}-trace.json`。
### Path+かごの部品比較
`test_transport_comparison.gd` は **30項目合格**。同じ需要で、到着時に選んだ経路を保持する部品検証。乗場到着時に初めて乗車要求を出す。全員4歩で、待ち平均105.60→28.44分、待ちP95 197→49分、総移動P95 224→75分、両方48人完了、2台利用26/22人。実Runtimeの毎分再経路選択を含む上表とは分けて扱う。部品版の結果は `artifacts/transport/path-comparison.json`。
## 保存・異常系・操作の検証
| テスト | 合格項目 | 内容 |
|---|---:|---|
| Path vertical policy | 34 | 全階間WALK禁止、Connector・権限・旧版・経路復旧 |
| Path transit density | 46 | 車内除外、待機密度、降車/取消/退出、旧版の密度検証 |
| Stair infrastructure | 106 | 定義、階段接続、下部足場、原子的な投影・撤去 |
| Legacy stairs | 85 | 一回移行、旧権限、再生成禁止、所有不整合、部分失敗・隔離 |
| Runtime stairs | 65 | 通常建設、実1.5分、途中保存、旧v8、占有中の撤去拒否 |
| Transport density migration | 36 | 4人乗車+1人待機の真のv8保存移行、全5人の保持、各到着1回、Event rollback |
`make test-stairs`、`make test-transport`で再現する。UIの階段・旧接続・待ち統計、既存PaletteとPixelの検証も含む。画像は `artifacts/transport/stairs-inspector.png`、`elevator-inspector.png`、`pixel-stairs-demo.png`。新ガイドの画像は `artifacts/first-operating-day/stairs-guidance.png`。
## 残る確認
- 固定需要の1階分比較では自然来客の離脱や満足低下を評価していない。未完了0→0を離脱改善と読み替えない。
- 4停止階の自然乗降は別の既存受入があるが、多階層の同需要混雑比較やS14の夕方/BACK物流条件とは別。
- 途中階の相乗り、同一昇降路の複数かご、帰宅経路、3階以内で階段を優先する特別規則は未実装。
- 2台側で乗場を選び直して戻る動きが5人に出た。短期的な経路安定化は後続の改善候補。
- 旧階段は互換のため1階100costを保持する。新設階段の150costと速度が異なる。
## 最終回帰と通常営業
- `make check test-transport` が成功終了。Editor読込、通常起動、階段・かご・実通勤・保存・撤去境界・自然来客の4停止階乗降にSCRIPT ERRORなし。追加した待ち統計の実イベント検証も36項目成功。
- 既存S0・S1・S2・S3・S4・S5・MVP・acceptanceとUI・営業の各対象が成功。S3は714項目、上下迂回の旧テストは通常建設の階段を使う91項目へ更新した。旧版固定データは新設フィールドを除いて正当な旧形状を作る。
- `make test-stairs test-supply test-s6` が成功。最新の追加撤去・閉塞・旧版偽装検証は別途 `runtime-stairs.log` の65項目、Legacyは最終85項目、旧供給保存は最後の独立再実行で20項目。途中の古いテスト件数と混同しない。
- **通常初期予算・明示階段で3営業日49項目合格**。食堂売上3000G、宿泊1200G、受付収入0、原材料配送30便・料理配送72便、残金2855G。3日すべて未払0・決算balanced=true。途中配送の専用ディスク保存と再生、最後の全Snapshot復元も成功。
- 3日間のデータは `artifacts/supply-chain/normal-play-report.json`。前のv8時点の `artifacts/transport/normal-supply-3days.json` は履歴として残し、この結果の根拠にはしない。
- 開業ガイドの実経路修正後は初日描画・営業・保存復元が41項目成功(通常37+画像4)。宿泊240G、現金3540G、未払0、決算一致。施設のaccess_available全体を地形から毎分再設定する変更は行わず、Guideと実Guestの到達判定を揃えた。
- Pixel238、Main121、従業員46、商品37、営業55、昇降機20、新階段UI25を確認。階段付き見学、ガイド保留、実乗客の車内表示と床との重複除外を実描画でも確認。
- 性能のDigest71項目とDomain smoke24項目が成功。これは実UIのfps、全Actorの14日20,160tick、Windows実機性能の証明ではない。
- 最新試遊は `artifacts/transport/stairs-final-preview.log` の35項目と `TRANSPORT_PREVIEW_READY` を確認。4停止階の自然な最初の乗車へ戻して停止し、Spaceで再開できる。試遊の通常保存は無効。
主なログは `artifacts/transport/stairs-final-transport.log`、`stairs-density-migration.log`、`runtime-stairs.log`、`stair-supply-save-regression.log`、`stairs-regression-*.log`。検証ログ・PNG・JSONはローカル `artifacts/` に残し、ソース用Git bundleには含めない。
+4 -1
View File
@@ -38,10 +38,13 @@
集約ログは `artifacts/transport/`、3営業日の数値は `normal-supply-3days.json`。初回に古い期待値で失敗した回帰ログも残してあるが、該当スクリプトの修正後の成功ログを確認している。新しい運行・描画に由来するエラーを合格扱いにしていない。
## 残る課題
## この保存点からの残る課題
- MOVE-01は昇降路内の上下徒歩抑制まで。既存の上下通路は階段相当で残る。全階間の規則と明示的な階段施設への移行が必要。
- 配車は先着順、同じ発着階のまとめ乗り。途中階の相乗り・複数かごは未実装。
- 車内の論理位置とPath密度は乗車元に残る。描画は車内へ移るが、混雑密度を車内と分離する改善が必要。
- 同じSeed・需要・人数を用いた設備改善前後のP95移動時間・離脱比較(MOVE-06)は未実施。
- 帰宅経路・専用ドット動作・音・初見試遊、宿泊の精算方式と全AIを含む長期描画性能は後続。
後続のRuntime v9/Path v5で全階間徒歩の規則、明示階段、車内密度の分離、48人の設備比較を追加した。更新後の条件・実測・残課題は [階段と比較QA](P2_STAIRS_AND_COMPARISON.md) を参照する。上記v8の数値は当時の保存点の記録として保持する。