Skip to content

Releases: moWerk/asteroid-blaster

Blaster v2.0

28 Mar 21:13

Choose a tag to compare

A ground-up rewrite of the core engine, introducing a UFO-driven power-up system, nine distinct weapon modes, progressive level unlocks, and a full visual feedback overhaul. The game is faster, harder, and considerably more chaotic than v1.1.

Architecture

The scene graph was refactored to eliminate all z: values. Paint order is now controlled entirely by declaration order via four named layer Items — shotLayer, asteroidLayer, vfxLayer, and the HUD stack. Dynamic objects are parented to their respective layers at createObject time. The game over container is a sibling to gameContent declared after it, so it always paints on top without any stacking workarounds.

Three components were extracted from inline Component blocks into standalone QML files: ExplosionShader.qml, ScoreParticle.qml, and Ufo.qml. DeathShader.qml was ported from asteroid-dodger and extended with an autoPlay property for fire-and-forget use. All four are registered in resources.qrc.

Persistence moved from Nemo.Configuration / ConfigurationValue to a C++ QSettings singleton (GameStorage) with explicit path construction to avoid HOME ambiguity in the Lipstick session environment.

All gameplay tuning lives in a single QtObject { id: balance } block. Magic numbers are gone.

UFO and Power-up System

The UFO is not a scripted enemy — it is registered in activeAsteroids as an extra-heavy asteroid (mass = size² × 8) and participates in the existing elastic collision physics with no special-casing. It navigates a four-waypoint zigzag path with per-spawn random jitter on intermediate waypoints.

Nine power-up types are colour-coded and weighted. The UFO cycles colours on a three-second interval driven by a weighted random selection that filters by current player level. After a hit the UFO enters a flat grey state for the power-up duration, then pulses from near-black to white through a twelve-second cooldown before revealing a new colour. Hit detection is gated on the dimmed flag throughout.

A gift mechanic fires two seconds after each unlock notification: if no power-up is currently active the newly unlocked type is granted directly, letting the player associate colour with function before encountering it on the UFO.

The power-up state machine is: activatePowerup()powerupTimerufoCooldownTimerdimmed = false. Nuke and shield bypass the duration timer with a 500ms interval to keep the UFO cooldown chain intact.

Wave Design

Waves advance when all large and mid asteroids are cleared. Small asteroids persist across waves and accumulate up to a cap of 100, creating a cross-wave debris field that rewards tactical hoarding and punishes neglect.

Visual and Feedback

  • Death cinematic: DeathShader expanding ring plays for one second before the game over screen appears. All timers stop immediately but gameOver is deferred to deathSequenceTimer.
  • UFO hit ring: same shader instanced at hit position with the power-up colour, autoPlay: true for self-destruction.
  • Level advance: full-screen cyan flash (200ms in, 800ms out) with simultaneous gold pulse on the level number.
  • Power-up bar: fades in on activation and fades out over the final second of duration via SequentialAnimation.
  • Shield hitbox: Item opacity steps down from 1.0 to 0.4 as shield count falls, using the Shape's opacity property since ShapePath.strokeColor alpha is silently ignored by the Qt Shape renderer.
  • Score particles themed gold to match the score display. Perimeter bonus gold, outside kills dark gold.
  • Three haptic patterns in use: press for asteroid hits and shield absorption, notif_strong for power-up collection and game over.

Balance

  • Waves advance on large and mid clear only
  • Small asteroid cap 100
  • UFO speed 1.0, power-up duration 10s, cooldown 12s
  • Nine power-ups gated across levels 1–12
  • Starting shields 2

v1.1

25 Mar 23:47

Choose a tag to compare

Asteroid Blaster v1.1 - Release Notes (March 26, 2025)

Buckle up, space cadets—v1.1 is here with smoother gameplay, slicker visuals, and a dash of dev nostalgia! Since v1.0, we’ve blasted through bugs, tuned the chaos, and polished the experience. Here’s what’s new:

Features & Improvements

  • Mass-Based Asteroid Collisions: Large asteroids now shrug off mids and smalls, mids resist smalls—size matters! (No more small fries bullying the big boys.)
  • Dimming Layer: Pause and game over screens now dim game content with a 50% opacity black overlay—clean, crisp, and no blur-induced migraines.
  • Slower Asteroids: All asteroid speeds dropped 10% (large: 0.3 → 0.27, mid: 0.4 → 0.36, small: 0.6 → 0.54)—less frantic, more fun.
  • FPS Graph Returns: Debug mode resurrects the fpsGraph, plotting 0-120 FPS from gameTimer.fpsHistory—a dev relic restored!
  • Score Particle Polish: Doubled duration (1000ms → 2000ms) with InOutQuad easing—points linger longer over explosions.
  • Visual Cleanup: Smaller pauseText (24 → 22), no gray overlay on game over, and visible game content throughout.

Bug Fixes

  • Z-order snafus squashed—asteroids no longer shine through the dimming layer (dimmingLayer z: 7 blankets all game content).

Notes

  • Dropped the FastBlur experiment—too much hassle, not enough payoff. Dimming layer FTW!
  • Gameplay’s now more forgiving but still challenging—tilt, shoot, and survive!

