None of Skyfall's hit feedback uses a single image asset. Every burst of feathers, every screen shake, and every floating "+40" that pops off a bird you just shot is generated with plain canvas math at the moment it happens. "Game feel" — the sense that hits actually land — usually comes from a mix of small, cheap effects stacked together rather than one expensive one, and that's exactly the approach here.

The feather burst

Every successful hit spawns a burst of ten particles from the point of impact, each one fired off at a random angle and a random speed between 60 and 140 pixels per second. From there they're just physics: a light downward gravity pulls each particle's vertical speed up over its lifetime, so the burst genuinely arcs and falls rather than just fading in place. Each particle also gets its own random lifespan, roughly half a second to just under a full second, which is what keeps a burst from looking like a single rigid animation — some feathers vanish a beat before others, the same way a real scattering of debris wouldn't disperse in perfect unison.

Screen shake as a spendable resource

Screen shake in Skyfall isn't a fixed-length animation — it's a magnitude value that gets set on impact and then decays back to zero over time, roughly thirty units a second, nudging the canvas by a small random offset every frame while it's above zero. That decay-based approach means shake intensity can scale with the moment: losing a life sets a moderate shake, while dropping a boss sets nearly double that. Because it's just a number ticking down, stacking two hits close together naturally produces a bigger, longer shake without any special-case code for "combo of impacts" — the system does that for free.

Popups that carry their own meaning

The floating score text that rises off a hit isn't just decorative — its color changes with what happened: a standard hit reads in one color, a bonus from a maxed combo reads in another, and the boss-kill bonus gets its own distinct gold tone shared with golden-bird hits. Each popup fades and drifts upward over roughly seven-tenths of a second, short enough that a fast player firing rapidly never has stacked, overlapping text clutter the screen, but long enough to actually register at a glance.

Why not just use sprite animations: procedural effects like these move and vary randomly for free — no artist time, no sprite sheet to load, and every burst looks slightly different from the last, which a fixed animation loop can't offer without hand-authoring several variants.
More from the blog: read Designing the day-to-night sky for another example of canvas-only visuals with zero image assets, or head back to the Blog index.