Skip to content
Playable slice

My Mini Cafe

A one-thumb 3D management game where you physically walk around your cafe. A joystick appears wherever you touch; there is no tap-to-interact anywhere. Coffee brews itself, cups stack visibly on your tray, walking up to a customer serves them, and the coins buy a shop full of machines, seats, paint and lighting.

The game plays — an Android build has been produced and run on a device. Progress does not yet survive a restart, there is no audio, and monetisation is designed but not implemented.

My Mini Cafe
Android

[In the box]

What it actually does

  • One-thumb 3D play with a joystick that appears wherever you touch
  • Cups auto-brew and stack visibly on a tray with a real capacity limit
  • Customers walk in, claim a seat, and lose patience after 20 seconds
  • A shop built at runtime from data files — a new upgrade needs no code
  • Sixteen upgrades across seven effect types, from tray size to lighting
  • A 1,600-line headless integration test that drives the real joystick
Android

By the numbers

Status
Playable vertical slice
Game code
2,559 lines GDScript
Dev tooling
4,261 lines
Scenes
8
Upgrades
16 across 7 effect types
Products
6
Headless checks
244 call sites
Android build
28 MB, device-verified
Audio
None yet
Persistence
Not implemented

[Features]

Inside My Mini Cafe

Every item below is implemented in the codebase, not planned for a future release.

Auto-brew stations

A brew cycle fills a cup into a station buffer, and walking over picks it up. A second brewer and an espresso machine arrive as upgrades.

Customer arrivals with patience

A spawner fills free seats only. Customers walk in, sit, wait twenty seconds, then leave if ignored — that timer is the only pressure in the game.

Proximity serving and payout

Walk into a seated customer and the cup serves itself, paying out with a floating +N. Value travels on the cup, so a soda genuinely pays more than a coffee.

Sixteen data-driven upgrades

Tray capacity, brewing speed, product lines, extra seating, floor paint and lighting — a closed set of seven effect types, each defined as a resource file.

A shop built at load time

The entire shop grid is generated from data files at startup with three card states: affordable, owned and locked. No bespoke UI per item.

Eighteen distinct characters

Characters share one animation set, audited by a script that confirms every character only plays clips it actually has.

Room dressing and lighting

Wainscot, skirting, warm overhead light and placed props with auto-centred origins, so decorating your room is part of the progression.

Modal shop handling that actually works

Opening the shop disables the joystick outright, because on a narrow viewport a stick appearing in either margin would otherwise steer you around behind the open panel.

[Architecture]

How it is built.

The decisions that shaped the codebase, and what each one buys.

01

A closed vocabulary of effects

UpgradeDef.Effect is a seven-value enum, and one match statement is the only place that knows how to realise an effect. The payoff: a new upgrade is a data file, and a malformed one cannot compile.

02

The shop is modal by state, not by geometry

Rather than trusting hit-testing, opening the shop disables the joystick and force-releases any held input. A dynamic stick in the side margins would otherwise steer the player behind the panel.

03

The exporter has a bug that only a device finds

The shop worked in every headless test and every desktop capture, because those run from source. Only running the exported APK revealed it — the exporter renames .tres files, so the catalog silently came back empty and nothing warned.

04

Scope guardrails as a feature

No tutorial, no game-over, no weather, no story, no multiplayer, no second floor. The rule on record is that adding any of them is a regression, not a feature.

[Who it is for]

Built for

  • Casual players of the idle management genre
  • Mobile players who want a ten-second time-to-fun with no tutorial
  • Anyone who prefers a warm low-poly cafe to a spreadsheet

[Non-negotiables]

The rules we held

  • Teach by layout, never by text — there is no tutorial and no text in-game
  • Ten seconds from opening to serving your first customer
  • Adding an upgrade must require only a data file, never code
  • Scope is a feature: no story, weather, multiplayer or second floor

[Stack]

Built with

Godot 4.7GDScript3D (orthographic camera)Godot Resources (.tres data)Kenney CC0 artHeadless test harness

Delivered

  • 3D cafe with generated collision and a virtual joystick
  • Auto-brew, visible carry stack with an enforced capacity limit
  • Customer arrivals, seating, patience timer and proximity serving
  • Per-product payout with floating +N feedback
  • Runtime shop generated from 16 upgrade resources
  • Six product definitions, four station types
  • Room dressing, props, lighting and paint upgrades
  • 1,600-line headless integration test driving the real joystick

Not done yet

Listed rather than hidden.

  • Save and load — coins are currently held in memory and lost on restart
  • Staff and automation, so the loop keeps running while you are away
  • Monetisation: rewarded ads, interstitials and a remove-ads purchase
  • Audio — music and sound effects are entirely absent
  • Release signing and a store listing; the launcher icon is not configured

[Timeline]

How it got here.

Where this came from, in order.

    1

    Thesis

    Walk, do not tap

    The design rule was that you physically move your character, with no tap-to-interact anywhere. Everything else in the game follows from that one decision.

    2

    Build

    The core loop, proven headlessly

    Brewing, carrying, seating, serving and paying out were built first and verified by a 1,600-line integration test driving the real joystick, not a mock.

    3

    Hardening

    A device-only bug

    The shop had never worked in an exported build. Every automated test ran from source, where data files keep their extension, so the catalog came back empty in the APK and nothing complained.

    4

    Now

    Phase four of ten

    Progression and the shop are largely in place and verified on a device. Persistence, staff, audio and monetisation are all still ahead.

[FAQ]

Common questions.

The questions we would expect to be asked.

Can I play it now?

Not yet — there is no store listing. An Android build has been produced and run on a device, and the game is playable, but progress does not survive a restart because save and load is not implemented yet.

Does it have ads or in-app purchases?

Not yet, though both are designed for. The ad and purchase vendors are chosen and every call is meant to go through a single service layer, so the rest of the game never has to know which platform it is on. None of it is wired into the current build yet.

The rest of the catalogue

[Get in touch]

Questions about My Mini Cafe?

Want to know more about My Mini Cafe — timelines, availability or how it works under the hood? Send us a note.

Taking on select projects for 2026