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.
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.