Grab your accelerometer and blast some rocks—v1.1’s ready to roll!

Asteroid Blaster v1.0 Release

23 Mar 22:12

Choose a tag to compare

Released: March 23, 2025

Welcome to Asteroid Blaster v1.0! This release marks a significant milestone, bringing a polished gameplay experience with refined mechanics, enhanced visuals, and new features to make blasting asteroids more fun than ever. Since v0.9, we've focused on gameplay balance, bug fixes, and UX improvements to deliver a solid 1.0. Here’s what’s new and improved:

New Features

  • Score Perimeter: Added a Dims.l(55) circular zone centered on-screen with a #0860C4 1px outline and #010A13 fill. Destroying asteroids inside doubles points (e.g., large: 20→40, mid: 50→100, small: 100→200), with #00FFFF (cyan) score text inside and #67AAF9 outside. Inner hits flash the outline to #FFFFFF and fill to #074588 for 100ms, fading back over 1s.
  • Dynamic Spawn Rate: Asteroid spawn interval now decreases from 3000ms at level 1 to 500ms at level 20+, making higher levels progressively more intense while keeping the first spawn instant.

Enhancements

  • Gameplay Balance:

    • Increased starting shield from 2 to 3 for better early-game survivability.
    • Adjusted auto-fire: timer from 200ms to 150ms, shot size from 1.5x3 to 1x4, speed from 5 to 8 for faster, slimmer projectiles.
    • Tweaked asteroid spawn timer from 4s to 3s initially, with instant first spawn at game start and level-up.
    • Fixed asteroid speeds to constant values (large: 0.3, mid: 0.4, small: 0.6) instead of level-scaling, balancing difficulty via quantity alone.
    • Enlarged large asteroids from Dims.l(18) to Dims.l(20) and sped up rotation (multiplier from 1000ms to 800ms).
  • Visual Polish:

    • Simplified player visuals by removing the afterburner effect rectangle.
    • Enhanced explosions: Increased particle area by ~33% (e.g., large: 36x36 to 42x42), added red #DD1155 explosions on player-asteroid collisions.
    • Refined UI: Updated text sizes, colors (e.g., level number to #F9DC5C), and styles (e.g., SemiBold over Bold), tightened margins, and enlarged game-over text.
  • UX Improvements:

    • Saved highscore on game-over screen instead of restart, fixing a bug where closing the app discarded it.
    • Score particles now fade from solid color (no initial opacity variance) with Medium font style.

Bug Fixes

  • Fixed highscore not persisting when app closed before restart.
  • Removed unintended level-based asteroid speed scaling from base code.
  • Eliminated initial spawn delay at game start and level transitions.

Happy blasting!

Asteroid Blaster v0.9 Release

21 Mar 19:36

Choose a tag to compare

Welcome to the initial release of Asteroid Blaster, a vector-style space shooter for wearables! This v0.9 version brings a fully playable game with core mechanics inspired by classic space shooters, tailored for tilt-based control on modern devices.

Key Features

  • Vector Asteroids: Randomly generated, spiky outlines (5-7+ points) in three sizes—large (18 dims), medium (12 dims), small (6 dims)—rotating slowly (±5-15°/s) around their own axes.
  • Level System: Begins with 5 large asteroids at level 1, adding 1 per level (6 at level 2, etc.), spawned 4 seconds apart. Levels progress only when all parts are destroyed.
  • Screen Wrapping: Asteroids wrap around screen edges, requiring complete destruction to clear them.
  • Player Mechanics:
    • Tilt-controlled ship rotation with a refined hitbox (11 dims, ~20% smaller than initial size).
    • Autofire shots (1.5 dims width, 3 dims height) at 200ms intervals, precisely emitted from the ship’s tip.
  • Collisions:
    • Asteroid-asteroid: Realistic billiard-ball physics with equal mass deflection.
    • Shot-asteroid: Splits asteroids (large → 2 medium, medium → 2 small, small → gone), awarding 100/50/20 points.
    • Player-asteroid: Costs 1 shield per hit, ending at 0 shields with a game over screen.
  • Scoring and Shields: 100 points for large, 50 for medium, 20 for small asteroids; +1 shield every 10,000 points.
  • Game Flow:
    • Pause freezes asteroids and player movement.
    • Game over screen displays score, level, high score, high level, and a "Try Again" button, skipping calibration on restart using prior baseline values.
  • Tweaks: Asteroid speeds set to 0.12 (large), 0.22 (medium), 0.32 (small) for balanced pacing.

Known Issues

  • No visual or audio cues for shield loss beyond haptic feedback.
  • Calibration baseline persists across restarts; significant device orientation changes may require manual recalibration (future feature).

Next Steps

  • Add sound effects and visual hit indicators.
  • Implement optional calibration reset option.
  • Polish UI and balance gameplay based on feedback.

How to Play

  1. Launch the game and complete the initial calibration (tilt to set baseline).
  2. Tilt to rotate your ship, firing automatically at asteroids.
  3. Destroy all asteroid parts to advance levels; survive using shields.
  4. Tap to pause or restart from game over.

Enjoy blasting asteroids, and share your feedback for v1.0!