dev.

Ball Blast

Wave-based cannon shooter built with Flame — drag to aim, destroy falling numbered balls before they cross the death line, pick upgrades after every boss kill.

Description

A cannon sits at the bottom of the screen. Balls fall from the top, each showing a hit-point number. Fire bullets upward and wear them down before any ball crosses the death line. Every fifth wave skips the normal spawn and drops a single boss ball — much tougher, but killing it pauses the run and hands you an upgrade pick.

The upgrades stack. Start with a bare single-shot cannon and work toward rapid-fire, multi-shot spread, ricochet bullets, and doubled damage. Each boss run builds on the previous one, so a long game feels meaningfully different from the opener.

Features

  • Wave-based progression — enemy count and fall speed increase every wave
  • Boss every 5th wave — substantially higher HP, triggers upgrade screen on death
  • Five stackable upgrades — Rapid Fire, Blast Radius, Multi-Shot, Double Damage, Ricochet
  • Fluid drag controls — GestureDetector pan input keeps cannon movement responsive on Android
  • Explosion particles — gravity-affected burst on ball death

Upgrades

| Upgrade | Effect |

|---------|--------|

| Rapid Fire | Fire rate multiplied ×1.25 per stack |

| Blast Radius | Bullet radius multiplied ×1.4 per stack |

| Multi-Shot | Three bullets per fire (spread) |

| Double Damage | Damage per hit ×2 |

| Ricochet | Bullet bounces once off the top of the screen |

How to Play

  1. 1.Drag left or right to move the cannon
  2. 2.The cannon fires automatically — focus on positioning
  3. 3.Destroy all balls before any reaches the death line
  4. 4.On wave 5, 10, 15 … a boss ball appears — kill it to open the upgrade screen
  5. 5.Pick one of three offered upgrades and continue

Tech Stack

  • Engine: Flame 1.30.x on Flutter
  • Input: Flutter GestureDetector (pan) forwarded to game via method calls
  • Collision: AABB distance check — O(n²) over small bullet × ball lists

Changelog

Feedback

Found a bug? Have a feature idea? Something unclear? Use the form below.

Describe what happened, what you expected, and your environment.