# Animating human history as one swarm of 147,456 tiles

> Source: <https://dev.to/cynxio/animating-human-history-as-one-swarm-of-147456-tiles-4i70>
> Published: 2026-10-08 07:38:20+00:00

Carry Me is a music video about human history, narrated by fire. It begins with a lightning-struck tree and ends with a machine that no longer needs the hands that built it.

The animation was written in TypeScript with Claude Opus 5.5 in Claude Code, with direction and repeated edit notes from Derwin Oesmanto at Cynxio. The song was generated with Suno. AI-generated painted pictures supply the source imagery, but the motion is rendered in code with three.js; no video generator was used.

The film uses a 384 by 384 swarm: 147,456 tiles. A picture is represented by target positions, colours and sizes for those tiles. When the story moves to another age, the same body of tiles takes on the next formation.

This gave the film a common visual material while allowing the drawings to change. The cave is painted like a cave wall. The river kingdoms use Egyptian wall painting, followed by Greek vase figures, manuscript, engraving, poster and screen imagery.

The source picture is only a starting point. Parts that need their own movement are separated into groups: a hand, a tool, a flame or a figure can move independently while the rest of the scene holds together. Moving the whole picture was not enough to make its subjects feel alive.

Fire is both the narrator and the recurring point of attention. Its position matters as much as the next picture's composition. A transition can contain plenty of motion and still lose the viewer if that point disappears into a field of particles.

The revision process repeatedly came back to this problem. We worked on keeping the fire connected to the thing carrying it, giving it a visible route between pictures, and letting neighbouring ages share a travelling wall. Some transitions let tiles gather visibly; others send them out as sparks between distant scenes.

One small bug illustrates the difference between moving geometry and directing an image. A rotating part used the wall's origin instead of its own pivot. The object swung away from its glow. Correcting the pivot restored the connection without changing the scene's design.

The film has word-timed lyrics. Its scenes, camera and overlays are evaluated from song time, which makes it possible to return to an exact moment for inspection and rendering.

That repeatability is useful when an edit changes a transition by only a few frames. We used stills, contact sheets and full drafts to examine framing, lyric overlap, contact between objects and motion through scene boundaries. A good-looking still could still become a static stretch or an unreadable transition when played.

The approved draft was reviewed at 480p30. The final export uses 1080p60 with four temporal samples per frame for motion blur. Final rendering does not invent new movement: it samples the same approved animation more finely.

Claude Opus 5.5 handled animation code, engine work and motion design in the current film. The human direction supplied the story, lyrics concept and edit notes. Suno generated the song; a separate image model generated the painted source pictures.

Those distinctions are part of the credits because they describe different jobs. This was a process of making and reviewing many concrete drafts, with changes to composition, transitions and timing along the way.

The engine is forked from pdoom-video by Giacomo Magnanini under the MIT licence. Geographic data comes from Natural Earth, in the public domain. The typefaces use the SIL Open Font License. The film contains AI-generated music and imagery; the song was made using the owner's Suno Pro account.

Cynxio builds real software with AI agents and shows the work end to end.
