A storyboard panel is a moment. This is the same panel with time in it: a script of verbs (enter, walk, say, camera...) that the actors carry out, drawn by the kit's own drawCharacter and redrawn only when a pose or a mood changes, so the sketch holds still while the figure moves. Scrub it, edit the script, or switch to direct mode and play it like a game: what you do is written into the script as actions.
0.0 / 0.0 s
Direct mode
←→ walk · ↑ next pose · ↓ next mood · f turn ·
The script is data: one action per line
enter who, from: left|right, x, for
exit who, to: left|right, for
walk who, to (0..1), for
turn who
pose who, pose; mood who, mood
say / think who, text, for
wait for
caption text
camera zoom, to [x, y], for
prop kind, x, y, label, scale
at on any line: a start time in seconds; without it, an actor's line starts when their last one ends
What this taught us
- The script is a storyboard with time in it. A panel is a script where every action is at t = 0; a played script is a panel at every t. The two can share one data file: a storyboard's scene plus an optional
actionslist. - Redraw on change, move by transform. Drawing a character once per pose and mood and moving the group keeps Rough.js still; redrawing every frame would make the sketch boil. The kit's
drawCharacteralready returns the head position, which is all a bubble needs. - Direct mode is the editor nobody has to learn. Walking an actor with the arrow keys and typing a line writes the actions with their times; the recording is a first draft of a script, and the script is the storyboard. Playing the game wrote the data.
- What the kit should export next: its bubble, caption and setting as functions, and a
walkpose (two frames would do). This page redraws its own bubble in the kit's ink to get round it. - Timing needs a grammar. "When their last line ends" was enough for a two-actor scene; a third actor and a camera wanted
atandwait. A tiny timeline language is the next experiment, not a bigger JSON.