Problem
The OfficeScene generates TransitionPlan objects with ordered animation instructions (walk, state_change, fade_in, fade_out, artifact_appear, artifact_deliver) — but discards them and teleports all entities to their new positions. The office is static. This issue makes it alive.
Context
The transition planner already produces everything needed:
- Waypoint sequences with corridor routing through doorways
- 150ms stagger between simultaneous transitions
- Transition types matching the facility architecture's state machines
Solution
1. Transition playback engine
Wire OfficeScene to consume TransitionPlan instead of calling applyFullState(). Process transitions respecting their delayMs stagger. Dispatch each transition type to a handler. Centralize all animation timing, speed, opacity, and scale constants in a single constants module for easy tuning.
2. Walk animation
Animate walk transitions along waypoint sequences using Excalibur action queues. Target speed: 3-4 tiles/second. Update character sprite facing direction to match movement direction between waypoints. Use idle sprites with directional slide (walk cycle sprite sheets are a future cosmetic upgrade that won't require code changes).
3. Orchestrator heartbeat
The orchestrator's errand pattern (desk → doorway → destination → pause → doorway → desk) is state-driven: the orchestrator walks only when the transition planner produces a walk transition from phase changes. No autonomous idle patrol loop.
4. State change animations
state_change: Brief visual cue at current position (opacity pulse)
fade_in / fade_out: Opacity transitions for agent appearances/departures
artifact_appear: Pop-in with scale bounce at agent position
artifact_deliver: Slide to delivery surface with settle
Overlapping updates
When a new status arrives while animations are playing, interrupt: cancel in-progress animations, snap entities to final positions, then start the new transition batch.
Out of scope (follow-up ticket)
- Thought bubbles (HTML overlays with cycling messages)
- Time indicators (colored pips showing phase elapsed time)
- HUD toggle (ambient/standard/detailed display density modes)
Acceptance criteria
Depends on
Guided by
.agents/skills/office-game-feel/SKILL.md
Problem
The
OfficeScenegeneratesTransitionPlanobjects with ordered animation instructions (walk, state_change, fade_in, fade_out, artifact_appear, artifact_deliver) — but discards them and teleports all entities to their new positions. The office is static. This issue makes it alive.Context
.agents/skills/office-game-feel/SKILL.md— movement timing, state machines, attention guidance, Excalibur patternspackages/factory/docs/visions/facility-architecture.md— orchestrator heartbeat, agent states, artifact lifecycleThe transition planner already produces everything needed:
Solution
1. Transition playback engine
Wire
OfficeSceneto consumeTransitionPlaninstead of callingapplyFullState(). Process transitions respecting theirdelayMsstagger. Dispatch each transition type to a handler. Centralize all animation timing, speed, opacity, and scale constants in a single constants module for easy tuning.2. Walk animation
Animate
walktransitions along waypoint sequences using Excalibur action queues. Target speed: 3-4 tiles/second. Update character sprite facing direction to match movement direction between waypoints. Use idle sprites with directional slide (walk cycle sprite sheets are a future cosmetic upgrade that won't require code changes).3. Orchestrator heartbeat
The orchestrator's errand pattern (desk → doorway → destination → pause → doorway → desk) is state-driven: the orchestrator walks only when the transition planner produces a walk transition from phase changes. No autonomous idle patrol loop.
4. State change animations
state_change: Brief visual cue at current position (opacity pulse)fade_in/fade_out: Opacity transitions for agent appearances/departuresartifact_appear: Pop-in with scale bounce at agent positionartifact_deliver: Slide to delivery surface with settleOverlapping updates
When a new status arrives while animations are playing, interrupt: cancel in-progress animations, snap entities to final positions, then start the new transition batch.
Out of scope (follow-up ticket)
Acceptance criteria
Depends on
Guided by
.agents/skills/office-game-feel/SKILL.md