Three trailers. The 3.0 trailer comes first: 130.8 seconds introducing HD-2D, overworld route navigation, dynamic lighting across day and night, and the multi-phase Bell-Warden boss fight with live mid-battle weapon swaps. The 2.0 trailer: 119 seconds, six new levels on a World 2 map. The 1.x trailer is 104 seconds at 480 × 270. Nine characters, six stages and a UI kit were built as .pas documents by agents working through the plugin's own verbs, then scripted beat by beat, recorded in Unity and checked pixel for pixel.
Trailer 3.0
The 3.0 trailer: 130.8 seconds (7,848 frames at 60 fps) introducing HD-2D. Overworld route navigation, dynamic 24-hour lighting across dawn, midday, sunset dusk, and night, and the multi-phase Bell-Warden street battle with live mid-fight weapon swaps.
130.8 s · 7,848 frames at 60 fps · 1920 × 1080 native HD-2DWatch in 4K on YouTube
Overworld Map: elevation contours, landmark pins, and camera pathing
Overworld
Camera
3-2
The Village: cobblestones, animated well, dynamic shadows, and 24h lighting transition
Town Square
Villagers
3-3
The Wake: Belfry dust, bell resonance, and awakening of the Bell-Warden
Belfry Tower
Wren, Bell-Warden
3-4
The Street Fight: hammer ground slam, shockwave ring, mid-fight gear swapping, and sunset dusk lighting
Village Street
Wren, Bell-Warden
3-5
Night Battle & Victory: street lamps ignite, bloom and depth-of-field bokeh, hammer knock-away, and victory pose
Street & Bridge
Wren
Behind the scenes: 3.0
A tour behind the 3.0 HD-2D pipeline: 3D model baking from Blender, normal map generation, camera depth bias, real-time lighting and shadows, and the custom character rig.
The 2.0 trailer: 119 seconds, six new levels on a World 2 map, one for each thing 2.0 adds. Every line reads at one pace, and every sprite is a Pixel Art Studio file.
119.2 s · 7,152 frames at 60 fps · 480 × 270 nativeshown at x2, nearest neighbour
A 3D model from Blender, imported as pixel sprites in eight directions
The Foundry
Kettle
2-2
Two poses, and the six frames between them made by Tween
The Clockwork Theatre
Loll
2-3
Hitboxes and hurtboxes stored in the frames, and one hand socket for three weapon files: a sword, an axe and a spear
Dojo Peak
Tamsin, the Dummy
2-4
A 47-slot auto-tile filling a real Tilemap, cell by cell
Canopy Falls
Pebble
2-5
Six layers of one picture as a parallax stage, at full speed from the first frame
Canyon Express
Dusty
2-6
Speech bubbles, paint on the easel, three mirrors showing the art checks (greyscale, colour-blind, silhouette), then the same sprite swapped into a running game
Arcade City
Byte, Vela, Prism
P.S.
After the credits: Dusty, hatless, and a spare cap on a head socket layer
Canyon Express
Dusty
Behind the scenes: 2.0
A minute and forty-five seconds behind the levels: Kettle turning in Blender, the Pixel Art Studio window where each feature was used, in the trailer's order, and a running game that updates when a file is saved.
Every sprite is a Pixel Art Studio file. The only things on screen that are not sprites are the iris wipe, a computed circle, and the camera's black clear colour.
The page plays the native WebM, and the x2 MP4 where WebM is not supported. The 4K and 1080p versions are on YouTube. All of them come from the same edit: the thirteen scene takes joined without a resample (level 1-5 is a composite of four captures of one lit scene), and a mix normalised to -14 LUFS.
The script
Thirteen scene files, compiled together into one trailer.json: 599 beats, 67 text rows, 71 audio slots and 280 rows on the cue sheet. A beat is one line of JSON: a camera cut or wipe, a tag to play, layers to hide or show, a palette to swap to, a move, a frozen clock, or a line of dialogue. Click a scene on the bar above to jump the trailer to it.
PRESS START
0:00–0:07 · 7.0 s · 420 frames · 50 beats · music M0
Sells The hub. The whole map starts locked: flat silhouettes under drifting fog. The cursor visits the five nodes, the path to 1-1 draws, the courtyard floods with colour and its preview opens. The title plate, the cursor, the locks, the path and the previews are .pas documents too.
0 pxframe 330 5.5 s: the path to 1-1 has been drawn, the courtyard has flooded in colour and the 1-1 COURTYARD preview has opened. The other four zones are still locked silhouettes under fog. FrameCheck rebuilt it from fresh plugin renders: 0 of 129,600 pixels different, and the recorded x4 and x8 frames are exact nearest-neighbour upscales.
0:07–0:22 · 15.0 s · 900 frames · 29 beats · music M1
Sells Layers and sorting: visibility, complete hidden layers, groups, clipping and Y-sorting at runtime.
0 pxframe 648 10.8 s: Sir Stacks runs behind the first pillar and will pass in front of the second (Y-sort). FrameCheck rebuilt it from fresh plugin renders: 0 of 129,600 pixels different, and the recorded x4 and x8 frames are exact nearest-neighbour upscales.
SIR STACKSSorting layers too! Look at me go! Woohoo!10.0 s
NARRATOR...I'm okay.13.6 s
All 29 beats (runs of moves on one actor folded)
at (s)
kind
actor
detail
0.00
camera
cut to [-2000, 0]
0.00
say
card: “1-1 LAYERS” until 1.0
1.00
camera
cut to [0, 0]
1.00
tag
stacks
walk
1.00
move
stacks
to [120, 200] over 1.5 s
2.50
tag
stacks
idle
2.50
say
stacks
box: “Every piece of me is a layer.” until 5.0
4.50
hide
stacks
hide Helmet, Plume · label -HELMET
5.00
hide
stacks
hide Cape · label -CAPE
5.50
hide
stacks
hide Pauldrons · label -PAULDRONS
6.00
hide
stacks
hide Breastplate · label -BREASTPLATE
6.50
hide
stacks
hide Gauntlets, Greaves · label -GREAVES
7.00
hide
stacks
hide Tunic · label -TUNIC
7.00
hide
stacks
show Blush
7.20
wait
clock frozen 1.8 s
7.20
say
stacks
box: “Oops. Not that far.” until 9.0
9.00
hide
stacks
hide Blush
9.00
hide
stacks
show Outfit, Cape · label GROUP
9.00
tag
stacks
glint (once)
9.50
say
stacks
label: “CLIP” until 10.0
10.00
hide
stacks
hide Glint
10.00
tag
stacks
run
10.00
move
stacks
to [400, 200] over 2.8 s
10.00
say
stacks
box: “Sorting layers too! Look at me go! Woohoo!” until 12.8
12.80
tag
stacks
fall (once)
12.80
move
stacks
to [430, 380] over 0.8 s
13.60
camera
shake 2 px over 0.3 s
13.60
say
box: “...I'm okay.” until 14.6
14.60
camera
iris-out over 0.4 s
PATH TO 1-2 ROOFTOP
0:22–0:24 · 1.5 s · 90 frames · 31 beats · music M6
Sells Back on the map after level 1-1: the next path draws, the rooftop city floods in and its named preview opens.
0 pxframe 60 1.0 s: the 1-2 ROOFTOP preview has just opened; zones 1-1 to 1-1 are open with their stars on, and the rest are still locked. FrameCheck rebuilt it from fresh plugin renders: 0 of 129,600 pixels different, and the recorded x4 and x8 frames are exact nearest-neighbour upscales.
0:24–0:36 · 13.0 s · 780 frames · 32 beats · music M2
Sells Palette swaps: a runtime swap, colour cycling on the emblem, and a swap on a second sprite (Glob).
0 pxframe 420 7.0 s: the switch to Captain Palette. Frames 420 and 421 are identical, so the switch is invisible. FrameCheck rebuilt it from fresh plugin renders: 0 of 129,600 pixels different, and the recorded x4 and x8 frames are exact nearest-neighbour upscales.
0:36–0:38 · 1.5 s · 90 frames · 30 beats · music M6
Sells Back on the map after level 1-2: the next path draws, the arena floods in and its named preview opens.
0 pxframe 60 1.0 s: the 1-3 ARENA preview has just opened; zones 1-1 to 1-2 are open with their stars on, and the rest are still locked. FrameCheck rebuilt it from fresh plugin renders: 0 of 129,600 pixels different, and the recorded x4 and x8 frames are exact nearest-neighbour upscales.
0:38–0:53 · 15.0 s · 900 frames · 106 beats · music M3
Sells Animation and tiles: tags with hit-stop timing, hits that connect with a flash and an impact spark, a Tile Palette export built row by row, and an adjustment layer (KO Grey).
0 pxframe 480 8.0 s: the counter lands on Brash. A 0.05 s wait freezes the clock on the contact, Brash flashes white, the hit spark plays and the camera shakes 2 px. On every hit of the fight the attacker overlaps the target by 1 to 4 px at contact, measured on the recorded frames. FrameCheck rebuilt it from fresh plugin renders: 0 of 129,600 pixels different, and the recorded x4 and x8 frames are exact nearest-neighbour upscales.
box: “Let me finish this fight quickly.” until 4.5
4.50
say
callout: “FIGHT!” until 5.0
5.00
tag
brash
dash (once)
5.00
move
brash
to [266, 214] over 0.6 s
5.00
say
callout: “[dash]” until 5.6
5.60
tag
brash
combo (once)
5.60
say
callout: “[combo]” until 7.4
5.80
tag
bonk
block (once)
5.80
say
bonk
label: “BLOCKED” until 6.3
5.80
hide
blockfx
show whole actor
5.80
tag
blockfx
spark (once)
5.85
move
brash
to [263, 214] over 0.1 s
5.95
hide
blockfx
hide whole actor
6.20
move
brash
to [271, 214] over 0.2 s
6.40
tag
bonk
block (once)
6.40
say
bonk
label: “BLOCKED” until 6.9
6.40
hide
blockfx
show whole actor
6.40
tag
blockfx
spark (once)
6.45
move
brash
to [268, 214] over 0.1 s
6.55
hide
blockfx
hide whole actor
6.80
move
brash
to [275, 214] over 0.2 s
6.80
tag
bonk
idle
7.00
wait
clock frozen 0.05 s
7.00
hide
bonk
hide whole actor
7.00
hide
bonkflash
show whole actor
7.00
tag
bonkflash
hurt (once)
7.00
palette
bonkflash
Bonk.pas · flash 3
7.00
hide
hitfx
show whole actor
7.00
tag
hitfx
hit (once)
7.00
camera
shake 1 px over 0.1 s
7.05
hide
bonkflash
hide whole actor
7.05
hide
bonk
show whole actor
7.05
tag
bonk
hurt (once)
7.05
move
bonk
to [332, 217] over 0.1 s · face left
7.25
hide
hitfx
hide whole actor
7.25
tag
bonk
idle
7.25
move
bonk
to [330, 217] over 0.15 s · face left
7.40
tag
bonk
counter (once)
7.40
tag
brash
idle
7.40
move
brash
to [268, 214] over 0.2 s
7.40
move
hitfx
to [282, 187] over 0.0 s
7.40
say
callout: “[counter]” until 8.4
8.00
wait
clock frozen 0.05 s
8.00
tag
brash
hurt (once)
8.00
palette
brash
Brash.pas · flash 3
8.00
hide
hitfx
show whole actor
8.00
tag
hitfx
hit (once)
8.00
camera
shake 2 px over 0.15 s
8.10
move
brash
to [262, 214] over 0.3 s
8.25
hide
hitfx
hide whole actor
8.40
tag
brash
ko (once)
8.40
hide
brash
show KO Grey
8.40
move
brash
to [244, 196] over 0.3 s
8.40
say
callout: “K.O.” until 10.0
8.70
move
brash
to [222, 214] over 0.3 s
9.40
tag
bonk
idle
10.00
tag
bonk
talk
10.00
say
bonk
box: “He forgot to tag a block.” until 12.5
12.50
tag
bonk
shrug (once)
12.50
say
bonk
box: “Next!” until 14.6
13.00
say
callout: “BONK WINS” until 14.6
14.60
camera
iris-out over 0.4 s
PATH TO 1-4 SKETCHBOOK
0:53–0:54 · 1.5 s · 90 frames · 28 beats · music M6
Sells Back on the map after level 1-3: the next path draws, the sketchbook floods in and its named preview opens.
0 pxframe 60 1.0 s: the 1-4 SKETCHBOOK preview has just opened; zones 1-1 to 1-3 are open with their stars on, and the rest are still locked. FrameCheck rebuilt it from fresh plugin renders: 0 of 129,600 pixels different, and the recorded x4 and x8 frames are exact nearest-neighbour upscales.
0:54–1:10 · 15.0 s · 900 frames · 189 beats · music M4
Sells Drawing tools: Curve with pixel-perfect, Free Transform, custom brush, pen pressure, Text, Blur and Scramble, with Mira floating beside the page to draw each stroke.
0 pxframe 170 2.8 s: Mira floats over the gap with the pencil tip on the newest pixel of the bridge curve. The tip was checked against the newest stroke pixel on the recorded reveal frames, at 0 px. FrameCheck rebuilt it from fresh plugin renders: 0 of 129,600 pixels different, and the recorded x4 and x8 frames are exact nearest-neighbour upscales.
1:10–1:11 · 1.5 s · 90 frames · 26 beats · music M6
Sells Back on the map after level 1-4: the next path draws, the Archive floods in and its named preview opens.
0 pxframe 60 1.0 s: the 1-5 ARCHIVE preview has just opened; zones 1-1 to 1-4 are open with their stars on, and the rest are still locked. FrameCheck rebuilt it from fresh plugin renders: 0 of 129,600 pixels different, and the recorded x4 and x8 frames are exact nearest-neighbour upscales.
1:11–1:21 · 10.0 s · 600 frames · 18 beats · music M8
Sells Scene lights: one checkbox turns on real 2D lights. Wick carries a lantern through the Archive, Boolean gives him a fright, and the same scene is shown with lights off, in Built-in, in URP 2D and in HDRP.
0 pxframe 360 6.0 s: Four 240 × 135 captures of the same dark Archive, where the lantern pool and Boolean's glow carry the light: lights off, then Built-in, URP 2D and HDRP, with the label “...not scary.” over the flat ghost on the unlit panel. The panels are captures of the NightShift sample running in each pipeline, composited into the key-colour pixels of the LightsSplit stage. The divider, the plates, the card and the call-outs are the trailer's own. FrameCheck rebuilt that overlay from fresh plugin renders: 0 of 129,600 pixels different.
1-5 SCENE LIGHTSboo.AAAAH!ONE CHECKBOX...not scary.THREE PIPELINES
WICKFirst night shift. One lantern. Zero training.1.2 s
BOOLEANScared of the dark...8.4 s
All 18 beats (runs of moves on one actor folded)
at (s)
kind
actor
detail
0.00
camera
cut to [-2000, 0]
0.00
hide
wick
hide whole actor
0.00
hide
boolean
hide whole actor
0.00
hide
offpanel
hide whole actor
0.00
say
card: “1-5 SCENE LIGHTS” until 1.0
1.00
camera
cut to [0, 0]
1.25
say
wick
box: “First night shift. One lantern. Zero training.” until 3.5
3.00
move
boolean
to [246, 88] over 0 s
3.50
say
boolean
label: “boo.” until 4.0
4.00
say
callout: “AAAAH!” until 4.6
4.00
camera
shake 2 px over 0.3 s
4.60
hide
full
hide whole actor
5.00
say
callout: “ONE CHECKBOX” until 6.6
5.60
say
offpanel
label: “...not scary.” until 6.6
6.80
say
callout: “THREE PIPELINES” until 8.3
8.40
hide
full
show whole actor
8.40
say
boolean
box: “Scared of the dark...” until 10.0
9.60
camera
iris-out over 0.4 s
ALL CLEAR
1:21–1:29 · 8.0 s · 480 frames · 25 beats · music M5
Sells The agents: the whole cast, every stage and the UI, built through the agent surface.
0 pxframe 300 5.0 s: the lineup on the fully unlocked, starred map, with the logo and the end card. The castle stands over the Archive at the end of the path. FrameCheck rebuilt it from fresh plugin renders: 0 of 129,600 pixels different, and the recorded x4 and x8 frames are exact nearest-neighbour upscales.
1:29–1:33 · 4.0 s · 240 frames · 1 beats · music M7
Sells The credits sheet is UI/Credits.pas, rising 2 px a frame.
0 pxframe 120 2.0 s: the sheet mid-rise: the cast list now ends with Wick and Boolean. FrameCheck rebuilt it from fresh plugin renders: 0 of 129,600 pixels different, and the recorded x4 and x8 frames are exact nearest-neighbour upscales.
Documents
UI/Credits.pas
Beat kinds
move 1
Master take
FrameCheck 240/240 frames at 0 px
All 1 beats (runs of moves on one actor folded)
at (s)
kind
actor
detail
0.00
move
sheet
to [240, -2] over 3.8 s
CONTINUE?
1:33–1:44 · 11.0 s · 660 frames · 34 beats
Sells Undo and Redo through the document history, with their default keys.
0 pxframe 498 8.3 s: CTRL+Y has put the KO back. KO Grey is shown again. FrameCheck rebuilt it from fresh plugin renders: 0 of 129,600 pixels different, and the recorded x4 and x8 frames are exact nearest-neighbour upscales.
Each character started as one Krea 2 picture. An agent imported it onto a 16 px grid, peeled it into pieces on separate layers, filled what each piece hides, and posed the pieces about their joints to make every frame. The rest frame must equal the design at 0 px, and every frame must have 0 pinholes and 0 islands in every hide state the scenes use.
SIR STACKS
Cast/SirStacks.pas · 128 × 96 Indexed · in PRESS START, 1-1 LAYERS, ALL CLEAR
Every piece of armour is its own layer, so Scene 1 can take it off one piece at a time. Hidden fills under each joint keep every undressed state free of holes.
idleframes 0–3 · 4 f · 200 ms each · loopswalkframes 4–11 · 8 f · 100 ms each · loopsrunframes 12–19 · 8 f · 50 ms each · loopsfallframes 20–23 · 4 f · 200 ms each · onceglintframes 24–27 · 4 f · 250 ms each · once
Strips with per-frame pinhole and island countsidle
walk
run
fall
glint
Layers
35 (26 pixel, 9 groups)
Frames
28
Palette
22 entries in 8 ramps
Hidden overlap
418 px
Frame clean-up
idle 1 + 1, walk 5 + 10, run 14 + 23, fall 13 + 15 (fills + removals)
Tears
0 pinholes, 0 islands in all 9 hide states (S0–S6, S0+Glint, run-boxers) on all 28 frames
Rest vs design
0 px
Agent wall time
still 18 min; overlap pass 67 min; motion 38 min
Editor RSS peak
4.25 GB (motion); 7.11 GB in the first motion pass, which was stopped
PIP / CAPTAIN PALETTE
Cast/Pip.pas · 128 × 96 Indexed · in 1-2 PALETTES, ALL CLEAR
One sprite, five palettes. The Hero palette changes only the ink, scarf, hoodie, trousers, emblem and mask; the emblem entries cycle.
Design Krea 2 picture, 64 × 64 cells of 16 px
Grid one colour per cell, x3
Reference the imported design, x2
Rest frame the layered sprite, x2 0 px
The pieces sheet from the build.
Layer tree, front first (16)
NearArm
NearForearm
NearUpperArm
Scarf
Head
Bag
Body
FarArm
FarForearm
FarUpperArm
NearLeg
NearThigh
NearShin
FarLeg
FarThigh
FarShin
The five carrier palettes on the same pixels (x4).
idleframes 0–3 · 4 f · 200 ms each · loopsnervousframes 4–7 · 4 f · 100 ms each · loopsspinframes 8–13 · 6 f · 150 150 150 150 200 200 ms · onceposeframes 14–19 · 6 f · 250 ms each · loops
Strips with per-frame pinhole and island countsidle
Cast/Glob.pas · 128 × 96 Indexed · in 1-2 PALETTES, ALL CLEAR
Squash and stretch on a bounce of 6 frames. The pink swap at the end of Scene 2 is the same pixels with another palette.
Design Krea 2 picture, 64 × 64 cells of 16 px
Grid one colour per cell, x3
Reference the imported design, x2
Rest frame the layered sprite, x2 0 px
5 pieces, cropped, at x2: Blush, Body, Drip, Eyes, Mouth.
Layer tree, front first (5)
Blush
Eyes
Mouth
Body
Drip
Base, GlobGreen and GlobPink on the same pixels (x6).
bounceframes 0–5 · 6 f · 100 ms each · loopstalkframes 6–7 · 2 f · 150 ms each · loops
Strips with per-frame pinhole and island countsbounce
talk
Layers
5 (Drip, Body, Mouth, Eyes, Blush)
Frames
8
Palette
GlobGreen and GlobPink carriers
Hidden overlap
262 px (rig.json)
Frame clean-up
0 px
Tears
0 pinholes, 0 islands on every frame, with and without Blush
Rest vs design
0 px
Agent wall time
about 14 min, still and motion
Editor RSS peak
about 4.3 GB
BRASH
Cast/Brash.pas · 128 × 96 Indexed · in 1-3 ANIMATION + TILES, ALL CLEAR, CONTINUE?
KO Grey is a Hue/Saturation adjustment layer at -100. Every KO frame holds only ink and the six greys.
Design Krea 2 picture, 64 × 64 cells of 16 px
Grid one colour per cell, x3
Reference the imported design, x2
Rest frame the layered sprite, x2 0 px
The pieces sheet from the build.
Layer tree, front first (21)
KO Grey (adjustment, hidden)
NearArm
NearUpperArm
NearElbow
NearForearm
Belt
Head
Torso
FarArm
FarUpperArm
FarElbow
FarForearm
NearLeg
NearThigh
NearKnee
NearShin
FarLeg
FarThigh
FarKnee
FarShin
Tails
ko + KO Greythe same 6 frames with the adjustment layer shown
idleframes 0–5 · 6 f · 150 ms each · loopsdashframes 6–9 · 4 f · 150 ms each · oncecomboframes 10–18 · 9 f · 200 ms each · oncehurtframes 19–20 · 2 f · 100 ms each · oncekoframes 21–26 · 6 f · 150 150 150 150 200 200 ms · onceriseframes 21–26 · 6 f · 200 200 150 150 150 150 ms · once, reversed
Strips with per-frame pinhole and island countsidle
dash
combo
hurt
ko
rise
Layers
21 (12 pixel, 8 groups, KO Grey adjustment)
Frames
27
Palette
24 entries in 8 ramps (a 6-step grey ramp for the KO)
Hidden overlap
693 px
Frame clean-up
32 pocket + 7 stray px over 26 frames, at most 6 a frame
Tears
0 pinholes, 0 islands on all 27 frames, default and KO Grey
Rest vs design
0 px
Agent wall time
still 31 min; motion 23 min
Editor RSS peak
3.02 GB
BONK
Cast/Bonk.pas · 128 × 96 (a 60 × 60 design) Indexed · in 1-3 ANIMATION + TILES, ALL CLEAR, CONTINUE?
The moss is a clipped layer over the torso, 17 islands at rest. The counter reaches 24 px. When a hit lands, the upper body leans back 3 px and then 2 px, with the head tilted back 8 and then 4 degrees and the eyes squinted.
Design Krea 2 picture, 64 × 64 cells of 16 px
Grid one colour per cell, x3
Reference the imported design, x2
Rest frame the layered sprite, x2 0 px
The pieces sheet from the build.
Layer tree, front first (15)
HeadGroup
Eyes
Jaw
Head
NearArm
NearUpperArm
NearElbow
NearForearm
Moss
Torso
FarArm
FarUpperArm
FarElbow
FarForearm
Legs
idleframes 0–3 · 4 f · 200 ms each · loopsblockframes 4–6 · 3 f · 200 ms each · oncecounterframes 7–12 · 6 f · 150 150 150 150 200 200 ms · oncetalkframes 13–14 · 2 f · 150 ms each · loopsshrugframes 15–18 · 4 f · 150 150 300 300 ms · oncehurtframes 19–20 · 2 f · 100 150 ms · once
Strips with per-frame pinhole and island countsidle
block
counter
talk
shrug
hurt
Layers
15 (10 pixel, 5 groups)
Frames
21
Palette
16 entries in 5 ramps; amber eyes are emissive
Hidden overlap
1,483 px
Frame clean-up
6 px, plus 8 and 3 px on the two hurt frames
Tears
0 pinholes, 0 islands in S0, moss-hidden and eyes-hidden on every frame
Rest vs design
0 px
Agent wall time
still 37 min; motion 14 min
Editor RSS peak
1.95 GB (still)
MIRA
Cast/Mira.pas · 128 × 96 Indexed · in PRESS START, 1-4 DRAWING TOOLS, ALL CLEAR, CONTINUE?
Her pencil doubles as the trailer's mouse cursor: the Cursor layer is a 14-row copy of the tip with its hotspot at (73, 87). In 1-4 she floats while she draws: the float frames pose her legs back by 24 to 34 degrees so her boots trail, and the pencil layer does not move, so the tip stays at (84, 86).
Design Krea 2 picture, 64 × 64 cells of 16 px
Grid one colour per cell, x3
Reference the imported design, x2
Rest frame the layered sprite, x2 0 px
The pieces sheet from the build.
Layer tree, front first (12)
Cursor (hidden)
NearArm
NearFingers
NearHand
NearSleeve
Pencil
FarArm
FarUpperArm
FarForearm
Head
Body
Legs
idleframes 0–3 · 4 f · 200 ms each · loopsdrawframes 4–9 · 6 f · 100 ms each · loopsstampframes 10–12 · 3 f · 150 ms each · loopspointframes 13–14 · 2 f · 200 ms each · loopscursorframes 15–15 · 1 f · 100 ms each · oncefloatframes 16–19 · 4 f · 150 ms each · loops
Strips with per-frame pinhole and island countsidle
draw
stamp
point
cursor
float
Layers
12 (10 pixel, 2 groups)
Frames
20
Palette
26 entries in 13 ramps, built from the raw design's cell histogram
Hidden overlap
550 px
Frame clean-up
6 px
Tears
0 pinholes, 0 islands in S0, S0 + Cursor and the cursor alone on every frame
Rest vs design
0 px
Agent wall time
still 22 min; motion 10 min
Editor RSS peak
about 2 GB
DOODLE
Cast/Doodle.pas · 64 × 48 Indexed · in 1-4 DRAWING TOOLS, ALL CLEAR
Doodle has no Krea design. He was drawn in the plugin as a pencil sketch (two layers, Body and Wing), and his blur and scramble frames are the Blur and Scramble tools themselves, driven stroke by stroke. Those tool frames are checked for pinholes only, because the tools make islands by design.
riseframes 0–3 · 4 f · 150 ms each · onceblurframes 4–6 · 3 f · 330 ms each · oncescrambleframes 7–11 · 5 f · 200 ms each · once
Strips with per-frame countsrise
blur
scramble
Layers
2 (Body, Wing)
Frames
12 (rise 0–3, blur 4–6, scramble 7–11)
Frame clean-up
3 px
Tears
0 pinholes, 0 islands on every rise frame
WICK
Cast/Wick.pas · 128 × 96 Indexed · in 1-5 SCENE LIGHTS (the NightShift sample) and the 1-5 preview on the map
Wick is the night-watch intern of the Archive: a navy guard cap two sizes too big, an oversized mustard raincoat, striped pyjama trousers, bunny slippers and a brass lantern held at arm's length. The lantern is a light source. Its flame is a layer of its own with three flicker cels, and every frame records where the flame is (the light socket, at (81, 68) at rest), so a 2D light can follow it. The flame and the glass are emissive ramps. Each leg is one piece: at 11 px long a thigh and a shin tore into noise, so the tiptoe reads through the leg swing, the slipper tilt and the ears of the bunny slippers flopping on every step.
Every frame, with its pinhole and island counts and the floor line.
Layer tree, front first (12)
Sweat
NearArm
Cap
Body
Head
FarArm (the lantern arm)
Flame
Lantern
NearSlipper
NearLeg
FarSlipper
FarLeg
rest frameframe 0 · equals the design 0 pxidleframes 0–3 · 4 f · 200 ms each · loopswalk scaredframes 4–11 · 8 f · 110 ms each · loopsstartleframes 12–16 · 5 f · 70 90 120 90 160 ms · oncetrembleframes 17–18 · 2 f · 60 ms each · loopsofferframes 19–21 · 3 f · 150 150 300 ms · oncefleeframes 22–29 · 8 f · 70 ms each · loops
Strips with per-frame pinhole and island countsidle
about 12 px per walk_scared cycle and 24 px per flee cycle, with no foot slide
Normal map
Cast/Wick_Normal.pas, from the shape (bevel 2 at 45°); all 30 sprites are bound to it
Tears
0 pinholes, 0 islands on every frame, 0 fragments in any piece
Rest vs design
0 px; feet on row 89 in every stance frame
BOOLEAN
Cast/Boolean.pas · 128 × 96 Indexed · in 1-5 SCENE LIGHTS (the NightShift sample) and the 1-5 preview on the map
Boolean is a plump, mint-white ghost with no arms or legs, one curling tail and a floppy lavender night-cap with a pompom. It has two states, BOO and boo, and it is scared of the dark, so it drifts toward the lantern like a moth. Its eyes, its rim and its pompom are emissive, and every frame records the body centre as the light socket, so Boolean's own mint glow follows it. The Face layer is five small parts (two eyes, a mouth, two cheeks) that survive clean-up on purpose. The vanish is the material's dissolve, not cels.
Every frame, with its pinhole and island counts and the floor line.
Layer tree, front first (5)
Pompom
Cap
Face
Body
Tail
rest frameframe 0 · equals the design 0 pxfloatframes 0–7 · 8 f · 120 ms each · loopspeekframes 8–11 · 4 f · 300 160 140 220 ms · oncespookframes 12–15 · 4 f · 90 110 240 140 ms · onceshyframes 16–19 · 4 f · 110 120 140 600 ms · once, then holdsdriftframes 20–25 · 6 f · 130 ms each · loopsscreamframes 26–28 · 3 f · 70 ms each · loops
Strips with per-frame pinhole and island countsfloat
Cast/Boolean_Normal.pas, from the shape (bevel 5 at 50°) with the Face layer cleared, so the eyes, cheeks and mouth read flat; all 29 sprites are bound to it
Tears
0 pinholes on every frame; 0 islands, except the peek's first frame, where the two eyes are separate by design
Rest vs design
0 px
The world
Six stages on 16 px tiles. The first versions read as plain tilemaps, so each stage was redrawn to game-quality detail, with real games as references. Drag across each picture to compare the first version with the final one.
Overworld
Stages/Overworld.pas, OverworldStarred.pas, OverworldTiles.pas, OverworldAnim.pas, Hub/Lock1.pas to Lock5.pas, Hub/Path1.pas to Path5.pas, Hub/Stars.pas, Previews/Preview1-1.pas to Preview1-5.pas · the hub in the intro and after each level; the outro uses the starred copy
FIRSTFINAL
Real-game references
Super Mario Land 2 (zones that own their part of the map)
Donkey Kong Country 2 (the Crocodile Isle maps)
Sonic Generations and Sonic Superstars (zone previews, colour returning as you clear a zone)
Sonic Mania (short animated-tile loops)
Super Mario World (the overworld map)
Final version
480 × 272, 539 unique tiles, a 184-entry Indexed palette with one ramp per zone. Five zones tile the whole canvas, with no open meadow between them, and every border has a perimeter that belongs to one side. The path and the five stone discs stay put. 1-1 is a castle courtyard around the lake, which becomes its moat, with a drawbridge where the path crosses. 1-2 is a rooftop city with a water tower, a blinking neon sign and a retaining wall to the south. 1-3 is the arena at night, with braziers. 1-4 is a sketchbook with a torn paper edge all round. 1-5 is the haunted Archive behind an iron fence and a fog line, with a crypt court, candles, graves and dead trees.
The map in motion. OverworldAnim.pas lays 12 frames of 100 ms over the stage: moat and lake ripples, the waterfall, banners, torch and brazier flames, the neon sign, window lights, the paper corner, wisps, fog and a few critters. Every loop divides 12 frames, so they repeat together.
The hub unlocks as you go
The map starts locked. Each zone has a lock document: a flat three-tone silhouette of its landmarks, with fog banks drifting over it (a fog tag of 12 frames at 100 ms). After each level the trailer returns to the map for a second and a half. The next path draws itself (a draw tag of 13 short frames, with a bright tip), the zone floods with colour from the end of the path outward (a flood tag of 10 frames at 40 ms, with a bright front), and its named preview pops open. Zones already cleared show their stars. Every overlay is cut from the real renders of the stage, so a pixel of an overlay equals the stage pixel it stands for.
Left to right, top row: the whole map locked in the intro, the path to 1-3 drawing, the arena flooding in. Bottom row: its preview open, every zone open with the 1-5 ARCHIVE preview, and the starred map the outro stands on.The whole return before 1-3 ARENA, at x2.
A preview for every zone
When a zone unlocks, a framed window opens over the map with that level's own art at 1:1. Each preview is a .pas document of 112 × 99 pixels with an open tag (the window grows from a line) and a loop tag, and its characters are frames rendered by the plugin. Shown at x4.
1-1 COURTYARD Sir Stacks drops his layers in the courtyard1-2 ROOFTOP Pip cycles palettes on the rooftop while Glob bounces1-3 ARENA Brash's combo against Bonk, with the hit spark1-4 SKETCHBOOK Mira writes a sign stroke by stroke1-5 ARCHIVE Wick's lantern and Boolean in the Archive
OverworldStarred.pas, the copy the outro uses: the five node cells on gold-star discs, with node glows in the Light layer.Tileset: 256 × 544 px of 16 px tiles, shown x2
Courtyard
Stages/Courtyard.pas · 1-1 LAYERS
FIRSTFINAL
Real-game references
Castlevania: Symphony of the Night (the castle entrance and the outer wall)
Castlevania: Rondo of Blood
Shovel Knight (Pridemoor Keep)
Final version · 21 min of agent time
218 tiles, 45 colours. Far castle, hills and clouds, battlements, 11 brick variants, banners, ivy, a window, sconces, flagstones, a broken ledge and the pit. Sir Stacks' edge contrast 1.02 to 1.61; background noise 0.045 to 0.011.
Tileset: 256 × 224 px of 16 px tiles, shown x2
Rooftop
Stages/Rooftop.pas · 1-2 PALETTES
FIRSTFINAL
Real-game references
Katana Zero (dusk city rooftops, neon)
Celeste (chapter 3, night-city colours)
Gunpoint (rooftop silhouettes)
Mega Man X (Highway Stage skyline)
Hotline Miami (palettes)
Final version · 22 min of agent time
398 tiles, 63 colours in 13 ramps. Three skyline depths, a neon palette sign, a stair house and a puddle reflection. Edge contrast went up for all seven palette states; noise 0.0285 to 0.0129.
Tileset: 256 × 400 px of 16 px tiles, shown x2
Arena
Stages/Arena.pas, ArenaBackdrop.pas, ArenaRows*.pas · 1-3 ANIMATION + TILES and the post-credit scene
FIRSTFINAL
Real-game references
Street Fighter II (Ryu's Suzaku Castle, Sagat's Thailand temple)
Mortal Kombat II (The Pit II, Kombat Tomb)
Blasphemous (stonework, chains, candles)
Shovel Knight (tile variety)
Final version · 45 min of agent time
88 tiles, 40 colours. A night gallery with a crowd, niches, a crest, chains, torch plates and a sandstone floor. Readability against the wall: Bonk 1.01 to 1.58, Brash 1.62 to 2.54; band noise 0.043 to 0.008.
Tileset: 256 × 128 px of 16 px tiles, shown x2
Sketch
Stages/Sketch.pas · 1-4 DRAWING TOOLS
FIRSTFINAL
Real-game references
Drawn to Life (the drawn world)
Paper Mario (the paper look)
Scribblenauts
notebook games like Doodle Jump (graph paper)
Final version · 20 min of agent time
311 tiles. A sketchbook page: spiral binding, margin, header, doodles, a coffee ring, an eraser ghost, a cut-away of earth with a chest and a dragon skull, a hatched gap with spikes and a curled corner. The play band stays plain; noise 0.069 to 0.023.
Tileset: 256 × 320 px of 16 px tiles, shown x2
Archive
Stages/Archive.pas, ArchiveTiles.pas, ArchiveAnim.pas, ArchiveAnimTiles.pas · 1-5 SCENE LIGHTS, and the NightShift sample
UNLITLIT
Real-game references
Castlevania: Symphony of the Night (the Long Library)
Castlevania: Rondo of Blood and Bloodstained: Curse of the Moon (purple-grey brick, a moon window)
Blasphemous (the ossuary niche)
Luigi's Mansion and Shovel Knight's Lich Yard (the portrait whose eyes follow you)
Final version
An undercroft under an old library, 30 × 17 cells of 16 px that repeat every 480 px so the stage can scroll. Bookcases with labelled crowns, a moon window, a crypt arch onto a receding passage with two eyes, an ossuary niche, a portrait, cobwebs and a red carpet runner. 222 unique tiles, a 98-entry palette with one ramp per material, and emissive ramps for flames, moonlight and eyes. The Light layer is baked from three passes: candle and window pools, a darker vault and a moonbeam. The sample copy of the stage has that layer hidden, so scene lights do the lighting, and every document has a normal-map companion.
ArchiveAnim.pas: 16 frames of 120 ms. Candle flames, the star twinkle in the window, two swaying webs, dust motes falling through the moonbeam and the passage eyes blinking.
The map repeats every 480 px, shown twice side by side.Tileset: 256 × 272 px of 16 px tiles, shown x4
Props: sconce, candelabra, candles, hook lantern, book stack, skull, portrait, cobweb, spider and bookshelf, x4
The arena builds row by row
Scene 3 opens on the backdrop, then five row-group documents slide in, wall first and floor last. Each is a 480-pixel-wide strip cut from the Arena's tile map with 0 px difference.
Pillar, x4WaterTower, x4Castle, x4Torch, burnBanner, swayNodePulse, 3 frames at 150 msFxHit, hit: 4 frames at 50 ms, x6FxBlock, spark: 3 frames at 50 ms, x8
Tool moments in Scene 4
These props were drawn by the plugin's own drawing tools, driven stroke by stroke and saved as tags, so each frame of the tag is a state the tool really left behind. In the trailer Mira floats beside the page and draws them, and the stroke-by-stroke frames are what the scene shows as it happens. Each animation here pauses on its last frame before it loops.
Curve + pixel-perfect Bridge, 27 frames at 50 ms with three longer holds (shown x2)Free Transform Boulder, 5 frames at 300 ms, x6Custom brush Flowers, 5 frames at 300 ms, x6Pen pressure Grass, 22 frames at 50 ms with two longer holds, x6Text Sign, 14 frames at 100 ms, x8
The Free Transform and custom brush strips, with per-frame counts
The UI kit, titles and logo
UI/Kit.pas is one 480 × 270 document: the level card, the dialogue box, ten name tags, a star and the iris. Every box and card on this page copies its colours. Text contrast: box 16.31:1, card 17.23:1, name tags 5.0:1 or more.
UI/Kit.pas with every layer shown, x2.
UI/Titles.pas, all three layers, x2: the plate, PRESS START and THE END?UI/EndCard.pas, x2. Contrast 17.23:1.UI/Logo.pas, x4: the logo, rendered by the plugin and compared with the reference render, 0 px different (96 × 96).
How it was made
Nine steps, in order. Steps 2 to 4 are agents working through the plugin's public surface; steps 5 to 8 are the trailer rig, which lives in its own Editor-only folder and never ships with the plugin.
Behind the scenes: the real window
A 4:07 tour of the Studio window as you get it in Unity: the window itself, Bonk built step by step, every drawing tool at real speed, palettes, animation, tiles, scene lights, an agent driving the open document, and how the trailer above was assembled. Every window shot is the real Editor, recorded on 2026-10-09 and 2026-10-11; the cursor is drawn afterwards from the logged input, and the timelapses carry their speed. The Scene lights chapter has no cursor: the checkbox is turned on with the same call the Inspector's checkbox makes, and an outline marks the row.
The 960 × 540 page copy. The music is an original chiptune score synthesised in code for this video ("workshop", D major, 100 BPM, -14 LUFS). The 1080p version is on YouTube.
Where the plugin fell short
While they built the trailer, the agents wrote down every place where the plugin's verbs were not enough and they had to fall back to a script of their own: 136 notes in all. 86 of them asked for a new verb and 22 for a clearer explanation in the plugin's SKILL.md. The first 40 became a round of new plugin features, among them the verbs that peel a design, clean a frame, grow hidden overlap and check a pose, and the plugin now has 80+ verbs.
The numbers
Every figure here is read from a file: the script, the build logs and reports, the op logs and the capture folders.
6,240frames: 104.0 s at 60 fps, recorded at native, x4 and x8
13scenes, compiled together into one script
599beats, 67 text rows, 71 audio slots, 280 cue rows
56documents in the master (104 actors); 85 .pas files in the trailer folders (9 characters, 7 palettes, 64 stages, props and hub overlays, 5 in UI/), and 15 normal-map companions
123 / 195layers / frames across the nine cast documents
2,182 / 2,182FrameCheck frames at 0 px in the master takes, x4 and x8 exact
54distinct pas.* verbs in 21,628 logged calls (16 op logs)
136places the agents noted where the plugin fell short
7.11 GBhighest Editor RSS (Sir Stacks' first motion pass, stopped)
-14.0LUFS integrated, true peak -1.0 dB, on the release mix
The verbs the agents called most
Logged calls per verb across the op logs, top 12. The first stages were drawn mostly with pas.draw.rect; the final stages wrote their tiles as pixel text with pas.pixels.text, about one call per tile; the cast agents posed their pieces with pas.transform.free, Sir Stacks alone 1,571 times.
Agent wall time, as the logs record it
Work
Minutes
Sir Stacks: still, overlap pass, motion
18, 67, 38
Pip: still, motion
25, 14
Glob: still and motion
14
Brash: still, motion
31, 23
Bonk: still, motion
37, 14
Mira: still, motion
22, 10
Stages, first version (two agents)
19, 15
UI kit, credits, Doodle
11
Tool captures; Arena wall and rows
13, 15
Stages, final version: Arena, Courtyard, Rooftop, Overworld, Sketch
Level 1-5, the connecting hits, Mira floating, the fifth node; art, takes and finals
105
Credits
SIR STACKSPIPCAPTAIN PALETTEGLOBBRASHBONKMIRADOODLEWICKBOOLEAN
Asset Store images, in store order
Eleven 2400 × 1600 images: six are trailer art with callouts, four put the Studio window over the stage, and one compares the lit Archive in three render pipelines with the unlit original. Shown at a quarter of their size.
01 Captain Palette on the Rooftop, with the five-palette strip02 The Layers panel: hide state S3, groups and the Glint clip03 Brash's KO with the strip of turn frames04 The palette menu on the five library palettes05 Sir Stacks with the S0–S6 hide-state strip06 KO Grey with the Hue/Saturation settings at -10007 Mira's sketch level with five tools marked08 The Tileset and the Scratchpad (the Arena map)09 Bonk's counter, with the moss and the eyes at x210 Glob, green to pink11 The Archive with lights off, in Built-in, URP 2D and HDRP