Merge branch 'main' into client
This commit is contained in:
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"env": {
|
||||
"CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS": "1"
|
||||
},
|
||||
"teammateMode": "in-process"
|
||||
}
|
||||
+2
-3
@@ -27,8 +27,7 @@ Thumbs.db
|
||||
*.swp
|
||||
*.swo
|
||||
|
||||
# Claude Code internals (plans, session transcripts, local settings)
|
||||
# Note: .claude/agents/ and .claude/skills/ ARE tracked
|
||||
# Claude Code internals (plans, session transcripts)
|
||||
# Note: .claude/agents/, .claude/skills/, and .claude/settings.json ARE tracked
|
||||
.claude/plans/
|
||||
.claude/projects/
|
||||
.claude/settings.json
|
||||
|
||||
@@ -5,20 +5,21 @@
|
||||
**Branch:** `server`
|
||||
**Agents:** Dudley (simulation), Oscar (networking)
|
||||
|
||||
## Carry-over from Sprint 1
|
||||
|
||||
| # | Title | Status | Notes |
|
||||
|---|-------|--------|-------|
|
||||
| #236 | Tile collision system | ready | WalkabilityMap exists, needs wall data for LOS |
|
||||
|
||||
## New Tickets
|
||||
## Design Tasks
|
||||
|
||||
| # | Title | Blocked by |
|
||||
|---|-------|------------|
|
||||
| #110 | Shadowcasting algorithm - server | #236 (walls needed for LOS) |
|
||||
| #359 | Resolve Q-018: shadowcasting algorithm selection | — |
|
||||
| #358 | Design ObserverSnapshot v2 schema | — |
|
||||
|
||||
## Implementation Tickets
|
||||
|
||||
| # | Title | Blocked by |
|
||||
|---|-------|------------|
|
||||
| #110 | Shadowcasting algorithm - server | #359 (algorithm decision) |
|
||||
| #111 | Vision cone implementation | #110 |
|
||||
| #112 | Observer visibility query | #111 |
|
||||
| #25 | Game clock and day-phase system | — (SimulationTime exists, needs day-phase integration into snapshot) |
|
||||
| #112 | Observer visibility query | #111, #358 (snapshot schema) |
|
||||
| #25 | Game clock and day-phase system | #358 (snapshot schema) |
|
||||
|
||||
Use `db/connectors/ticket show <id>` for full details.
|
||||
|
||||
@@ -29,14 +30,14 @@ Use `db/connectors/ticket show <id>` for full details.
|
||||
|
||||
## Open Questions to Resolve Early
|
||||
|
||||
- **Q-018: Shadowcasting algorithm selection** — symmetric (Albert Ford) vs recursive. Needs benchmarking at 150x150 scale. Resolve before #110 starts.
|
||||
- **Q-019: Entity ID stability** — how `entity_id: u64` maps to bevy `Entity`. Affects client entity lifecycle.
|
||||
- **Q-021: Tick budget overflow policy** — what happens when a tick exceeds 100ms.
|
||||
- **Q-018 (#359):** Shadowcasting algorithm selection — symmetric (Albert Ford) vs recursive. Needs benchmarking at 150x150 scale. Resolve before #110 starts.
|
||||
- **Q-019 (#360):** Entity ID stability — how `entity_id: u64` maps to bevy `Entity`. Affects client entity lifecycle. (Joint ticket, blocks #130.)
|
||||
- **Q-021:** Tick budget overflow policy — what happens when a tick exceeds 100ms. (Not yet ticketed.)
|
||||
|
||||
## Notes
|
||||
|
||||
- **#236 (carry-over):** `WalkabilityMap` and `validate_movement` are already implemented (`server/src/simulation/movement.rs`). The remaining work is integrating wall/blocked tile data that the shadowcasting algorithm needs. Walls must be both collision barriers AND LOS occluders.
|
||||
- **#110:** Core of the sprint. Implement LOS calculation per z-level. The `WalkabilityMap` stores tile walkability in chunks — the shadowcasting system reads this (or a parallel opacity map) to determine what blocks vision. Output: set of visible tiles for a given observer position.
|
||||
- **#236 (Sprint 1, done):** `WalkabilityMap` and `validate_movement` are implemented (`server/src/simulation/movement.rs`). Walls are both collision barriers AND LOS occluders — the shadowcasting system reads the walkability map (or a parallel opacity map) to determine what blocks vision.
|
||||
- **#110:** Core of the sprint. Implement LOS calculation per z-level. Output: set of visible tiles for a given observer position.
|
||||
- **#111:** Vision cone sectors (forward/peripheral/behind per D-015). Facing direction component needed. Forward = full LOS range, peripheral = reduced range + dimmer, behind = blind. The cone modulates the shadowcast output.
|
||||
- **#112:** Given an observer entity, return visible entities and tiles. This is the system that populates `ObserverSnapshot.entities` with only what the observer can see. Currently the snapshot includes ALL entities (no filtering). This ticket adds the filter.
|
||||
- **#25:** `SimulationTime` already exists (`server/src/simulation/time.rs`) with tick/pause/day-phase. Remaining: include time data in `ObserverSnapshot` so the client can display it. May also need `FacingDirection` component for vision cone.
|
||||
@@ -45,8 +46,9 @@ Use `db/connectors/ticket show <id>` for full details.
|
||||
## Dependency Chain
|
||||
|
||||
```
|
||||
#236 (walls) → #110 (shadowcast) → #111 (vision cone) → #112 (observer query)
|
||||
#25 (time) → standalone, parallel track
|
||||
#359 (Q-018) → #110 (shadowcast) → #111 (vision cone) → #112 (observer query)
|
||||
#358 (snapshot v2) → #112, #113, #25
|
||||
#25 (time) → parallel track, blocked by #358
|
||||
```
|
||||
|
||||
## PR Workflow
|
||||
|
||||
Reference in New Issue
Block a user