Gameplay: driving on a Kaohsiung street with the speed limit, map and street names on screen

Taiwan Ace Driver

Tour Kaohsiung by car. My driver’s license wasn’t traded for a chicken drumstick.

Download on theApp StoreComing soonGET IT ONGoogle PlayComing soon

Features

Drive through real street scenes, follow the traffic rules and arrive safely.

  • Driver's-eye view of a lakeside road at dusk, with the Dragon and Tiger Pagodas and their zigzag bridge ahead

    Kaohsiung landmark levels

    Lotus Pond, Pier-2, Sizihwan, 85 Sky Tower, the station, Chaishan and Cijin, with landmarks named along the way.

  • A seniors' mobility scooter, a road bike, a motor scooter and a small car lined up by an arcade

    Nine rides to choose from

    From grandma's mobility scooter, a road bike and scooters to cars. Each has its own top speed, acceleration and toughness.

  • Street corner: a scooter darting out from the arcade, a flooded pothole, a delivery rider and a parked garbage truck

    Everyday Taiwan streets

    Scooters darting out, potholes, garbage trucks, delivery riders and side alleys. Every level has them.

  • A red traffic light at an intersection while a traffic officer signals with a ticket clipboard in hand

    Break a rule, get a ticket

    Running red lights, wrong-way driving and stopping on red lines get you ticketed. Fines follow the real road traffic rules.

  • Glowing golden chicken drumsticks floating above the lane of a street at dusk, lined up into the distance

    Collect drumsticks

    Every level has drumsticks along the road. Drive steadily to collect more.

  • A phone in a car mount recording the drive, with horn sound waves rippling out from the steering wheel

    Horns, recording and screenshots

    Pick a horn sound or import your own recording. Record or screenshot your drive and share it.

Screenshots

Swipe to see more.

How it's built

A Flutter shell, a Godot game and a Django backend. Phones and the web run the same game code.

  • Browser
    • Godot 4 web build
      • Level packs
      • WASM engine
  • Static hosting (CDN)
    • Web level packs
    • Signed config
  • Django backend
    • Accounts & deletion
    • Landmark guides
    • Config publishing
    • Play analytics
    • AdMob settings
  • Flutter app (iOS / Android)
    • Flutter
      • Settings
      • Sign-in
      • Level list
      • Records
      • 3-language UI
      • Local server
      • Settings channel
    • Godot 4 game (in a WebView)
      • 3D road builder
      • Traffic AI
      • Ticket system
      • Audio
      • HUD

Each large chip is a system and the small blocks on it are its components. Traces connect the systems; the lit trace is the current data flow. Use the buttons or arrow keys to switch; double-click to reset the view.

What Flutter gives us across platforms

Why the game uses Godot instead of three.js or Flutter

Deployment decision: Cloudflare Workers for the site and game assets

The first release of the website and the Lotus Pond web version are all static files, served as Cloudflare Workers static assets with no Worker code. Static asset requests are free and unlimited, with no bandwidth charges. The app and its APIs still use the findmo backend, so web traffic never reaches the backend.

