Files
TheTree_mock/docs/qa/P2_STAIRS_AND_COMPARISON.md
T

8.6 KiB
Raw Blame History

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には含めない。