Skip to content

About

An isometric 3D bullet-hell arena game for the browser. Four dashes that never go on cooldown, one attack dash, and eleven chord combos you trigger by pressing dash keys together.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

DASH//BREAK

An isometric 3D bullet-hell arena game for the browser. Four dashes that never go on cooldown, one attack dash, and eleven chord combos you trigger by pressing dash keys together.

Built with Vite, TypeScript and Three.js. All sound and music are generated in code with the Web Audio API, so there are no asset files to load.

Controls

Key Action
Mouse Aim. Every dash travels toward the cursor.
E Phantom Dash: a balanced dash that leaves a trail of afterimages
W Blink Dash: the quickest dash (0.11 s)
A Phase Dash: short and safe, with the longest i-frames
B Reversal Dash: a short recoil, then the longest launch
R Rupture Dash: the attack dash, which cuts through everything in its path
Esc Pause

The four plain dashes have no cooldown and give brief invulnerability. Dashing spends Phase, which refills quickly. With low Phase the dashes still work, but their i-frame window is shorter.

Combos

Press dash keys within the combo window (110 ms by default, adjustable in Settings). The game always uses the largest chord you pressed, and it never fires a stray single dash.

Keys Combo
E + W Cross Break
E + A Phantom Pierce
E + B Shockwave
W + A Spiral Cut
W + B Afterimage
A + B Rift Split
E + W + A Trinity Rush
E + W + B Phantom Storm
E + A + B Breaker Wave (also clears bullets)
W + A + B Rift Collapse
E + W + A + B ZERO//BREAK (ultimate)

Local development

You need Node.js 20.19+ or 22.12+ (required by Vite 8).

npm install
npm run dev        # dev server with hot reload
npm run typecheck  # TypeScript only
npm run build      # type-check, then a production build into dist/
npm run preview    # serve dist/ locally to test the production build

vite.config.ts uses base: './', so every asset path in the build is relative. The same dist/ therefore works at a domain root, at https://<user>.github.io/<repo>/, or opened from any sub-folder.

Deploying to GitHub Pages

The workflow in .github/workflows/deploy.yml builds the game and publishes dist/ on every push to main, or when you run it by hand.

  1. Make this folder the root of its own repository. GitHub only reads workflows from .github/workflows at the repository root.
  2. Push to the main branch on GitHub.
  3. On GitHub, go to Settings → Pages → Build and deployment → Source and choose GitHub Actions.
  4. Open the Actions tab and wait for "Deploy to GitHub Pages" to finish. If it ran before you changed the Pages source, re-run it.
  5. The game is then live at https://<user>.github.io/<repo>/.

Project layout

src/
  main.ts                 boot and WebGL check
  config.ts               every tuning number in one place
  game/
    Game.ts               main loop (fixed 120 Hz sim), state, wiring
    InputManager.ts       keyboard and mouse, key-repeat filtering
    ComboManager.ts       chord detection with a simultaneous-input window
    Abilities.ts          data-driven dash, combo and ultimate definitions
    Player.ts             player model, ability runner, i-frames, Phase
    Combat.ts             strikes (segment, grow, ring, wave, sweep) and hit groups
    ProjectileSystem.ts   pooled, instanced bullets with near-miss detection
    HazardManager.ts      mines, bombs, fire zones, shockwaves, warnings
    Director.ts           difficulty curve, spawns, boss timing
    ScoreManager.ts       score, multiplier chain, multi-kills, grazes
    Effects.ts            particles, slashes, rings, ghosts, lights, trail
    Arena.ts              floor, walls, pillars, skyline, lighting
    CameraController.ts   isometric orthographic camera, shake, cursor ray
    AudioManager.ts       procedural SFX and the music sequencer
    Settings.ts           localStorage settings and records
    enemies/              the enemy types, the boss, and the manager
  ui/
    UI.ts                 menus, HUD, settings, game over
    Tutorial.ts           interactive first-run tutorial
  styles/main.css

Settings

All settings are saved in localStorage:

  • master, music and SFX volume, plus mute
  • screen shake on or off
  • reduced motion
  • graphics quality (Low / High / Ultra)
  • combo window
  • aim assist (off / light / strong; applies to attacks only)

Low quality turns off bloom and shadows and lowers the particle budget. Use it on integrated GPUs.

About

An isometric 3D bullet-hell arena game for the browser. Four dashes that never go on cooldown, one attack dash, and eleven chord combos you trigger by pressing dash keys together.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages