Frame from The First Spark, a black-ink short film
PromptFull
PROJECT: THE FIRST SPARK — Procedural Animated Short Film

You are a senior creative coder, generative artist, animation director, and JavaScript graphics engineer.

Your task is to create a visually stunning, fully animated short film using procedural JavaScript drawing.

I have attached a reference image showing a minimalist black-ink animation on an off-white background.

Use the reference to understand the visual language, but create an original animation with its own story, composition, and movement.

Do not create a slideshow, static illustration, or simple particle demo. Build a genuine animated short film with evolving scenes, expressive character animation, cinematic transitions, and continuous visual storytelling.

1. Technical requirements

Build the project using:

JavaScript
HTML5 Canvas 2D
requestAnimationFrame for real-time playback
Procedural geometry and vector-based drawing
Bezier curves, paths, particles, and custom brush strokes
Deterministic animation based on a master timeline

All visual elements must be generated through JavaScript code.

Do not use:

AI image-generation APIs
AI video-generation APIs
External images or pre-rendered video
Stock footage
CSS-only animation
Static illustrations disguised as animation

The animation must be genuinely generated by code.

You may use lightweight JavaScript libraries if they meaningfully improve the animation, but prioritize Canvas 2D.

2. Visual direction

Create a hand-drawn, minimalist, experimental animation.

Visual characteristics:

Warm off-white paper background
Deep black ink illustrations
Slightly imperfect hand-drawn outlines
Organic brush strokes
Variable line thickness
Ink splashes and subtle paper grain
Expressive silhouette-based character design
Fluid, organic movement
Occasional dramatic camera movements
Cinematic composition

The visual result should feel like a professional independent animated short film.

Avoid generic geometric motion graphics, repetitive particle effects, and simple bouncing shapes.

Every scene should have a clear visual purpose.

3. Story: THE FIRST SPARK

Create an original 60-second animated short film.

The story follows a tiny character that emerges from a drop of black ink and gradually discovers how to create a world.

SCENE 1 — THE BEGINNING (0–8 seconds)

An empty off-white canvas.

A tiny black ink droplet appears in the center.

The droplet begins trembling.

Small irregular brush strokes emerge from it.

The ink slowly transforms into a tiny living character.

The character opens its eyes and looks around.

The camera gradually moves closer.

SCENE 2 — DISCOVERY (8–18 seconds)

The character begins walking across the empty world.

Its movement must feel alive, with animated limbs, body deformation, and subtle secondary motion.

Every step leaves behind small ink marks.

The character notices one of these marks and touches it.

The mark begins growing into an organic structure.

SCENE 3 — CREATION (18–32 seconds)

The character discovers that its movements can create new objects.

It draws a line through the air.

The line becomes a tree.

More brush strokes emerge and transform into hills, plants, and abstract structures.

The camera follows the character as the world expands.

Objects must visibly grow and transform through procedural drawing rather than suddenly appearing.

SCENE 4 — CHAOS (32–44 seconds)

The character loses control of its creation.

Black ink spreads rapidly.

The landscape becomes distorted.

Trees twist into abstract shapes.

Ink splashes fill the screen.

The camera shakes subtly as the character runs.

The animation becomes faster and more intense.

Use fluid transitions between all visual elements.

SCENE 5 — THE FIRST SPARK (44–55 seconds)

The character stops running.

Everything becomes still.

A small glowing point appears in its hand.

This is the only moment where a subtle warm accent color may be used.

The character releases the light.

The light expands into a circular wave.

The chaotic ink reorganizes into a beautiful, balanced landscape.

The camera pulls back to reveal the completed world.

SCENE 6 — ENDING (55–60 seconds)

The character stands on a small hill and looks toward the horizon.

The camera slowly moves backward.

The entire landscape gradually transforms into a single small ink drawing on the original empty canvas.

Fade to off-white.

End.

4. Animation quality requirements

This is the most important part of the project.

Every scene must contain actual animation.

The character must have:

Procedurally animated walking and running
Expressive body language
Head and body rotation
Squash and stretch
Anticipation and follow-through
Smooth transitions between poses

Environmental elements must have:

Organic growth animations
Continuous subtle movement
Non-repetitive procedural variation
Smooth transformations between shapes

Implement a virtual camera with:

Position
Zoom
Rotation
Smooth tracking
Cinematic easing

Use layered depth and camera movement to create visual richness.

Do not rely on random movement alone.

The animation should be deliberately choreographed around the story.

5. Timeline and rendering architecture

Create a centralized animation timeline.

Every visual state must be determined by the current timeline position.

Implement a function similar to:

renderFrame(time)

The function must render the correct animation frame for any requested timestamp.

Use seeded randomness so that rendering the same timestamp always produces the same image.

Do not make the animation dependent on the number of previous frames rendered.

This is essential for deterministic video export.

Target specifications:

Resolution: 1920 × 1080

Aspect ratio: 16:9

Frame rate: 30 FPS

Duration: 60 seconds

Provide an option to switch to 1080 × 1920 vertical format for social media.

6. Preview and controls

Create a local web interface that allows me to:

Play and pause the animation
Restart the animation
Scrub through the timeline
Jump between scenes
Adjust playback speed
Switch between horizontal and vertical formats
Preview the animation in real time

Display the current timestamp and scene name.

7. Video export

Implement a reliable video export workflow.

The final animation must be exportable as a high-quality MP4 file.

Use deterministic frame-by-frame rendering to avoid dropped frames or inconsistent timing.

You may use a suitable browser rendering pipeline, a frame-sequence exporter, or FFmpeg.

