Graze Engine
Design brief
A vertical shooter where your best weapon charges only when enemy bullets pass within a hair of your ship.
Date: 2026-10-07 Genre: Arcade shooter Status: Playable build
Concept
Skim past enemy fire to bank charge, then spend it on a beam that burns a column clear, and the fire gets thicker and starts aiming at you. Your guns shoot on their own and barely matter. Score comes from how close you dare to fly, and the game is built around the moment you thread a ring of bullets on purpose because you need two more grazes to fire.
How to play
Survive and score. You have three ships, and each hit costs one. The run ends when the last one goes.
- Keyboard: arrows or WASD to move, Shift to slow down for precise dodging, Space (or X or J) to fire the beam, P or Esc to pause, R to restart, M to mute.
- Mouse: the ship follows the pointer. Click to fire the beam.
- Touch: drag anywhere to steer; the ship moves relative to your finger, so your thumb never covers it. Tap the BEAM button in the bottom-right corner. The pause button sits top-right.
The white dot in the middle of the ship is the only part that can be hit. The faint ring around it is the graze zone.
Core mechanics
- Graze: any enemy bullet that crosses the ring without touching the dot counts once: +4% beam charge, +0.25 to the multiplier, and a few points.
- Beam: it can fire at 25% charge and always uses the whole meter. It lasts 0.4s at minimum and 1.6s at full. While it is on, the ship slows down, enemies in the column melt, and every bullet it touches is erased and paid out at 10 points times the multiplier. Saving charge while the screen fills up is the big payout.
- Multiplier: it runs from x1 to x8 and multiplies kills, grazes and beam cash-ins. Go 1.5 seconds without grazing and it starts draining. Getting hit resets it to x1 and halves your charge.
- Mercy clear: a hit wipes every bullet within 140px and gives you 2 seconds of invulnerability, so one mistake can't chain into a second.
Progression & scoring
Difficulty goes up in steps, and each step adds a different kind of pressure. Between steps it holds steady so you can learn the new thing.
| Time | Step | What changes |
|---|---|---|
| 0s | Drones | Single straight shots every 1.5s, spawns every ~1.6s. Hard to lose here. |
| 20s | Spinners | Ships that park and fire rotating 12-bullet rings, four times each |
| 45s | Snipers | Slide in from the side and track you with a dashed red line for 0.7s, which goes solid and flashes for 0.35s before a 3-shot burst |
| 70s | Weavers | Swing side to side pouring a two-arm spiral, 2s on and 1.2s off |
| 95s | Crossfire | Spawns every ~1.1s, drones fire 3-way spreads |
| 125s | Overdrive | All bullets 20% faster. This is the cap. |
Kills are worth 100 (drone), 250 (sniper), 300 (spinner) and 500 (weaver), times the multiplier. Your best score is saved in the browser, and the game-over screen shows how long you lasted and which step you reached.
Look & feel
Neon on near-black: a cyan ship, hot magenta bullets, orange sniper rounds and amber graze sparks, over a violet-to-navy gradient with scrolling stars. Everything is drawn with canvas shapes; there are no image files. Grazes throw sparks and play a quick high blip whose pitch rises with the multiplier. Big kills freeze the game for 50ms and shake the screen. A hit flashes the screen magenta, holds for 120ms and bursts into particles. All sound is synthesized with WebAudio.
What makes it fun
- The safe move and the scoring move point in opposite directions. Sitting far from the bullets keeps you alive and gets you nothing. The ring rewards flying close, and the dot punishes you for flying a few pixels too close.
- Waiting to fire is a real choice. A spinner's ring is coming down and you have 60% charge. Fire now and clear it, or slip through for six more grazes and erase a screen of bullets at x6 instead?
- The sniper line is the clearest moment in the game. You can see exactly where the shot will go and you have a third of a second to leave, or to stay just beside it and graze all three rounds.
- Each step arrives with a named banner, so you know what ended the run: "I died to the first weaver." You can plan for that on the next go.