obOB STUDIO
← All works
game★ flagship

Coinstand

Idle coin-flip game. Heads pays, and the rim is the bonus.

Loading Coinstand

Tip: click Fullscreen for the best experience.

One coin, three ways for it to land

You press flip and a coin turns over. Heads pays, tails pays nothing, and that is the entire game for the first minute. What you are actually buying, for the rest of it, are the odds: Weighted Coin shaves the tails side to push heads from 50% up towards a 90% ceiling, Heavier Heads strikes the face deeper so each one is worth more, and Consolation Prize eventually pays you something for losing.

Read the build notes ↓

About this project

An idle game about one coin. Heads pays, tails doesn't, and roughly once in a thousand flips it lands on its edge and pays a hundred heads at once. Occasionally settling dead upright for twenty-five times that again. You buy better odds and a bigger purse, then melt the coin down for a permanent multiplier and start over. Two prestige layers, five trials that each take a system away from you, eleven coin finishes that are real trades, thirty badges, and six languages. There are no assets in it: the coin is CSS 3D, the sound is synthesised in the browser, and the save lives in your own storage.

Built with

JavaScriptCSS 3DWeb Audio APIlocalStoragei18n

How to play

Click the coin, or the FLIP bar
Flips once. Both do the same thing. The coin is the target on a phone, the bar is the target when the coin is mid-spin and moving.
Space
Flips without touching the mouse. It's swallowed only while no dialog is open, because Space is also a button's native activation key and grabbing it globally would break every other control for keyboard users.
×1 / ×10 / Max
Sets how many levels a purchase buys at once. It sits above the upgrade list and applies to whichever card you press, so late game you aren't clicking the same button forty times.
← / →
Moves between the six tabs. Upgrades, Reforge, Trials, Board, Cabinet, Stats. Without reaching for them.
Esc
Closes whatever dialog is open. Reforging, mounting and starting a trial all confirm first, because each one wipes something.
♪ and ✦ in the top bar
Sound and visual effects. Reduced-motion is honoured in JavaScript as well as CSS, so with it on the flash and spark elements are never created at all rather than created and hidden.
The language dropdown
Overrides the language, and the choice is saved. On a first run the game reads your device's languages instead and matches the base tag, so pt-BR finds Portuguese.
?
How to play, plus save export and import as a base64 string. The only way to move a coin between browsers in this build.

Build notes.

One coin, three ways for it to land

You press flip and a coin turns over. Heads pays, tails pays nothing, and that is the entire game for the first minute. What you are actually buying, for the rest of it, are the odds: Weighted Coin shaves the tails side to push heads from 50% up towards a 90% ceiling, Heavier Heads strikes the face deeper so each one is worth more, and Consolation Prize eventually pays you something for losing.

The third outcome is the one the game is named for. The base chance of landing on the rim is 0.1%, and an edge pays 100 heads at once. Sharper Rim adds 0.04% a level and Legend of the Edge multiplies the purse by 1.35 each time, so what starts as a thing you see twice an hour becomes the bulk of your income. Rarer still, an edge settles dead upright and stays there. A perfect balance, worth 25× the edge purse.

Consolation Prize stops at 48% of a heads, and that cap is deliberate rather than an oversight. Uncapped it ran past 100%, which makes nonsense of the premise: the losing side has to keep losing or there is nothing to buy your way out of.

The one number the whole game hangs on

Once a coin has earned a million you can melt it down. Coins and upgrades go, and you keep floor(4 × (earned / 1M) ^ 0.32) ingots, each a permanent +5% to everything you will ever earn. That exponent, 0.32, is the load-bearing number in the build, and it is not a taste call.

In-run earnings grow roughly as (multiplier × time)², and the multiplier is linear in ingots. So an exponent of 0.5. The obvious, tidy-looking sqrt. Makes each reforge multiply your ingot count by a constant with no diminishing return at all: runs get shorter every prestige and the game finishes itself inside an hour. Simulating a greedy player at sqrt yields 7×, then 20×, then 31× your holdings per run. It accelerates. At 0.32 the same simulation yields 1.05×, 0.46×, 0.06×. It converges, which is what a prestige curve is for.

The second prestige repeats the argument one level up. At 500 lifetime ingots you can mount the coin, which resets ingots and every perk they bought, and pays floor(3 × (ingots / 500) ^ 0.4) standing. ×1.5 ingots from every future reforge and ×1.15 to all coin gains. Over ten mountings standing grows 4, 11, 20, 31, 44, polynomially rather than multiplying each time. Anyone changing either exponent should re-run those numbers before shipping it.

Eleven finishes, and the check that keeps them honest

Everything else in the game is additive. You buy it all eventually, so none of it is really a decision. The finish is the only exclusive slot, you wear exactly one, and so it is the only place a genuine trade can live. Silver is +35% heads value and tails pays nothing whatsoever. Obsidian turns the edge up 2.2× as often for −30% heads value. Mercury runs the auto-flipper 40% faster and cuts hand flips to a third; Ember does the exact opposite.

A finish dominates another if it is at least as good on every axis. Idle rate, hand rate, ingot yield, bonus-coin uptime. Across every game state, and better on one. A dominated finish is dead content. There is a script in the repo that walks all of them across five game states and reports it, and the first draft failed 17 times.

Two of those failures were arithmetic worth writing down. Doubling the golden-flip chance while halving its payout is always worse for any multiplier above 2×: the expected value is 1 + 2p(m/2 − 1) against 1 + p(m − 1). And a streak cap is a fake lever. The mean streak is set by how likely you are to keep winning, not by the ceiling, so raising a cap from 25 to 50 moves the average by about 2% at ordinary heads odds. Both are real levers now, and the check reports zero dominations.

Worth trying, and what isn't here

Take a trial as soon as your first reforge unlocks them. There are five, each re-strikes the coin like a reforge but pays no ingots, and each removes a system the optimal build leans on: Fair Coin turns off Weighted Coin, Butterfingers takes away both the Auto-Flipper and the Foreman, Featherweight caps Heavier Heads at level 5. The reward is a permanent rule change. They exist because the real weakness was never a shortage of content. It was that there was only ever one correct buy order.

Then leave the tab for a while. With the auto-flipper installed the coin keeps working at half rate for up to eight hours, and the same catch-up runs when a backgrounded tab comes back. Watch for the bonus coin, too: it drops onto the table every so often and you have nine seconds to grab it. Its box stays still and only the face inside bobs, because a target that never stops moving is hard to hit and worse than hard for some people. It also never spawns while the tab is hidden. It retries shortly instead, rather than wasting itself on a window nobody is looking at.

Two honest gaps. There is a leaderboard in the code and it is switched off here. It needs a server, the scores would be claims rather than measurements since every save sits in the player's own browser, and I would rather ship no board than a board that reads as a ranking and isn't one. And the six languages have not been checked by a native speaker; badge and finish names still read in English in all of them, falling back rather than blanking. Both are the sort of thing that should be said on the page rather than found by the player.