Do not assume that recording the browser window in real time is sufficient for production-quality export.

Provide a simple export command or interface.

8. Development process

Do not attempt to create the entire film as one enormous, untested code block.

Work in stages.

First:

Create the project architecture.
Implement the Canvas rendering engine.
Implement the deterministic timeline.
Create the character animation system.
Build Scene 1 as a fully functional visual prototype.
Run the project and inspect the visual result.

After the first scene works, continue implementing the remaining scenes.

Test the animation at multiple timestamps.

Check for rendering errors, broken transitions, inconsistent character proportions, and performance problems.

If a scene looks too simplistic, improve its procedural drawing and choreography.

9. Deliverables

Provide:

Complete JavaScript source code
Working local animation preview
Editable scene definitions
Reusable character animation system
Reusable procedural drawing functions
Video export functionality
Instructions for running the project

The final result must be a functioning animation, not just a technical demonstration.

Start by implementing the first scene and the core animation engine. Once the prototype is functional, continue with the remaining scenes.

Make it yours. Keep the technical sections (1 and 4 to 9) and rewrite the story and the look: the title "THE FIRST SPARK", the six timed scenes in section 3, and the list under "Visual characteristics" in section 2. Attach your own reference image.

Make it hereFree runs soon

The First Spark, a black-ink short film

A 60-second black-ink short on off-white paper: an ink droplet becomes a small character whose marks grow into a world, which floods with ink until a warm spark restores it. The long brief sets scenes, look, banned shortcuts, and a staged Canvas 2D build.

“Just checked the files 1,988 lines of JS, including the player and browser export. The animation itself is all Canvas 2D”

You'll need

  • A reference image for the ink style (the creator's isn't published)
How it was made

Asked whether they used Claude Code, the creator said no: they made it with Claude, on Opus 5.5. A reference image of a minimalist black-ink animation was attached to the prompt and isn't published. There are no external images or AI video tools: the creator counts 1,988 lines of JavaScript, including the player and browser export, with all the animation in Canvas 2D. They say it came out about 30% cheaper than the Astra model.

Posted Sep 23, 2026 · X · 342 likes · 45k views · 15 comments

Prompt from: Reply on X. The reference image the prompt mentions isn't published.

The reply with the prompt

Look notesby Reference

Black ink on warm off-white paper: a tiny teardrop character with white eyes on an empty page, then among sprouts, a bare tree, hills, and floating rings, a black ink flood filling the left of the frame, and a warm glow over a restored landscape.

Color
Warm off-white paper and deep black ink, with one soft amber glow near the end.
Type
No text in the frames.
Framing
16:9 with wide empty paper: the character small near the center on a thin horizon line, the landscape spread along that line, and the ink mass filling the left edge in the chaos frames.
Structure
A single ink dot, the droplet character with footprints behind it, a curled sprout beside it, a bare tree, a landscape of trees, flowers, hills, and rings, a black ink wave with splashes, ink dripping down the left side over tangled lines, a full landscape under a warm glow with birds, then the whole world small on a wide horizon.

More like this

2:00

I Will Never Be a Human, Claude's ink film

Partial prompt · Claude.ai

0:30

Cop's coffee break, directed by two models

Opus 5.5

1:41

Anime battle trailer: Claude vs ChatGPT

Opus 5.5 · Plain JavaScript

6:36

Toy theatre: an octopus sues the Moon

Partial prompt · Claude Code · Plain JavaScript

2:32

ASCII flight through Claude's inner mind

Opus 5.5 · WebGL2

3D short film about a rooftop date

Opus 5.5 · Three.js

1:06

Stickman Jedi vs. Sith duel, four models

Codex · Canvas

0:30

Sci-fi morning routine with a world reveal

Opus 5.5 · DaVinci Resolve Studio

0:30

Sci-fi naval battle trailer

Partial prompt · Opus 5.5 · DaVinci Resolve Studio

1:00

An alien explores the Library of Babel

Claude Cowork

1:15

Robot who learns his world is prompted

Opus 5.5 · Remotion

3:50

Glow-star toy cartoon in a 1990s bedroom

CRHQ · Three.js

1:00

Surreal horror short about a day at work

Claude Code · Python

0:49

YouTube Poop about being an LLM

Claude Code · Python

0:08

Market Street in 1906, rebuilt in 3D

Claude Tag · Blender

2:30

Minimalist motion reel for a Mac notch app

Claude.ai

0:15

Pixel-art kākāpō party with confetti

Claude.ai · HTML canvas

0:51

Ink-and-watercolour explainer for an app

Claude Code · Plain JavaScript

0:43

Demoscene film from a single HTML file

Claude Code · WebGL2

1:20

Gold mosaic whose tiles fly as flocks

Opus 5.5 · WebGL2

1:10

Risograph film of a starling murmuration

Claude Code · Canvas 2D

0:28

Risograph animation of a lone ink dot

Claude Code · Canvas 2D

0:20

Rainbow slinky down an endless escalator

GPT-6 Astra · HTML canvas

2:05

Bach cello prelude performed by six models

Fable 5 · Plain JavaScript

0:05

Seamless side-view car loop with parallax

Perplexity · HTML canvas

0:10

Animated title card for a coffee shop

Claude.ai · Plain JavaScript

0:08

Low-poly horse loop across GPT-6.1 levels

GPT-6.1 Sol · Three.js

0:40

Black-and-white launch film for Grok 4.7

Opus 5.5 · HTML

1:37

Shader universe grown from one typed word

Claude Code · Three.js

0:08

Low-poly 3D horse at five effort levels

Cursor · Three.js