Brick & Mortar

Devlog · Post 18 of 27

Juice - bricks that scatter, buildings that assemble and a pixel counter that caught us

· 4 min read

juicevfxgame-feeltesting

A snowy Tower Defense level seen from above, with a small scatter of brick pieces on the snow where a unit has just been destroyed.

On 22 October the owner picked four things from a list of ways to make the game more "fun and addictive", and left out several more (shared replays, daily challenges, leaderboards). The four were satisfying feedback, better build feedback, rule cards and an endless mode. This post is about the first two, which game developers call juice: everything that happens around an action that does not change the rules but changes how it feels.

The rule

All of it is presentation only. It reads the simulation and answers on real time. It never writes to the simulation. We kept to one line of sim-side code, a read-only question ("is this wave cleared?"), and checked the fingerprints afterwards: the lockstep digests came out identical, and the Tower Defense performance gate's averages held. There is also an Effects: Full / Reduced option for slow machines and for people who do not want screen shake.

What it does

The same Tower Defense level at the moment a boss arrives, with a BOSS INBOUND banner and a red screen edge
BOSS INBOUND. The red edge pulses; the camera rumbles, with a cap.
A snowy battlefield with a PERFECT CLEAR banner
A PERFECT CLEAR banner after a wave with nothing leaking through.

The building assembly, and the pixel counter

The effect we cared about most is the build: a building should not appear, it should be built. The first version threw the building's debris pieces onto the ground around the footprint and flew them in as the building rose.

The owner watched the slow-motion test clip and wrote that half the building appeared in one frame. They were right, and we could prove it. We diffed the frames and found a single frame where about 28,000 pixels changed at once, and another where pieces hung in the air for five frames after the building was complete.

The cause was clear when we looked. The pieces were placed on the ground on the placement frame, so a whole scattered pile existed at once. And the pieces were released by one clock while the hull's reveal ran on another, stepped at 20 Hz.

The second version starts every piece under the ground at its seat, with its shadow off until it clears the surface, and raises them bottom-up through the terrain. Each rises with a smooth start, a small overshoot and a 10 to 26 degree twist that unwinds as it seats. The hull's reveal now lags the pieces, so it only ever passes over what a seated piece already shows. At the finish every piece snaps to its seat in the same frame. We re-ran the same diff: the only change at the finish is the pop flash.

A strip of frames comparing the old and new build effect, with the old one showing most of the building appearing at once
Before and after, frame by frame. Top: pieces thrown on the ground, most of the building present at once. Bottom: the pieces rise through the ground in order.
A tower going up with the second version, from the slow-motion test take. Muted.

What we would do differently

Try it yourself

Pick one action your player does a hundred times, and decide what it should look, sound and feel like. Write the effect so it cannot touch the game's rules, and write the test that proves it.

Next: Filming the real game - a fixed-step recorder and a queue of 4K takes (23 October 2026)

Start from day oneAll 27 posts

Written afterwards from our project notes and commit history; dated to when the work happened.