Files
BreakEscape/planning_notes/new_room_layout/TERMINOLOGY.md

166 lines
5.2 KiB
Markdown
Raw Normal View History

docs: Add comprehensive room layout system redesign plan Created detailed implementation plan for redesigning the room layout system to support variable room sizes and four-direction connections. Core Concepts: - Grid unit system (5×4 tiles base, excluding 2-tile visual top) - Valid room heights: 6, 10, 14, 18, 22, 26... (formula: 2 + 4N) - Breadth-first room positioning from starting room - Deterministic door placement with alignment for asymmetric connections - Comprehensive scenario validation Documents Created: - OVERVIEW.md: High-level goals and changes - TERMINOLOGY.md: Definitions and concepts - GRID_SYSTEM.md: Grid unit system specification - POSITIONING_ALGORITHM.md: Room positioning logic - DOOR_PLACEMENT.md: Door placement rules and algorithms - WALL_SYSTEM.md: Wall collision system updates - VALIDATION.md: Scenario validation system - IMPLEMENTATION_STEPS.md: Step-by-step implementation guide - TODO_LIST.md: Detailed task checklist - README.md: Quick start and overview Review & Critical Fixes: - review1/CRITICAL_REVIEW.md: Identified 4 critical issues - review1/RECOMMENDATIONS.md: Solutions for all issues - UPDATED_FILES_SUMMARY.md: Integration of review feedback Critical Issues Identified & Resolved: 1. Grid height calculation (now: 6, 10, 14, 18...) 2. Door alignment for asymmetric connections (solution documented) 3. Code duplication (shared module approach specified) 4. Disconnected rooms (validation added) Implementation Strategy: - Incremental approach with feature flag - Phase 1: Constants and helpers - Phase 2a: North/South positioning - Phase 2b: East/West support - Phase 3: Door placement with critical fixes - Phase 4: Validation - Phase 5-6: Testing and documentation Estimated time: 18-26 hours Confidence: 9/10 (all critical issues addressed) Ready for implementation.
2025-11-15 23:58:19 +00:00
# Terminology Guide
## Tile vs Grid Unit
### Tile (32px)
- **Definition**: The smallest visual unit in Tiled
- **Size**: 32px × 32px
- **Usage**: Building block for all room graphics
- **Example**: A door is 1 tile wide × 2 tiles tall
### Grid Unit (5×4 tiles = 160×128px)
- **Definition**: The minimum stackable room size unit
- **Size**: 5 tiles wide × 4 tiles tall (excluding top 2 visual rows)
- **Usage**: Room sizes are specified as multiples of grid units
- **Example**: A standard room is 2×2 grid units (10×8 tiles)
**Why 5×4?**
- 5 tiles wide: 1 for each side wall + 3 floor tiles minimum
- 4 tiles tall: Excludes the 2 top visual wall tiles, counts stackable area only
## Room Dimensions
### Total Size
- **Definition**: Complete room including all walls and visual elements
- **Measurement**: Includes top 2 visual wall rows
- **Example**: Standard room is 10 tiles wide × 8 tiles tall total
### Stacking Size
- **Definition**: The area that cannot overlap with other rooms
- **Measurement**: Excludes top 2 visual wall rows
- **Example**: Standard room has 10×6 tiles stacking size (but we think in grid units: 2×1.5)
- **Note**: For positioning, we use grid units (2×2) since we always align to grid boundaries
### Floor Area
- **Definition**: Interior walkable space (excluding walls)
- **Measurement**: Total size minus all walls
- **Example**: Standard room (10×8 tiles) has ~6×4 floor area
## Directions
### Connection Directions
- **North**: Rooms above current room
- **South**: Rooms below current room
- **East**: Rooms to the right of current room
- **West**: Rooms to the left of current room
### Visual Direction
- **Top of Screen**: North (furthest from player viewpoint)
- **Bottom of Screen**: South (closest to player viewpoint)
## Positioning
### World Coordinates
- **Definition**: Absolute pixel positions in the game world
- **Origin**: (0, 0) typically at the starting room's top-left
- **Usage**: Final position where room sprites are rendered
### Grid Coordinates
- **Definition**: Position in grid units from origin
- **Origin**: Starting room at grid position (0, 0)
- **Usage**: Used for deterministic door placement calculations
- **Conversion**: `worldX = gridX × 160`, `worldY = gridY × 128`
### Room Position
- **Definition**: The top-left corner of a room's stacking area in world coordinates
- **Usage**: Where Phaser renders the room tilemap
- **Note**: This is the position used in `window.roomPositions[roomId]`
## Connections
### Single Connection
```json
"connections": {
"north": "office2"
}
```
- One room connected in the specified direction
### Multiple Connections
```json
"connections": {
"north": ["office2", "office3"]
}
```
- Array of rooms connected in the same direction
- Rooms are positioned left-to-right (west-to-east)
### Bidirectional Connections
```json
// In room1:
"connections": { "north": "room2" }
// In room2:
"connections": { "south": "room1" }
```
- Connections must be reciprocal for doors to work correctly
## Doors
### Door Position
- **North/South Doors**: Placed in corners of the room
- **East/West Doors**: Placed at edges based on connection count
- **Alignment**: Doors from two connecting rooms must align perfectly
### Door Sprite
- **North/South**: 1 tile wide × 2 tiles tall (`door_32.png`)
- **East/West**: 1 tile wide × 1 tile tall (`door_side_sheet_32.png`)
- **Layered**: Two door sprites (one for each room) stack at same position
### Door State
- **Closed**: Collision enabled, blocks passage
- **Open**: Sprite destroyed, collision removed, passage clear
- **Locked**: Requires unlock minigame before opening
## Walls
### Visual Wall
- **Definition**: The top 2 rows of tiles showing wall from orthogonal view
- **Behavior**: Overlaps the room to the north visually
- **Collision**: No collision (purely visual)
### Collision Wall
- **Definition**: Invisible collision boxes at room boundaries
- **Placement**: At the border between wall tiles and floor tiles
- **Exception**: No collision at door positions
### Wall Tiles
- **Side Walls**: Leftmost and rightmost columns of tiles
- **Top Wall**: Top 2 rows of tiles
- **Bottom Wall**: Bottom row of tiles (treated specially)
## Validation
### Overlap Detection
- **Definition**: Checking if two rooms' stacking areas occupy the same grid units
- **Timing**: Performed during scenario load
- **Action**: Log clear error but attempt to continue
### Grid Alignment
- **Definition**: Ensuring all rooms are positioned at grid unit boundaries
- **Requirement**: Room positions must be multiples of grid unit size (160×128px)
- **Purpose**: Ensures consistent layout and door alignment
## Special Cases
### Hallway
- **Definition**: A connector room explicitly defined in scenario
- **Typical Size**: 2×1 or 4×1 grid units (long and narrow)
- **Purpose**: Connects multiple rooms without gaps
- **Example**:
```
[Room1][Room2]
[--Hallway--]
[--Room0---]
```
### Closet
- **Definition**: Smallest room size (1×1 grid unit)
- **Size**: 5 tiles wide × 4 tiles tall
- **Usage**: Small storage rooms, utility spaces
### Corner Alignment
- **Definition**: When a room's corner touches another room's corner
- **Current Behavior**: Creates a gap (undesired)
- **New Behavior**: Rooms stack flush against each other