Stratum floor layout check
When to use
- Editing
Assets/Content/Floors/s1_B1F.asset,s1_B2F.asset, ors1_B3F.assetin Floor Editor - User reports reaching
stairsDown/vwithout passing tutorial blocker(10, 13) - Before committing layout changes to committed floor assets
- After layout patch — confirm Floor Editor → Validate and
FloorEditorValidationTestsagree
Floor assets: write tiles with Floor Editor → Apply — not Python sync scripts (removed).
Coordinate system (locked)
| Rule | Value |
|---|---|
| Grid | 21×21 (ExplorationGridMetrics.Mvp1FloorGridCells) |
| Row order in Floor Editor | North-up — top row = y=20, bottom row = y=0 (south) |
| Tile index | x + y * width (matches ExplorationFloorLayout.ToIndex) |
| Impassable | # walls; X tutorial blocker (IsBlockedPassage) until campaign opens cell |
| Campaign cells | S1CampaignResolver, CommittedFloorAssetPaths, StoryEventTriggerCatalog — not duplicated in Python |
Workflow
- Edit layout in Floor Editor (or tweak asset fields directly when appropriate).
- Validate row width — grid must be 21×21 for MVP1 S1 floors.
- Floor Editor → Validate on the painted grid.
- Run Unity Test Runner → Editor → FloorEditor →
FloorEditorValidationTests(user-driven; no CLI batch Unity per project rules).
Built-in regressions (s1_B1F)
FloorEditorValidationTests loads committed B1F/B2F/B3F assets. Domain tests (ExplorationPathGraphTests, GatherInteractorTests, FoeSystemPatrolTests, …) assert gameplay against committed floor assets via Mvp1FloorAssetFixtures / S1CampaignResolver.
C# parity
Edit Mode uses FloorLayoutConnectivity → MapPathfinder on ExplorationFloor tiles. Floor Editor → Validate is floor-agnostic.
Related
- Tools/README.md
- floor-editor.md
- Design ASCII: archive — s1_B1F (draft)