- marathonctl now supports spawn/delete entity commands - Fixed session state bug (was transitioning to Left every 5s) - Fixed entity broadcast to detect Added<NetworkedEntity> - Added AppCommandQueue pattern for app-level control commands References: #131, #132
21 KiB
Agent Simulation Framework - Task Breakdown
Epic: Agent Simulation Framework (#5) Overall Size: XXXL (165 points across 12 phases) Priority: P0 (Critical - core differentiator for Marathon)
This document breaks down the 12 layers of the agent simulation framework into specific, sized tasks for prioritization and scheduling.
Philosophy: Generic composition over special cases. Emergence over authorship. Consequences without failure. Existence is cheap; cognition is expensive.
Approach: Incremental implementation. Each layer should be validated in isolation before adding the next. Start with foundation, add one layer at a time, continuously test performance and emergent behavior.
Phase 1: Foundation (Entity Composition)
Phase Goal: Implement entity composition system with core component categories Phase Size: 16 points Dependencies: Bevy ECS Risk: Low (building on solid ECS foundation)
Tasks
| # | Task | Size | Points | Rationale | Priority |
|---|---|---|---|---|---|
| 1.1 | Define entity component categories and marker traits | S | 2 | Create type hierarchy for components (Lifecycle, PhysicalPresence, Needs, etc.) | P0 |
| 1.2 | Implement Lifecycle state machine for all entity types | M | 4 | States: Unborn → Infant → Child → Adolescent → Adult → Elder → Deceased | P0 |
| 1.3 | Implement PhysicalPresence component with position and movement | M | 4 | Position, velocity, pathfinding integration, spatial indexing | P0 |
| 1.4 | Implement Needs system (biological and psychological drives) | M | 4 | Hunger, thirst, sleep, social, safety needs with decay and satisfaction | P0 |
| 1.5 | Implement Instincts system (species-typical behaviors) | S | 2 | Basic instincts (flee danger, seek food, seek shelter) | P0 |
Phase 1 Total: 16 points
Lean Analysis
- Eliminate Waste: Can we use existing ECS patterns? YES - leverage Bevy's component model
- Amplify Learning: What will we learn? How to compose complex entities from simple components
- Deliver Fast: Can we implement incrementally? YES - add components one at a time
- Build Quality In: Risk of component coupling? YES - enforce clean boundaries between categories
Phase 1 Recommendations
- Start with marker traits - define component categories clearly
- Validate Lifecycle separately - ensure state machine is solid before adding other components
- Test composition patterns - verify entities can have any combination of components
Phase 2: Life Arc System
Phase Goal: Implement life arc state machines and autonomy gradient Phase Size: 12 points Dependencies: Phase 1 complete Risk: Medium (complex state transitions, schedule authority handoff)
Tasks
| # | Task | Size | Points | Rationale | Priority |
|---|---|---|---|---|---|
| 2.1 | Implement life arc state machines (Child → Adult → Elder) | L | 8 | Major state transitions with capability changes and schedule authority shifts | P0 |
| 2.2 | Implement autonomy gradient (None → Partial → Full) | S | 2 | Track who controls entity schedule (parent, self, institution) | P0 |
| 2.3 | Implement life arc transition triggers | S | 2 | Age-based, event-based, and condition-based transitions | P1 |
Phase 2 Total: 12 points
Lean Analysis
- Eliminate Waste: Can we hardcode ages? NO - emergent transitions are key to feeling alive
- Amplify Learning: What will we learn? How autonomy affects entity behavior
- Deliver Fast: Can we implement incrementally? YES - start with simple age transitions
- Build Quality In: Risk of broken transitions? YES - comprehensive state transition testing
Phase 2 Recommendations
- Start with simple age-based transitions - Child(0-12) → Adolescent(13-17) → Adult(18+)
- Test authority handoff carefully - ensure schedule control transfers correctly
- Validate edge cases - what happens when parent dies while child is dependent?
Phase 3: Schedule System
Phase Goal: Implement daily schedule generation from roles and personality Phase Size: 14 points Dependencies: Phase 2 complete Risk: Medium (schedule conflicts, authority model complexity)
Tasks
| # | Task | Size | Points | Rationale | Priority |
|---|---|---|---|---|---|
| 3.1 | Implement daily schedule generation from roles | M | 4 | Generate time blocks (work, sleep, leisure) based on role and personality | P0 |
| 3.2 | Implement schedule authority model (autonomous, external, partial) | M | 4 | Track who can modify entity schedule (self, parent, employer) | P0 |
| 3.3 | Implement shared commitments between related entities | M | 4 | Couples, families, work teams share schedule blocks | P1 |
| 3.4 | Implement schedule regeneration on condition changes | S | 2 | Rebuild schedule when sick, pregnant, grieving, etc. | P1 |
Phase 3 Total: 14 points
Lean Analysis
- Eliminate Waste: Can we use fixed schedules? NO - dynamic schedules enable emergent behavior
- Amplify Learning: What will we learn? How schedule conflicts get resolved
- Deliver Fast: Can we implement incrementally? YES - basic schedules first, then shared commitments
- Build Quality In: Risk of schedule conflicts? YES - need clear resolution rules
Phase 3 Recommendations
- Start with single-entity schedules - validate basic time blocking works
- Add authority later - ensure autonomous schedules work before external control
- Test regeneration - verify schedules adapt to condition changes
Phase 4: Behavior Tree System
Phase Goal: Implement behavior tree framework and need-driven prioritization Phase Size: 16 points Dependencies: Phase 3 complete Risk: High (performance critical, complex evaluation logic)
Tasks
| # | Task | Size | Points | Rationale | Priority |
|---|---|---|---|---|---|
| 4.1 | Implement behavior tree framework and evaluation engine | L | 8 | Tree structure, node types (sequence, selector, action), tick evaluation | P0 |
| 4.2 | Implement activity-specific behavior trees | M | 4 | Work, Leisure, Social, Maintenance activities with contextual behaviors | P0 |
| 4.3 | Implement need-driven behavior prioritization | M | 4 | Urgent needs interrupt schedule, utility-based selection | P0 |
Phase 4 Total: 16 points
Lean Analysis
- Eliminate Waste: Can we use FSM instead? NO - behavior trees compose better
- Amplify Learning: What will we learn? How needs affect behavior selection
- Deliver Fast: Can we implement incrementally? YES - simple trees first, add complexity
- Build Quality In: Risk of infinite loops? YES - add evaluation limits and cycle detection
Phase 4 Recommendations
- Start with simple trees - single activity type, no interruption
- Profile evaluation performance - this is frame-rate critical for nearby entities
- Test need interruption - verify urgent hunger can interrupt work
Phase 5: World Substrate
Phase Goal: Implement substrate layer types and environmental effects Phase Size: 14 points Dependencies: Phase 1 complete (can parallelize with Phases 2-4) Risk: Medium (spatial queries performance, substance simulation)
Tasks
| # | Task | Size | Points | Rationale | Priority |
|---|---|---|---|---|---|
| 5.1 | Implement substrate layer types (substances, temperature, light, sound, air quality, contagion) | L | 8 | Spatial grids or continuous fields for environmental state | P1 |
| 5.2 | Implement trigger volume system for spatial events | S | 2 | Zones that affect entities (fire, poison gas, music) | P1 |
| 5.3 | Implement generic substance transfer and consumption | M | 4 | Entities consume/produce substances, transfer between locations | P2 |
Phase 5 Total: 14 points
Lean Analysis
- Eliminate Waste: Can we skip substrate entirely? NO - enables fire, disease, pollution
- Amplify Learning: What will we learn? How spatial state affects entity behavior
- Deliver Fast: Can we implement incrementally? YES - start with simple trigger volumes
- Build Quality In: Risk of performance issues? YES - spatial queries must be efficient
Phase 5 Recommendations
- Start with trigger volumes - simpler than continuous fields
- Use spatial indexing - KD-tree or grid for efficient queries
- Test with 500 entities - verify performance scales
Phase 6: Institutions
Phase Goal: Implement institution entity type with coordination blackboard Phase Size: 16 points Dependencies: Phase 3 complete Risk: High (cross-entity coordination, emergent organizational behavior)
Tasks
| # | Task | Size | Points | Rationale | Priority |
|---|---|---|---|---|---|
| 6.1 | Implement Institution entity type with Governance, Resources, Reputation | M | 4 | Special entity type that manages members and shared state | P0 |
| 6.2 | Implement shared blackboard state for coordination | L | 8 | Shared memory for work assignments, inventory, schedules | P0 |
| 6.3 | Implement worker schedule template generation | M | 4 | Institutions create schedule templates for roles (baker, guard, teacher) | P1 |
Phase 6 Total: 16 points
Lean Analysis
- Eliminate Waste: Can we hardcode workplace behavior? NO - emergent coordination is key
- Amplify Learning: What will we learn? How entities coordinate without communication
- Deliver Fast: Can we implement incrementally? YES - simple bakery first, then generalize
- Build Quality In: Risk of coordination deadlocks? YES - need clear state machine
Phase 6 Recommendations
- Start with single institution - bakery with 1 baker, 1 apprentice
- Validate blackboard pattern - ensure shared state enables coordination
- Test with multiple institutions - verify they don't interfere
Phase 7: Relationships
Phase Goal: Implement relationship state and coordination levels Phase Size: 14 points Dependencies: Phase 3 complete Risk: Medium (relationship evolution, coordination complexity)
Tasks
| # | Task | Size | Points | Rationale | Priority |
|---|---|---|---|---|---|
| 7.1 | Implement Relationship state and evolution | M | 4 | Bond strength, interaction history, sentiment tracking | P1 |
| 7.2 | Implement bond types (Romantic, Familial, Friendship, Professional, Caretaking) | M | 4 | Different bond types enable different interactions | P1 |
| 7.3 | Implement coordination levels (None → AdHoc → Recurring → Cohabiting → Dependent) | M | 4 | Stronger bonds enable tighter schedule coordination | P1 |
| 7.4 | Implement relationship effects on all simulation layers | S | 2 | Relationships affect needs, schedules, behaviors, conditions | P2 |
Phase 7 Total: 14 points
Lean Analysis
- Eliminate Waste: Can we skip relationships? NO - core to "living village" feel
- Amplify Learning: What will we learn? How bonds enable coordination
- Deliver Fast: Can we implement incrementally? YES - family bonds first, then friends
- Build Quality In: Risk of relationship graph bugs? YES - need clear formation/dissolution rules
Phase 7 Recommendations
- Start with familial bonds - parent-child relationships are simplest
- Test coordination levels - verify cohabiting couples share schedules
- Validate evolution - bonds should strengthen/weaken from interactions
Phase 8: Conditions
Phase Goal: Implement condition system with effects on all layers Phase Size: 12 points Dependencies: Phases 1-4 complete Risk: Medium (condition interactions, contagion simulation)
Tasks
| # | Task | Size | Points | Rationale | Priority |
|---|---|---|---|---|---|
| 8.1 | Implement Condition system with severity and duration | M | 4 | Temporary states (sick, pregnant, grieving, drunk) | P1 |
| 8.2 | Implement condition effects (need modifiers, capability modifiers, schedule overrides, behavior modifiers) | M | 4 | Conditions affect all simulation layers | P1 |
| 8.3 | Implement contagion system for spreading conditions | M | 4 | Diseases spread through proximity and substrate | P2 |
Phase 8 Total: 12 points
Lean Analysis
- Eliminate Waste: Can we hardcode illness? NO - generic conditions enable emergent drama
- Amplify Learning: What will we learn? How conditions cascade through simulation
- Deliver Fast: Can we implement incrementally? YES - simple illness first, then contagion
- Build Quality In: Risk of runaway epidemics? YES - need disease progression model
Phase 8 Recommendations
- Start with non-contagious conditions - pregnancy, grief, intoxication
- Add simple illness - validate need modifiers and schedule overrides work
- Test contagion carefully - ensure diseases don't wipe out entire village
Phase 9: Tools & Capabilities
Phase Goal: Implement capability types and tool operator modes Phase Size: 12 points Dependencies: Phase 1 complete Risk: Medium (capability composition, tool quality effects)
Tasks
| # | Task | Size | Points | Rationale | Priority |
|---|---|---|---|---|---|
| 9.1 | Implement capability types (Movement, Communication, Transformation, Force, Storage) | M | 4 | Abstract capabilities that entities and tools provide | P1 |
| 9.2 | Implement tool operator modes (Inhabit, Wield, Station, Wear) | M | 4 | Different ways entities use tools (house, hammer, oven, clothes) | P1 |
| 9.3 | Implement tools as institutional resources | S | 2 | Bakery owns ovens, blacksmith owns anvils | P2 |
| 9.4 | Implement tool quality affecting output | S | 2 | Better tools produce better results | P2 |
Phase 9 Total: 12 points
Lean Analysis
- Eliminate Waste: Can we skip tools? NO - needed for production workflows
- Amplify Learning: What will we learn? How capabilities compose
- Deliver Fast: Can we implement incrementally? YES - simple wielded tools first
- Build Quality In: Risk of capability conflicts? YES - need clear capability stacking rules
Phase 9 Recommendations
- Start with wielded tools - hammer, axe, hoe
- Add stations - ovens, forges, looms require entity presence
- Test quality modifiers - verify master blacksmith + good anvil = quality sword
Phase 10: Production Workflows
Phase Goal: Implement batch entity system for multi-step processes Phase Size: 14 points Dependencies: Phase 9 complete Risk: High (workflow state persistence, interruption handling)
Tasks
| # | Task | Size | Points | Rationale | Priority |
|---|---|---|---|---|---|
| 10.1 | Implement batch entity system for multi-step processes | L | 8 | Bread batch progresses: mix → knead → proof → bake → cool | P1 |
| 10.2 | Implement recipe and phase system | M | 4 | Recipes define inputs, phases, outputs, time/skill requirements | P1 |
| 10.3 | Implement interruptible work with state persistence | S | 2 | Baker can pause kneading to serve customer, resume later | P2 |
Phase 10 Total: 14 points
Lean Analysis
- Eliminate Waste: Can we use instant crafting? NO - multi-step processes enable depth
- Amplify Learning: What will we learn? How to persist complex workflow state
- Deliver Fast: Can we implement incrementally? YES - simple 1-phase recipes first
- Build Quality In: Risk of lost state on interruption? YES - need save/restore
Phase 10 Recommendations
- Start with simple recipes - bread (mix → bake), no interruption
- Add multi-phase - validate state transitions work
- Test interruption - ensure baker can resume kneading after break
Phase 11: Performance Architecture
Phase Goal: Implement simulation tier system and discrete event simulation Phase Size: 15 points Dependencies: Phase 4 complete Risk: Critical (performance determines feasibility of 500 entities)
Tasks
| # | Task | Size | Points | Rationale | Priority |
|---|---|---|---|---|---|
| 11.1 | Implement simulation tier system (Attached, Nearby, Background, Wildlife) | L | 8 | Different update strategies for different proximity levels | P0 |
| 11.2 | Implement tier promotion/demotion based on player proximity | M | 4 | Seamless transitions as players move through world | P0 |
| 11.3 | Implement discrete event simulation and wake queue | S | 3 | Background entities only update when something changes | P1 |
Phase 11 Total: 15 points
Lean Analysis
- Eliminate Waste: Can we update all entities every frame? NO - exceeds iPad budget
- Amplify Learning: What will we learn? How to scale simulation efficiently
- Deliver Fast: Can we implement incrementally? YES - simple tier system first
- Build Quality In: Risk of visible tier transitions? YES - need smooth fade
Phase 11 Recommendations
- Profile early and often - this determines if 500 entities is feasible
- Start with 2 tiers - nearby (full), background (interpolated)
- Add wake queue - discrete events are key to efficient background simulation
- Test on iPad - don't optimize for desktop and hope it works
Phase 12: Networking & Sync
Phase Goal: Implement CRDT-based synchronization and entity ownership Phase Size: 16 points Dependencies: All previous phases complete Risk: Critical (desyncs break multiplayer experience)
Tasks
| # | Task | Size | Points | Rationale | Priority |
|---|---|---|---|---|---|
| 12.1 | Implement CRDT-based state synchronization for slow-changing layers | L | 8 | Life arcs, schedules, relationships use CRDTs for eventual consistency | P0 |
| 12.2 | Implement behavior tree outcome synchronization | M | 4 | Fast-changing behavior trees sync outcomes, not state | P0 |
| 12.3 | Implement entity ownership model | S | 2 | Entities owned by nearest player, ownership transfers on proximity | P0 |
| 12.4 | Implement spatial ownership for substrate | S | 2 | World divided into chunks, each owned by one peer | P1 |
Phase 12 Total: 16 points
Lean Analysis
- Eliminate Waste: Can we use lockstep sync? NO - too slow for 500 entities
- Amplify Learning: What will we learn? How to sync without desyncs
- Deliver Fast: Can we implement incrementally? YES - basic ownership first
- Build Quality In: Risk of desyncs? YES - extensive multiplayer testing required
Phase 12 Recommendations
- Start with entity ownership - simplest sync model
- Add CRDT sync for schedules - slow-changing state is easier
- Test with 2 peers first - validate before scaling to 4
- Add reconciliation - handle ownership conflicts gracefully
- Stress test with 500 entities - verify no desyncs in 1-hour sessions
Overall WSJF Analysis
Using Cost of Delay / Duration to prioritize phases:
| Phase | Size | Business Value | Time Criticality | Risk Reduction | CoD | WSJF |
|---|---|---|---|---|---|---|
| Phase 1 | 16 | 8/10 | 9/10 | 9/10 | 26 | 1.63 |
| Phase 2 | 12 | 7/10 | 8/10 | 8/10 | 23 | 1.92 |
| Phase 3 | 14 | 8/10 | 8/10 | 7/10 | 23 | 1.64 |
| Phase 4 | 16 | 9/10 | 9/10 | 9/10 | 27 | 1.69 |
| Phase 11 | 15 | 10/10 | 10/10 | 10/10 | 30 | 2.00 |
| Phase 12 | 16 | 10/10 | 10/10 | 10/10 | 30 | 1.88 |
Recommendation: Implement in order 1 → 2 → 3 → 4 → 11 (critical path for viability), then parallelize remaining layers.
Success Metrics
Performance Targets
- 500 entities simulated simultaneously
- 60 FPS on iPad Pro with full simulation load
- Background entities consume <5% of frame budget
- Tier transitions are visually seamless
Multiplayer Targets
- 2-4 peers supported
- <100ms sync latency for state propagation
- Zero desyncs in 1-hour multiplayer sessions
- Ownership transitions are seamless
Emergence Targets
- Entities follow believable daily routines without hand-authoring
- Relationships form and evolve through interaction
- Institutions coordinate workers without explicit communication
- Unexpected behaviors emerge from generic rule interactions
Implementation Notes
- Incremental Development: Each phase should be fully validated before moving to the next
- Performance First: Profile on iPad hardware from Phase 1 onwards
- Test Emergent Behavior: Create test scenarios that exercise rule interactions
- Document Invariants: Clear rules for how systems interact prevents bugs
- Content Light: Focus on generic rules that recombine, not hand-authored content
- Multiplayer Always: Test sync from Phase 1, don't bolt on later
Total Breakdown
- Total Points: 165
- Total Phases: 12
- Critical Path: Phases 1, 2, 3, 4, 11, 12 (89 points)
- Parallel Work: Phases 5-10 can be done alongside or after critical path (76 points)