First-release asset sizes (measured 2026-10-15; transfer is after compression)
AssetRaw sizeTransferredLoaded when
Site HTML, CSS, JS, icons111 KB43 KBPage open
Hero video + poster (desktop 16:9 / phone 4:5)2.0 MB / 1.6 MB2.0 MB / 1.6 MBPage open
6 feature images + 7 screenshots0.9 MB0.9 MBOn scroll
3D architecture figure (three.js + chip figure)619 KB159 KBOn scroll
Animated background (shaders.com)2.5 MB696 KBDesktop with WebGPU only
Web engine index.wasm17.1 MB4.9 MBOn play
Web shared resources index.pck10.1 MB6.7 MBOn play
Lotus Pond level pack3.5 MB2.2 MBOn play
Other web files (JS, boot image, level data)1.0 MB0.7 MBOn play
Each site visitFull scroll: about 3.8 MB on desktop, 2.7 MB on phones, about 25 requests
First web playAbout 14.4 MB and 13 requests; later visits use the browser cache and only check for updates
Workers Free plan limits vs. this site
ItemFree plan limitThis site on Workers
Static asset requestsFree and unlimitedEvery request is a static asset
BandwidthNo extra charge—
Requests that run Worker code100,000 per day (resets at 00:00 UTC; error 1027 when exceeded)0 (no Worker code)
Size of one file25 MiBLargest 17.1 MB (index.wasm)
Files per version20,00057
Worker CPU time10 ms per requestNot applicable
Scenarios (about 3.3 MB per visit, half desktop and half phone)
VisitsRequestsTransfer (20% play the web version)Transfer (everyone plays)CostVerdict
10,000≈ 280K≈ 59 GB≈ 172 GB0Free plan is enough
100,000≈ 2.76M≈ 593 GB≈ 1.7 TB0Free plan copes; move to the paid plan (US$5/month) before traffic grows
1,000,000≈ 27.6M≈ 5.9 TB≈ 17.2 TB0 – US$5/monthNo charge for requests or bandwidth; move to the paid plan
Cost comparison: 20% of visitors play the web version (per month, USD)
Option10,000 visits / month100,0001,000,000
GCP VM (Premium network, used by the test site)≈ US$7≈ US$71≈ US$663
GCP VM (Standard network)0≈ US$43≈ US$631
Public GCS bucket (direct download)under US$1≈ US$60≈ US$662
GCS + Cloud CDN≈ US$24≈ US$72≈ US$552
Cloudflare Workers (this site) Best000 – US$5/month
Cost comparison: every visitor plays the web version (per month, USD)
Option10,000 visits / month100,0001,000,000
GCP VM (Premium network, used by the test site)≈ US$21≈ US$199≈ US$1,727
GCP VM (Standard network)0≈ US$167≈ US$1,625
Public GCS bucket (direct download)≈ US$9≈ US$189≈ US$1,696
GCS + Cloud CDN≈ US$34≈ US$173≈ US$1,357
Cloudflare Workers (this site) Best000 – US$5/month
GCP VMPremium from Taiwan to Asia-Pacific: US$0.12/GiB up to 1 TiB, 0.11 for 1–10 TiB, 0.085 above 10 TiB. Standard: first 200 GiB per month free, then 0.11 up to 10 TiB, 0.075 up to 150 TiB, 0.07 beyond. The VM itself is not included.
GCSStandard storage in Taiwan (asia-east1): US$0.02 per GiB per month (58 MB here, about US$0.001). Reads: first 50,000 per month free, then US$0.0000004 each. Download to Asia-Pacific: first 100 GiB per month free, then 0.12 up to 1 TiB, 0.11 up to 10 TiB, 0.08 beyond.
GCS + CDNCloud CDN to Asia: US$0.09/GiB up to 10 TiB, 0.06 up to 150 TiB, 0.05 beyond. Needs an external load balancer; its forwarding rule costs US$0.025 per hour (about US$18 per month). Cache lookup and cache fill fees are not included.
Source and scopeUnit prices from the GCP Cloud Billing catalog on 2026-10-15. The test site https://app.findmoapp.com/driver/ shares one e2-medium VM with the backend API, so traffic peaks also slow the API.

Assumptions: a visit opens the home page and scrolls to the end; visitors who play also download the game. Risk: Cloudflare’s service terms require paid services (including the Developer Platform) to serve video or a disproportionate share of large files through the CDN, and they do not say whether the Workers Free plan counts, so we move to Workers Paid before traffic grows. Static asset requests stay free and unlimited on the paid plan. index.pck and the level pack are now compressed on Cloudflare, cutting the first web download from about 19.7 MB to about 14.4 MB.

Why the full set of levels ships inside the app

Running costs: AdMob ads

Development story

From the first commit to 0.1.0, Claude Code wrote most of the code and tests. A person set the requirements, made the decisions and tested on real devices. The numbers below are generated from git history at build time.

Tools and models we used

Milestones

  1. Project baseline: plan, Godot prototype, Flutter shellThis is our first project with Godot. Flutter has been proven across several past projects, and we are happy with both its runtime performance and development speed.
  2. Three-language UI (Traditional Chinese, English, Japanese)
  3. First Kaohsiung street level
  4. Standalone web build: a one-level Lotus Pond trial
  5. 0.1.0 store submission

Workflow

  1. HumanDescribe a feature or a problem in one sentence
  2. AITurn it into issues with current behavior, expected behavior and acceptance criteria
  3. AIImplement each issue on its own branch and add tests
  4. AIRun static checks and automated tests; merge only when they pass
  5. AIDeploy to a test environment and check it for real
  6. HumanMake the calls: the AI writes up each decision as three options with a recommendation, and a person picks
  7. HumanA person plays on real devices and marks problems on screenshots for the AI to fix
  8. AIStore submission and production deploys are done by the AI through the Ego Lite browser; a person types in usernames and passwords

Not fully automatic: product direction, trade-offs and going live are decided by a person.

Who does what: people and Claude Code

Play in your browser

The web version offers one level, the Dragon and Tiger Pagodas at Lotus Pond. No install; open it in a desktop or mobile browser.

Play Lotus Pond in your browser

The first load is about 15 MB (compressed). Download the app for all the Kaohsiung landmark levels.

Get the app

The App Store and Google Play versions are on the way. Download links will appear here at launch.

Download on theApp StoreComing soonGET IT ONGoogle PlayComing soon