Most beginners who search “how to make a bullet hell” want a tiny ship, readable curtains of bullets, and a score that rises when they thread the gaps — not a Touhou-density boss bible on day one. A full arcade danmaku with scripted spell cards, rank systems, and frame-perfect replays is a specialist craft. A browser dodge loop is different. A coding agent scaffolds hitboxes, pattern emitters, and graze scoring from one prompt, and AI generation covers ships, arena art, and dodge audio. On desktop or web, that means WizardGenie for the move-emit-dodge interpreter, Quick Sprites for ship and enemy sheets, SFX Gen for shot and graze clips, and optional Music Gen for a combat bed. This guide is the honest end-to-end for how to make a bullet hell in 2026, as a weekend build you can finish once.
What how to make a bullet hell actually means in 2026
The query “how to make a bullet hell” hides three intents. Some searchers want a Unity asset pack with Cave-style bosses and fifty prefab spell cards — that is engine shopping, not a minimal playable loop. A second intent is a twin-stick arena where aiming and clearing enemies matter more than reading curtains — that is a shooter tutorial, and the sibling guide on how to make a shooter game already owns that loop. The third intent, and the one this guide targets, is a browser dodge loop: a player ship with a collision radius smaller than the sprite, three pattern emitters (aimed, ring, spiral), graze scoring for near-misses, and a ninety-second stage clear. That is a weekend build, it demos the Sorceress toolset, and it is the format most bullet hell tutorial and javascript bullet hell searchers actually want.
The presentation contract is small and strict. A title screen shows the stage name, control hints (move with WASD or arrows, hold fire, survive the curtain), and Play. The play screen shows the ship, a dense but readable bullet field, score and graze counters top-left, lives top-right, and optional mute toggle. When a bullet passes inside the graze ring without touching the hitbox, bump graze and play a soft tick. When a bullet hits the hitbox, lose a life or end the run. The bullet hell overview on Wikipedia (verified 2026-08-28) traces the genre from Batsugun (1993) through Cave and Touhou, and documents the fairness trick that still defines the form: only a small part of the ship collides. Cite that page when you write your itch.io blurb so players know you shipped a danmaku dodge loop, not a twin-stick arena with denser bullets bolted on.
The bullet hell dodge loop in one minute (move, emit, dodge, graze, clear)
Five moving parts, repeated until the player dies or clears the stage. First, move — read a keys Set each frame and update ship position with clamped bounds. Second, emit — pattern tables spawn bullets into an object pool on timers or enemy fire events. Third, dodge — advance every active bullet by velocity times delta time and cull off-screen entries. Fourth, graze — if distance to player is between hit radius and graze radius, award points once per bullet. Fifth, clear — when the stage timer ends or the boss HP hits zero, show STAGE CLEAR and a graze bonus. Homing missiles, spell-card phases, and rank systems are polish layered after one honest ring pattern is readable at sixty frames per second.
Pick your engine for how to make a bullet hell: canvas, Phaser, or WizardGenie
Three good targets in 2026, each with a different trade-off. Vanilla JavaScript with canvas is the honest default and the pick this guide recommends for a first build. One <canvas> draws the arena, ship, and bullets. Track input with a keys Set, run the loop with requestAnimationFrame, and resolve hits with circle distance checks. Total code footprint for a working browser danmaku game is under 500 lines including pool reuse, three emitters, graze scoring, and save for high score. The MDN Canvas API docs cover drawing, and the requestAnimationFrame guide covers smooth delta-time ticks.
Object pools versus push-and-splice arrays stay readable for jam scope: preallocate a fixed array of bullet objects with an active flag, recycle the first inactive slot on spawn, and skip inactive entries in the update pass. Splicing mid-frame under a dense curtain will hitch on mid-range phones — pool reuse is the single performance habit that separates a playable html5 bullet hell from a slideshow.
Phaser v4.2.1 “Giedi” (released 9 July 2026, verified 2026-08-28 on the official Phaser stable download page) becomes the right pick if you want Arcade Physics overlap callbacks, particle trails on bullets, or a Scene stack for title-stage-results with tweened pattern transitions. Phaser does not invent your pattern math — you still need the same aimed, ring, and spiral emitters. Use Phaser when particle trails and multi-phase bosses are the product; use raw canvas when the product is a danmaku pattern tutorial people can read in one sitting.
WizardGenie is not a separate rendering engine — it scaffolds whichever of the two you pick from a single natural-language prompt. WizardGenie ships as both a desktop app (Windows installer with auto-update, available to Early Access supporters and above) and a no-install web build. Its coding-model lineup covers Claude Opus 4.7, Claude Sonnet 4.6, GPT-5.5, Gemini 3.1 Pro, DeepSeek V4 Pro, Kimi K2.5, Grok 4.2, and MiniMax M2.7 (verified 2026-08-28 in src/app/_home-v2/_data/tools.ts). For bullet hell loops, any frontier model scaffolds hitbox radii, pattern tables, and graze handlers in one prompt. Pair a frontier planner with a budget executor like DeepSeek V4 Pro or Kimi K2.5 for the typing pass — the Dual-agent pattern lands most projects at roughly one-fifth the single-frontier cost.