Back to Projects
In DevelopmentMobile Game

Aqua Basket

A pump-driven water-basketball physics game. Aim the cannon, pump the pressure and drop the ball through the hoop from above, in a toy aquarium where every stage has its own hoop, terrain and obstacles.

Platforms
iOS (iPhone and iPad)
Built with
Flutter → Godot 4.7 · Cloudflare Workers
Content so far
World 1: 15 stages, 45 badges
Status
Internal testing

Most physics games ask you to flick or drag once and watch. Aqua Basket asks for rhythm: you pump. Tapping a pump dial builds water pressure, and the angle of the jet decides how far the ball travels, so a toy aquarium becomes an instrument you play with your thumbs. It is a short-round stage game, still in internal testing, built around readable puzzles and fair records.

What it does

Design choices

Pump for force, angle for distance

Early measurements showed some angles were dead zones. The design was reworked so tap rate sets force and angle sets reach: slow tapping lifts the ball near the cannon, faster tapping carries it across the tank. Every stage has two cannons.

Score only from above

A basket counts only when the ball drops through the hoop downward. A level audit found that balls shot upward through the rim could score, so the net now blocks upward entry. The rule keeps stages honest and stops camping under the hoop.

Readable puzzles, no hidden mechanics

The design pillars are feel, readable puzzles, one more try, and fair records. Obstacles move by visible rules, there is no invisible suction, and restarting takes about a second. Each stage has three ball badges for score, speed and skill (limited pump units).

Honest scope: one world so far

Only World 1, Coral Cove, is built: 15 stages and 45 badges. The plan describes 5 worlds and 50 stages, but that is not made yet. The game is on iOS internal TestFlight only; there is no store release, and Android is just a project scaffold.

How it's built

Deterministic 1/120 s physics

The tank is a fixed 1000 by 1250 logical space stepped at 1/120 s, so 60 Hz and 120 Hz phones, phones and tablets all produce the same result. That is what makes a shared leaderboard meaningful; records are counted in ticks.

Bot-verified stages

Each stage has a recorded route that earns three points, replayed in the physics as a test. A level audit also ran simulated players on all 15 stages and produced a fix list: stuck balls, props that changed nothing, and a rim loophole. The report notes the numbers are model results, not human tests.

Flutter to Godot, replayed to match

The game began in Flutter and is being ported to Godot 4.7. All 15 route replays give the same score, seconds and pump counts in both versions, and 166 physics unit tests pass. A later net and cannon fix is still waiting to be ported to Godot.

Light server, honest about cheating

World Records run on Cloudflare Workers with D1 and Drizzle, storing nickname, optional diver picture and ranks. Clients sign requests with a per-install RSA key. The docs say this is a casual leaderboard and not cheat-proof, and local records are always kept on the device.

All Projects Contact