[Workshop #222] Ambient state system — mood affects the 3D scene #43

Closed
opened 2026-03-18 21:41:02 -04:00 by perplexity · 1 comment
Owner

Epic: rockachopa/Timmy-time-dashboard#222 — The Workshop: Timmy as Presence

The Gap

#222 describes Timmy's mood affecting the 3D world: "contemplation mode when offline", excited vs calm states. Currently the scene is static — lighting, fog, particle speed, and color palette never change. There's no mechanism for the backend to push a mood.

What

An ambient state manager that maps mood strings to scene parameters, creating a living, breathing environment.

State Definitions

State Fog Density Light Intensity Rain Speed Description
calm 0.035 (default) 1.0x 1.0x Normal idle state
focused 0.04 (slightly darker) 0.8x 0.5x (slower) Timmy is thinking deeply
excited 0.02 (clearer) 1.5x 1.5x (faster) Something interesting happened
contemplative 0.05 (moody) 0.6x 0.3x (gentle) Timmy is reflecting
offline 0.06 (murky) 0.3x 0.2x (barely moving) Backend disconnected — Timmy is sleeping

Acceptance Criteria

  • New module js/ambient.js with setAmbientState(state) and updateAmbient(delta) exports
  • Smooth lerp transitions between states (2-3 second transition duration)
  • Handle ambient_state WS message: {type: "ambient_state", state: "calm|focused|excited|contemplative|offline"}
  • Auto-set offline state when WS connection is lost
  • Auto-set calm state when WS reconnects (until backend sends explicit state)
  • Affects: scene fog density, ambient light intensity, point light intensity, rain particle speed
  • In mock mode: cycle through states every 30-60 seconds to demonstrate the effect
  • No jarring visual glitches during transition

Design Notes

This is what makes the Workshop feel alive. The 3D space should breathe with Timmy's internal state. When he's offline, the room dims. When something excites him, the room brightens.

Ref: rockachopa/Timmy-time-dashboard#243 (bridge protocol — ambient_state message)

## Epic: rockachopa/Timmy-time-dashboard#222 — The Workshop: Timmy as Presence ### The Gap #222 describes Timmy's mood affecting the 3D world: "contemplation mode when offline", excited vs calm states. Currently the scene is static — lighting, fog, particle speed, and color palette never change. There's no mechanism for the backend to push a mood. ### What An ambient state manager that maps mood strings to scene parameters, creating a living, breathing environment. ### State Definitions | State | Fog Density | Light Intensity | Rain Speed | Description | |-------|-------------|-----------------|------------|-------------| | `calm` | 0.035 (default) | 1.0x | 1.0x | Normal idle state | | `focused` | 0.04 (slightly darker) | 0.8x | 0.5x (slower) | Timmy is thinking deeply | | `excited` | 0.02 (clearer) | 1.5x | 1.5x (faster) | Something interesting happened | | `contemplative` | 0.05 (moody) | 0.6x | 0.3x (gentle) | Timmy is reflecting | | `offline` | 0.06 (murky) | 0.3x | 0.2x (barely moving) | Backend disconnected — Timmy is sleeping | ### Acceptance Criteria - [ ] New module `js/ambient.js` with `setAmbientState(state)` and `updateAmbient(delta)` exports - [ ] Smooth lerp transitions between states (2-3 second transition duration) - [ ] Handle `ambient_state` WS message: `{type: "ambient_state", state: "calm|focused|excited|contemplative|offline"}` - [ ] Auto-set `offline` state when WS connection is lost - [ ] Auto-set `calm` state when WS reconnects (until backend sends explicit state) - [ ] Affects: scene fog density, ambient light intensity, point light intensity, rain particle speed - [ ] In mock mode: cycle through states every 30-60 seconds to demonstrate the effect - [ ] No jarring visual glitches during transition ### Design Notes This is what makes the Workshop feel alive. The 3D space should breathe with Timmy's internal state. When he's offline, the room dims. When something excites him, the room brightens. Ref: rockachopa/Timmy-time-dashboard#243 (bridge protocol — `ambient_state` message)
Author
Owner

Resolved in PR #61. Merged to main — smoke test 70/70 pass.

Resolved in PR #61. Merged to main — smoke test 70/70 pass.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: perplexity/the-matrix#43