Skip to content

Latest commit

Β 

History

43 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

DeltaBlade

Original arcade shooter game inspired by classic space shooters like Galaga. Built with Java 21 and FXGL game engine.

Java FXGL License


πŸ‡¬πŸ‡§ English

Requirements

  • JDK 21 or higher
  • Maven 3.8+

How to Run

mvn javafx:run

The 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

How to Play

  • Move: Arrow keys (← β†’) or A/D
  • Fire: Space or X
  • Restart: R (after Game Over)

Game Features

Wave System

  • 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

Combat

  • 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)

Enemies

  • Basic (Red): Standard enemies, 1 hit
  • Fast (Green): Quick and agile, 1 hit
  • Tough (Purple): Armored, takes 3 hits

Survival

  • Lives: 3 lives total
  • Invulnerability: Brief i-frames after getting hit

πŸ‡©πŸ‡ͺ Deutsch

Voraussetzungen

  • JDK 21 oder hΓΆher
  • Maven 3.8+

Starten

mvn javafx:run

Das 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

Steuerung

  • Bewegen: Pfeiltasten (← β†’) oder A/D
  • Schießen: Leertaste oder X
  • Neustart: R (nach Game Over)

Spielmechaniken

Wellen-System

  • 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

Kampf

  • 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)

Feinde

  • Basis (Rot): Standard-Feinde, 1 Treffer
  • Schnell (GrΓΌn): Flink und wendig, 1 Treffer
  • ZΓ€h (Lila): Gepanzert, braucht 3 Treffer

Überleben

  • Leben: 3 Leben insgesamt
  • Unverwundbarkeit: Kurze Schutzzeit nach Treffer

Project Structure

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

πŸŽ† Explosion Editor / Explosions-Editor

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.

πŸ‡¬πŸ‡§ Running the Editor (English)

mvn javafx:run -Pexplosions

Features

  • 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

Exporting

  1. Sprite Sheet: Click "Sprite Sheet exportieren..." β†’ saves PNG + JSON sidecar
  2. 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().

In-Game Integration

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"));

πŸ‡©πŸ‡ͺ Editor starten (Deutsch)

mvn javafx:run -Pexplosions

Funktionen

  • 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

Exportieren

  1. Sprite Sheet: "Sprite Sheet exportieren..." β†’ PNG + JSON Metadaten
  2. Einzelframes: "Einzelframes exportieren..." β†’ nummerierte PNGs + JSON

Exportierte PNGs sind 8-bit RGBA, nicht-interlaced β€” kompatibel mit EmbeddedTextures.decodePng().


Building

# Compile only
mvn compile

# Quiet compile (no output on success)
mvn -q compile

# Package as JAR
mvn package

# Clean build
mvn clean install

Architecture

Built 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 frames
    • EnemyComponent: State machine (ENTERING β†’ FORMATION β†’ DIVING)
    • BulletComponent: Projectile physics
    • PickupComponent: Collectible animation and effects

Enemy States

  1. ENTERING: Flying along curved path toward formation slot
  2. FORMATION: Hovering in place, may randomly dive
  3. DIVING: Attacking toward player position

Extensibility

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

Technologies

  • FXGL - JavaFX Game Library by Almas Baimagambetov
  • JavaFX 21 - Graphics and UI
  • Java 21 - Language

Credits / Danksagungen

Pixel Art Assets

The pixel art sprites used in this game are from the Space Shooter Pack by RGS_Dev (Raphael GonΓ§alves).

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.

About

Warblade-inspired JavaFX shooter (original assets)

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages