Carrom Circuit | Flutter Board Game

Bluehost Shared Hosting

Carrom Circuit

A complete, finished carrom board game built with Flutter and Flame. It runs entirely offline: no backend, no login, no server bill, and nothing to keep running once you have shipped it. Everything a player earns is stored on their own device.

This is not a demo or a starter template. It is the game, with the rules, the AI, the economy, the shop, the ads and the documentation finished, and a test suite that covers them.

Demo app

Try it on a real device before you buy. The game is published on Google Play, so you can play the actual build rather than watch a video:

Carrom Circuit on Google Play

AI disclosure

This item was developed with AI assistance. The code, the documentation, the Canvas-drawn artwork and the synthesised sound effects were produced with AI tooling and reviewed by the author.

The app itself contains no AI or machine-learning features, and makes no calls to any AI service. It runs entirely offline. The robot opponent is a deterministic simulation search over the included physics engine — it generates candidate shots, plays each one out, scores the result and picks one — so it needs no model, no network and no API key, and it behaves identically on every device.

Four ways to play

  • Tournament — the full sport. White against black, the queen and her cover, and every foul.
  • Scramble — an open board where any coin scores. White 20, black 10, the queen 50.
  • Pass & Play — two players on one device. The board turns to face whoever is shooting, or stays put if you play with the phone flat between you.
  • Solo Match — one player against the house robot, at three strengths.

Physics written for this game, not bolted on

A custom 2D engine in pure Dart rather than a general physics library. Carrom is only circles, walls and pockets, and writing it directly buys two things a general engine cannot:

  • It is deterministic. Fixed timestep, no random source, no frame-time dependence — the same shot plays out identically every time, on any device, at any frame rate. Asserted by tests.
  • The robot can therefore search it. The AI simulates hundreds of candidate shots per turn and trusts the one it picks to play out on screen exactly as it did in the search.

Every feel constant — striker speed, friction, restitution, pocket size, the shot gesture — is collected in configuration files rather than scattered through the code, so you can retune the game without touching logic.

A robot that plays carrom, not a difficulty slider

The opponent generates ghost-ball shots at each coin toward each pocket, prunes them, simulates what is left on a background isolate, and scores the resulting board. Easy, Medium and Hard differ in three separate ways — how wide it looks, how loosely it picks from what it found, and how cleanly it plays the shot — because a robot that is weak in only one way reads as a machine with a handicap.

It is seeded, so a match is reproducible. The search runs off the UI thread, and the thinking pause runs during the search rather than after it.

Economy, progression and shop

  • 12 prize tables from Qualifier to Hall of Fame, each with an entry and a prize, unlocking as the player wins or saves.
  • Matchmaking screen with a name roll, 60+ robot names, 16 Canvas-drawn avatars and country flags.
  • Daily reward on a seven-day streak, and a free refill when a player runs dry.
  • A player profile — a name, and a face that is either the player’s initials or one of 48 Canvas-drawn avatars. That 48 is the least common multiple of the symbol and colour lists, which is what proves no two of them can look alike. No photo access, no permission and no extra store declaration.
  • 15 cosmetic items — strikers, boards and coin sets. The shop changes how the game looks and never how it plays, and the card you buy from is drawn by the same painter as the board, so the two cannot disagree.

Coins are virtual only: they cannot be bought, cashed out or transferred. There is no in-app purchase code and no billing dependency.

AdMob, wired carefully

  • Interstitial after robot matches only, frequency-capped and never during play.
  • Rewarded video behind a confirmation popup, with a daily cap, and coins granted only in the SDK’s reward callback.
  • The UMP consent flow for GDPR regions, with no ad requested before consent allows it.
  • Ships with Google’s test IDs and kReleaseAds = false. Your own IDs go in one file.

What else is in the box

  • 1,700+ tests. Every rule of the sport has one named after it.
  • Documentation, offline and online. A self-contained HTML manual covering requirements, installation, rebranding, every tunable constant, AdMob setup and release builds — it ships inside the download and needs no internet to read. You can also read the whole manual online before you buy, including the six-step quick start and screenshots of every screen.
  • A written specification the source is annotated against, so a comment saying “Section 7.2” points at the rule it implements.
  • Sound effects, haptics, settings, an aim guide that shows where the struck coin will travel, and a launcher icon set including Android adaptive and themed icons.
  • A launcher-icon generator, so rebranding does not mean redrawing the icon by hand.

Built to be rebranded

The game logic is pure Dart with no Flutter imports, which is what lets it be tested without a screen. Colours are handed to the drawing code as a palette rather than imported as constants, so a new look is one object rather than an edit spread across ten files. Changing the app name, the package id, the icon and the palette is a documented half-hour.

Honest scope

So you know before you buy, this item does not include: online multiplayer, user accounts, leaderboards, chat, in-app purchases, or any backend. It is a single-player and same-device game by design. Local peer-to-peer multiplayer is designed for and documented as a future direction, but it is not built.

The iOS target is included and the code is platform-neutral. Building for iOS needs a Mac, and publishing there needs your own Apple developer account and a separate AdMob app. Also Google Play store submission requires a Play console developer account.

Third-party services are not included in this purchase

Any cost, account, approval or policy obligation attached to a third-party service is yours, and none of it is covered by the price of this item. None of it is unusual for a mobile app, but it is better known before you buy than after:

  • Google AdMob — showing real ads needs your own AdMob account and your own ad unit IDs. Account approval, ad revenue, payment thresholds, policy compliance and any account suspension are entirely between you and Google. The item ships with Google’s public test IDs so it runs the moment you open it; those are test units, and they display sample ads and earn nothing by design.
  • Google Play — publishing needs your own Google Play developer account, which carries a registration fee payable to Google.
  • Apple — an iOS release needs your own Apple Developer Program membership, which is an annual fee, and a Mac to build on.
  • A privacy policy — both stores require one at a publicly reachable URL, and hosting it is yours to arrange. The documentation sets out what it has to disclose for this app, and why.

The game itself is offline: no server, no subscription, and no running cost of its own. And if you would rather ship without advertising at all, it reaches the game in only two screens.

Requirements

  • Flutter (stable) and Dart, versions pinned in pubspec.lock
  • Android Studio or VS Code, and an Android SDK
  • Your own Google AdMob account if you want ads — free to create, and see the note above on what it does and does not cover
  • Xcode and a Mac only if you intend to target iOS

0 average based on 0 ratings.

codingFrog1

codingFrog1

Visit Author's Portfolio

View Portfolio
Last Update 2026-11-11
Created 2026-11-11
Sales 0
Discussion Comments
Software Version Flutter 3.x
Files Included Dart
Video Preview Resolution
Search plugins
Browse Categories

Bluehost Shared Hosting