Standardized YAML frontmatter on 4 workshop brief files. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
4.5 KiB
title, description, type, status, workshop, created
| title | description | type | status | workshop | created |
|---|---|---|---|---|---|
| Map Authoring Pipeline Workshop Brief | Define how v0.1 hand-crafted tile maps are authored, stored, and loaded by server and client. | workshop | archived | map-authoring-pipeline | 2026-02-11 |
Map Authoring Pipeline Workshop Brief
Goal: Define how v0.1 maps (5-8 hand-crafted buildings per world, 150x150 tiles, 2-3 z-levels) are authored, stored, and loaded by both server and client. Ticket: #355 (epic) Priority: MEDIUM — Sprint 2-3 target Participants: Tyre (architecture lead), Stig (client rendering), Araminta (visual design), Dudley (server loading), Qatux (docs), Si (tickets) Source: Architecture Review Audit 2026-02-11, Tyre R-09
Context
D-014 specifies 3 worlds with ~150x150 tile maps, 2-3 z-levels, and 5-8 hand-crafted buildings per world. The chunk-based WalkabilityMap exists (server/src/simulation/movement.rs) for collision, but there is no:
- Tile type system (floor, wall, door, furniture, etc.)
- Visual tile data (what the client renders)
- Map authoring tool or format
- Map loading pipeline for either server or client
The audit recommends Tiled editor (mature, cross-platform, JSON export) but this needs validation against the project's specific requirements (z-levels, entity spawn points, per-tile metadata like walkability and LOS blocking).
Key Questions to Resolve
Authoring Tool
- Tiled vs Godot TileMap editor vs hand-authored YAML/JSON? (Audit recommends Tiled)
- If Tiled: which export format? (JSON, TMX/XML, CSV?)
- How are buildings authored separately and placed into the world map?
- How are z-levels represented? (Separate layers? Separate files? Tiled group layers?)
Tile Data Model
- What tile types exist? (floor, wall, wall_half, door, window, furniture, decoration?)
- What per-tile metadata is needed? (walkable, blocks_los, blocks_sound, interaction_type?)
- How do tiles map to the WalkabilityMap? (Direct 1:1? Computed from tile properties?)
- How are tile visuals defined? (Sprite atlas indices? Named references? Autotile rules?)
Map Format
- What's the canonical map format the server loads? (Tiled JSON? Custom binary? TOML?)
- Does the client load the same format or a different one? (Server = collision/logic, client = visual)
- How are entity spawn points defined in the map? (NPC start positions, item placements)
- How are social sites (D-025) tagged in the map? (Zone markers, named regions)
Loading Pipeline
- How does the server load maps into the chunk-based system?
- How does the client load maps into TileMapLayer nodes?
- Is hot-reload supported for iteration? (Edit map, reload in running game)
- How are map assets versioned? (Save files reference map version?)
Visual Design
- What is the tile size? (16x16, 32x32, 64x64?)
- How does the v0.1 visual grammar (D-003, v0.1 placeholder art) apply to tiles?
- How do zone-specific color palettes (per Araminta's visual grammar) affect tile rendering?
- How does fog overlay interact with the tile layers? (Audit recommends TileMapLayer for fog)
Input Documents
| Document | What to read | Why |
|---|---|---|
decisions/scope.md |
D-012 (chunks), D-014 (map spec) | Map requirements |
decisions/scope.md |
D-025 (social site templates) | Location definitions |
server/src/simulation/movement.rs |
WalkabilityMap, chunk system | Existing server-side map code |
client/scenes/main.tscn |
Current scene structure | Where tilemap nodes go |
client/scripts/rendering/world_renderer.gd |
World rendering stub | Client rendering entry point |
| Spatial layout tickets (#311-313) | Bar, logistics hub, smuggling spaces | Specific buildings to author |
Expected Outputs
- Decision: D-0XX — Map Authoring Pipeline — Tool choice, format, loading pipeline
- Tile type specification: Enum of tile types with properties (walkable, blocks_los, etc.)
- Map format schema: Documentation of the canonical format both sides load
- Authoring guide: How to create a new building/location using the chosen tool
- Tickets: Implementation tasks (server loader, client loader, tile type system, first test map)
- Proof of concept: One building loaded and rendered in both server and client
Workshop Format
Two rounds:
- Round 1: Each participant analyzes from their domain (Tyre: format/loading, Stig: client rendering, Araminta: visual requirements, Dudley: server integration)
- Round 2: Cross-review, tool evaluation, finalize pipeline