Flukz — open-source shmup community resource open-source GPL devlog  ·  about
// indie shmup & game-dev resource

Shmup Design · June 30, 2026

The Graze System in Shmups: Near-Miss Scoring and Resource Design

Most shmup players think of bullet proximity in binary terms: you were hit or you were not. The graze system breaks that binary into a third state — close enough to earn a reward, far enough to survive. Done well, it transforms every dense bullet pattern into an opportunity rather than a hazard, and makes score runs look visually spectacular. Done poorly, it rewards random survival instead of intentional play.

Two hitboxes, one ship

The graze system requires every player entity to carry two distinct hitboxes at all times. The damage hitbox is the small, usually pixel-scale box that actually kills the player on contact with a bullet. The graze hitbox is a larger concentric area — typically three to five times the radius of the damage hitbox — that detects when a bullet passes through proximity range without triggering a kill.

The important rule: a bullet entering the graze zone awards the graze, then the bullet continues on its path. The bullet is not consumed, not deflected, and not neutralised. It remains active and dangerous. This means that grazing a volley of twenty bullets requires weaving through all twenty, not just touching the first.

In implementation, most engines handle this naturally by giving the graze zone a different collision layer from the damage hitbox. Enemy bullets check against the damage layer; the graze zone fires a detection signal on overlap-enter. A flag per-bullet prevents the same bullet from awarding multiple grazes in a single pass — the graze triggers once per bullet, not continuously while the bullet overlaps.

What graze should yield

The resource awarded by grazing defines the economic role the system plays in your game. The three most common designs:

Yield type Effect Design implication
Score pointsFlat or multiplied point bonus per grazeScoring layer only; no gameplay resource impact
Bomb gauge fillEach graze fills a small portion of the bomb meterSkilled play generates defensive resources; reduces bomb scarcity
Power/charge buildupGraze charges a special attack or multiplierAggressive proximity play unlocks offensive options
HybridPoints plus gauge fill simultaneouslyHigh reward ceiling, requires careful balancing so bomb generation does not trivialise the game

Bomb gauge graze systems require the most balancing attention. If the gauge fills too quickly, players accumulate more bombs than they can use and the resource becomes meaningless. The target is that a player running maximum-proximity routes should earn roughly one bomb per stage section, not one per pattern. Testing with experienced players is the only reliable calibration method.

Visual feedback

Graze feedback must be immediate, readable, and non-intrusive. The player is already processing dense bullet patterns at maximum attention; feedback that demands additional visual focus competes with survival information and causes mistakes.

The most effective graze indicators use peripheral triggers: a brief ring flash around the player sprite, a small particle spray at the graze contact point, or an additive flash on the bullet itself as it clears the graze zone. Score number popups for individual grazes are rarely worth the visual noise unless they are small, fast-fading, and positioned consistently relative to the player rather than at the bullet position.

Sound design reinforces visual graze feedback without requiring the player to look anywhere. A short, high-frequency metallic tick that fires once per graze gives an auditory count of proximity passes. Keep it quiet and dry — it needs to be perceptible in a mix of ongoing gunfire without becoming irritating on a run through a thirty-bullet ring burst.

Radius tuning and feel

The graze radius determines how hard the system is to engage with. A graze zone that is too small means only the most precise players will ever trigger it. A zone that is too large rewards casual movement as grazes and collapses the distinction between intentional proximity and accidental nearby movement.

A practical starting radius is approximately the diameter of the player sprite visible hull — the full drawn character, not just the damage hitbox. This makes the graze zone feel spatially anchored to the ship outline, so players develop an intuitive sense of the engagement distance without needing to consciously calculate hitbox geometry.

Tune the radius by watching new players on their second or third session. If they never trigger a graze accidentally, the zone may be too small to discover organically. If they are triggering grazes constantly without aiming to, the zone is undermining the skill expression the system is meant to create.

Design intent and player motivation

The graze system exists to give expert players a reason to intentionally inhabit the most dangerous space in the play field. In a game without grazes, the optimal strategy is to maintain maximum distance from bullets at all times. In a game with grazes, proximity has positive expected value for a player who can control it, and the game becomes a negotiation between safety margin and resource gain.

This design intent has one important implication: the rewards for grazing must be meaningful enough that choosing to engage with the system at the expense of safety margin feels like a real and worthwhile trade. If the bomb gauge fills just as fast from item collection as from grazing, no rational player will graze intentionally. The system needs to offer a payoff that is only available by getting close.

The graze system is one of the few mechanics in shmup design that makes the game's hardest content look beautiful. A score run through a tight bullet ring, with graze ticks firing every frame, is visually distinct from defensive play and communicates mastery without explanation. That spectacle is worth the implementation complexity.