Original arcade shooter game inspired by classic space shooters like Galaga. Built with Java 21 and FXGL game engine.
- JDK 21 or higher
- Maven 3.8+
mvn javafx:runThe game automatically disables Metal rendering on macOS for compatibility. If you still experience rendering issues, you can try:
mvn javafx:run -Djavafx.options="-Dprism.order=sw"Or alternatively:
mvn compile exec:java- Move: Arrow keys (β β) or A/D
- Fire: Space or X
- Restart: R (after Game Over)
- Squad Entry: Enemies fly in along curved paths in squads, then settle into formation
- Squad Combo Bonus: Destroy an entire incoming squad before they settle = bonus points!
- Diving Attacks: After settling, enemies may dive toward the player
- Limited Ammo: Start with 5 simultaneous bullets. Slots free when bullets hit or leave screen.
- Explosions: Pixel-art explosion animations play on bullet hits and enemy/player deaths.
- Weapon Upgrades: Collect golden pickups (W) to upgrade:
- Grade 1: Single shot
- Grade 2: Double shot
- Grade 3: Triple shot
- Extra Ammo: Collect cyan pickups (+) to increase capacity (max 12)
- Death Penalty: Getting hit drops weapon grade by 1 (minimum grade 1)
- Basic (Red): Standard enemies, 1 hit
- Fast (Green): Quick and agile, 1 hit
- Tough (Purple): Armored, takes 3 hits
- Lives: 3 lives total
- Invulnerability: Brief i-frames after getting hit
- JDK 21 oder hΓΆher
- Maven 3.8+
mvn javafx:runDas Spiel deaktiviert automatisch Metal-Rendering auf macOS fΓΌr bessere KompatibilitΓ€t. Bei Rendering-Problemen:
mvn javafx:run -Djavafx.options="-Dprism.order=sw"Oder alternativ:
mvn compile exec:java- Bewegen: Pfeiltasten (β β) oder A/D
- SchieΓen: Leertaste oder X
- Neustart: R (nach Game Over)
- Squad-Einflug: Feinde fliegen in Gruppen entlang Kurvenpfaden ein und formieren sich dann
- Squad-Combo-Bonus: ZerstΓΆre eine ganze einfliegende Gruppe bevor sie sich formiert = Bonuspunkte!
- Sturzangriffe: Nach der Formierung kΓΆnnen Feinde auf den Spieler zustΓΌrzen
- Begrenzte Munition: Start mit 5 gleichzeitigen SchΓΌssen. PlΓ€tze werden frei bei Treffer oder Bildschirmrand.
- Explosionen: Pixel-Art-Explosionsanimationen bei Treffern und Schiffs-/Spielertod.
- Waffen-Upgrades: Sammle goldene Pickups (W):
- Stufe 1: Einzelschuss
- Stufe 2: Doppelschuss
- Stufe 3: Dreifachschuss
- Extra Munition: Cyan Pickups (+) erhΓΆhen KapazitΓ€t (max. 12)
- Todesstrafe: Bei Treffer sinkt Waffenstufe um 1 (Minimum Stufe 1)
- Basis (Rot): Standard-Feinde, 1 Treffer
- Schnell (GrΓΌn): Flink und wendig, 1 Treffer
- ZΓ€h (Lila): Gepanzert, braucht 3 Treffer
- Leben: 3 Leben insgesamt
- Unverwundbarkeit: Kurze Schutzzeit nach Treffer
DeltaBlade/
βββ pom.xml # Maven build configuration (FXGL 21.1)
βββ src/main/java/deltablade/
β βββ DeltaBladeApp.java # Main FXGL GameApplication
β βββ DeltaBladeFactory.java # Entity factory (spawning)
β βββ WaveManager.java # Squad spawning and combo system
β βββ EntityType.java # Entity type enum
β βββ GameVars.java # Game variables/constants
β βββ EmbeddedTextures.java # PNG decoder (8-bit RGBA only)
β βββ components/
β β βββ PlayerComponent.java # Player movement, firing, i-frames
β β βββ EnemyComponent.java # Enemy AI: entry, formation, diving
β β βββ BulletComponent.java # Projectile movement
β β βββ PickupComponent.java # Collectible behavior
β β βββ ExplosionComponent.java # Animated sprite strip playback
β βββ tools/
β βββ ExplosionEditor.java # Standalone explosion sprite editor
βββ src/main/resources/ # Resources
A standalone tool for authoring procedural pixel-art explosions and exporting them as animated sprite sheets.
Explosions are already integrated in-game via ExplosionComponent. Use this editor to create custom explosion effects.
mvn javafx:run -Pexplosions- Live 60fps preview with nearest-neighbor rendering (pixel-art style)
- Parameter controls: Duration, frame count, frame size (32/48/64/96), particle count, size over lifetime, color gradient (core/mid/smoke), gravity, outward velocity, drag
- Layer toggles: Fire, Sparks, Smoke, Shockwave
- Presets: Hit (tiny sparks), Ship (medium fire+debris), Tough (fatter orange), Boss (big multi-layer), Plasma (cyan/magenta), Sparks
- Playback controls: Play, Pause, Restart, frame scrubbing, loop toggle
- Seed control: Reproducible explosions via seed field + Randomize button
- Sprite Sheet: Click "Sprite Sheet exportieren..." β saves PNG + JSON sidecar
- Individual Frames: Click "Einzelframes exportieren..." β saves numbered PNGs + JSON
Exported PNGs are 8-bit RGBA, non-interlaced (color type 6), compatible with the game's EmbeddedTextures.decodePng().
Explosions are played via ExplosionComponent. To add custom sheets, embed them in EmbeddedTextures with keys like explosion_custom.png and spawn via:
spawn("explosion", new SpawnData(x, y).put("variant", "custom"));mvn javafx:run -Pexplosions- Live 60fps Vorschau mit Nearest-Neighbor Rendering (Pixel-Art Stil)
- Parameter: Dauer, Frame-Anzahl, Frame-GrΓΆΓe, Partikelzahl, GrΓΆΓe ΓΌber Lebenszeit, Farbverlauf (Kern/Mitte/Rauch), Gravity, Outward-Velocity, Drag
- Layer-Toggles: Feuer, Funken, Rauch, Schockwelle
- Presets: Treffer, Schiff, Tough, Boss, Plasma, Funken
- Playback: Play, Pause, Restart, Frame-Scrubbing, Loop
- Sprite Sheet: "Sprite Sheet exportieren..." β PNG + JSON Metadaten
- Einzelframes: "Einzelframes exportieren..." β nummerierte PNGs + JSON
Exportierte PNGs sind 8-bit RGBA, nicht-interlaced β kompatibel mit EmbeddedTextures.decodePng().
# Compile only
mvn compile
# Quiet compile (no output on success)
mvn -q compile
# Package as JAR
mvn package
# Clean build
mvn clean installBuilt with FXGL's Entity-Component-System:
- GameApplication: Main game class extending FXGL's
GameApplication - WaveManager: Controls squad spawning, entry paths, and combo bonuses
- EntityFactory: Creates game entities (player, enemies, bullets, pickups)
- Components: Modular behavior attached to entities
PlayerComponent: Movement, firing, invulnerability framesEnemyComponent: State machine (ENTERING β FORMATION β DIVING)BulletComponent: Projectile physicsPickupComponent: Collectible animation and effects
- ENTERING: Flying along curved path toward formation slot
- FORMATION: Hovering in place, may randomly dive
- DIVING: Attacking toward player position
The architecture is ready for future features:
- Shop system between waves
- Shield power-ups
- Boss enemies
- Scoop mechanic for bonus collection
- Sound effects and music
- FXGL - JavaFX Game Library by Almas Baimagambetov
- JavaFX 21 - Graphics and UI
- Java 21 - Language
The pixel art sprites used in this game are from the Space Shooter Pack by RGS_Dev (Raphael GonΓ§alves).
- Asset Pack: Space Shooter Pack - Pixel Art 2D by RGS_Dev
- License: Free to use in games. Do not resell or redistribute as an asset pack.
Die Pixel-Art-Sprites in diesem Spiel stammen aus dem Space Shooter Pack von RGS_Dev (Raphael GonΓ§alves).
DeltaBlade is an original game built with FXGL and pixel art assets by RGS_Dev.