mcpField
W
web-sims

web-sims

github.com/whaleyxbtCreative & media713136 installsUpdated 3w ago
Repository

About web-sims

A skill for creating browser-based simulations when many rule-driven objects, 3D scenes, or camera movement fit better than a Remotion composition. It guides creators through planning, building, capturing, and reviewing a simulation with a shared timeline for visual beats and sound.

Key features

  1. 01Guidance for choosing web simulations over Remotion
  2. 02Timeline-based beats and sound cues
  3. 03Examples for crawlers, overlays, and 3D scenes
  4. 04Stateful simulation setup at load
  5. 05Still capture and review workflow
  6. 06Music or generated sound options

Use cases

  1. 01Animating many independent agents or particles
  2. 02Explaining a 3D object with camera movement
  3. 03Building a simulation as a three.js or canvas page
  4. 04Reviewing visual beats before final capture

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/whaleyxbt/claude-motion --skill web-sims

After installing, type/web-simsin Claude Code to confirm it loaded.

Details

From the project README

Web sims

Read sims/README.md first; it has the contract and every command.

When to use this instead of Remotion

  • Hundreds of moving things with their own rules (agents, particles, crawlers).
  • A 3D object or machine the camera moves around or flies through.
  • Anything that is easier to write as a three.js or canvas page than as React.

Motion graphics with type, UI and timed reveals stay in Remotion (src/).

Workflow

  1. Agree on the idea, the hero moment and the length with the user. Default format: 1080×1350 layout (4:5), 60 fps, 20–24 s.
  2. Put every beat in a timeline.json next to the sim (chapters, the hero moment, camera keys). Sound scripts read the same file.
  3. Start from the closest example: crawlers (agents on DOM text), dossier (the same plus screen-space overlays), engine (three.js object with cutaway, chapters, fly-through, exploded view, generated sound).
  4. Simulate anything stateful once at load; render(t) only reads it.
  5. Build: node sims/build.mjs <name>.
  6. Review with stills at every beat: node sims/capture.mjs <name> --stills 0,2,5,8,12,16,20 --cols 4 --out out/sims/<name>-review.png. Open the sheet and check it like the review loop says: frame 0 strong, one focal point per frame, nothing blown out by bloom, text readable on a phone, labels never cover the subject. Fix and repeat.
  7. Sound: a music track (--music, the sim gets cfg.beats and should hit the drop), a generated bed (python3 sims/<name>/sound.py like sims/engine/sound.py), or both mixed with ffmpeg first.
  8. Capture: node sims/capture.mjs <name> --size 1080x1350 --out out/sims/<name>.mp4 and look at a sheet of the final file before calling it done.

Lessons from the examples

  • Bloom eats detail: keep emissive and additive layers under ~1.0 and raise them only for the one hero moment.
  • Glossy metal plus a low sun gives white streaks. Use roughness ≥ 0.45 and envMapIntensity ≈ 0.5 on big surfaces.
  • One hero object beats a crowd. If parts hide the subject, move them out of the way or fade them.
  • Chapters + a one-line caption per step + labels with real numbers make a simulation read as an explanation, not just eye candy.
  • A camera that flies through the object is worth more than ten orbits.

Comments

Markdown supported