BulletHeaven is a fast-paced Java action game inspired by the luminous vector aesthetic and kinetic combat of Geometry Wars. The player fights through increasingly dynamic environments filled with enemies, projectiles, hazards, and emergent interactions.
Unlike traditional bullet-heaven games that rely heavily on automatic attacks, BulletHeaven gives the player direct control over combat. The player can turn, aim their weapon independently, control the angle of fire, and strafe while shooting. Survival therefore depends on positioning, precision, movement, and deliberate target selection—not simply on choosing upgrades and avoiding contact.
The game uses a mostly vector-based visual language: sharp geometric forms, vivid colors, glowing effects, dense particle systems, and highly readable motion. Its environments should feel active and reactive rather than like static arenas. An entity component system supports this design by allowing enemies, hazards, projectiles, environmental objects, and effects to combine behaviors in flexible and surprising ways.
During a run, the player develops a build through five mythological schools:
- School of Mercury — Movement: Speed, agility, strafing, evasion, and mobility.
- School of Jupiter — Strength: Direct offensive power, weapon impact, and destructive force.
- School of Janus — Duplication: Additional attacks, mirrored effects, copies, and multiplication.
- School of Minerva — Defense: Protection, resilience, control, and tactical survival.
- School of Diana — Familiars: Autonomous companions, summoned entities, and coordinated attacks.
Each school represents a recognizable gameplay identity while allowing its upgrades to interact with those from other schools. These combinations should produce distinct builds and encourage experimentation across repeated runs.
The intended experience is a blend of bullet-heaven escalation and skill-based multidirectional combat: immediately readable, visually spectacular, mechanically expressive, and capable of producing unexpected situations through the interaction of many simple entities.
BulletHeaven requires JDK 22 or newer and uses the checked-in Gradle wrapper. No system Gradle installation is required.
On Windows:
.\gradlew.bat test
.\gradlew.bat :core:tier2Benchmark
.\gradlew.bat lwjgl3:run
.\gradlew.bat lwjgl3:jarOn Linux or macOS:
./gradlew test
./gradlew :core:tier2Benchmark
./gradlew lwjgl3:run
./gradlew lwjgl3:jarThe runnable desktop JAR is written beneath lwjgl3/build/libs/. The desktop launcher uses assets/ as its working directory.
The application opens a resizable combat run with independent movement and aim, continuous fire, three CR 1 enemy roles, collectible XP shards, paused school-upgrade choices, health and shield, death, immediate restart, vector effects, cyclic Gravity Spiral and Epoch Wave arena forces, and diagnostics. Its simulation uses an Ashley entity component system with deferred entity changes, spatial collision queries, deterministic replay checks, and explicit population budgets. Run all automated tests and the Tier 2 benchmark before integrating a change.
| Action | Keyboard and mouse | Gamepad |
|---|---|---|
| Move | WASD | Left stick |
| Aim | Mouse | Right stick |
| Fire | Left mouse button | Right trigger or shoulder |
| Restart after defeat | Enter or R | A button |
| Choose an upgrade | Move into a physical boon | Move into a physical boon |
| Pause / build summary | Escape | Start button |
| Continue after victory | Enter | A button |
| Fresh run after victory | R | — |