Skip to main content
← Back to Projects Screenshot of Asteroid Blaster

Asteroid Blaster

A full modernization of my 2012 PhoneGap game into a maintainable Godot 4.6 mobile release with state-driven gameplay, resilient input handling, and repeatable iOS/Android shipping workflows.

Godot 4.6GDScriptiOSAndroidXcodeProcedural RenderingData-Driven BalancingMobile QA

I originally shipped Asteroid Blaster in 2012 as an HTML5 + PhoneGap game. The current version is a full rebuild in Godot 4.6 focused on maintainability and modern mobile behavior, not just visual parity.

It is an arcade-style asteroid defense game where the player steers a ship to protect Earth from falling asteroids. You launch from a home screen, survive increasingly difficult waves, and play until lives reach zero.

It is built in Godot 4.6 with GDScript and ships as a portrait mobile game for iOS and Android. The game uses a scene-based structure with a central controller and explicit game states (HOME, PLAYING, PAUSED, GAME_OVER) to keep gameplay and UI flow predictable.

Current gameplay and systems include:

  • Auto-fire arcade combat with collision-driven scoring and earth-impact life loss
  • Progressive wave scaling (count and speed) with viewport-aware spawn scaling by device size
  • Weighted asteroid sizing (small/medium/large) and tunable balance via data/game_balance.tres
  • Layered input with deterministic fallback: keyboard, touch-drag follow, and accelerometer steering
  • Safe-area-aware mobile layout and persisted music/SFX settings

Visuals are a mix of imported assets and procedural rendering in GDScript (ShipVisual, AsteroidVisual, EarthHorizon, Explosion, Starfield) so the look stays consistent across screen sizes.