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
- Pump and aimTwo pump dials: drag the collar to set the water-jet angle, tap or hold to build pressure. Faster taps mean a stronger stroke.
- Score from aboveA basket only counts when the ball drops through the hoop from above.
- 15 hand-checked stagesWorld 1, Coral Cove, with moving hoops, impellers, sliders, lifts and vents.
- Missions and badgesEach stage awards up to three ball badges for score, speed and skill.
- World RecordsA nickname-based leaderboard backed by a server, plus personal records saved on the device.
- Verified physicsFixed-step deterministic physics, with every stage's three-point route checked by simulated bots.
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.