Potato.exe
An incremental game on a 1998 office PC. You spin a wheel to download potatoes, and slowly find out what the company does with them.

- Role
- Game Designer, Writer & Programmer
- Team
- 2 people, with Uluç Kaymak
- Studio
- InEv Games
- Format
- Incremental / narrative
- Status
- In development · Demo on Steam
- Tools
- Godot 4, GDScript, Python
Highlights
- Built the economy on a reference formula and took it five tiers further.
- Wrote a simulator and put every balance change through it.
- Paced the story to how fast the player earns.
- Wrote all 2,127 lines of text, and most of the code.
On this page
- I designed the economy and wrote the story.
- The player spins the wheel and buys upgrades.
- Testing changed the payouts and upgrade progression.
- I used a simulator to balance payouts and prices.
- The player’s income determines when story events appear.
- I wrote corporate humour for the game’s characters and websites.
- The narrative progresses through five acts.
- These tools support the implementation and balance work.
I designed the economy and wrote the story.
Potato.exe has one verb: spin a wheel to download a potato. I designed the game, its economy and its pacing, and wrote the text and most of the code. Uluç Kaymak made the look and the sound. I wrote code with Claude.
The payout formula and the first price tiers come from Unfair Flips by Heather Flowers (2025). What I built on top of them is below.
The player spins the wheel and buys upgrades.

- SpinTwo seconds at first, one at full speed.
- PROGRESSOne step forward, and a payout.
- CORRUPTEDBack to 10%. Potatoes are kept.
- SpendUpgrades and cards in the Marketplace.
- 100%A promotion, and the download restarts.
Each step pays value × ceil(combo ^ (step − 1)). step counts the PROGRESS results in a row, which the game calls a chain. One long chain pays far more than many short ones.
Testing changed the payouts and upgrade progression.
I wrote a Monte Carlo simulator that plays the game from its own data files. Before trusting it, I had it reproduce a published 150,000-run simulation of the reference game. It came within 1%.
| Before | What showed the problem | After |
|---|---|---|
| The safety net, a hidden floor under the odds after a losing run, started at the first loss | Milestones came a third faster and the wheel lost its risk | It starts at the third loss. Milestones come 6 to 9% faster, inside the 5 to 10% target |
| HR ATTENTION, the meter that ends the run at 100, rose 6 per story hit | The story needs 19 hits. 19 × 6 is 114, so a player who did everything right was always caught | 3 per hit, +2.5 a minute with a story module installed, −2 a minute always |
| Four upgrades, 22 levels | By minute 30 a typical player owned 20 of the 22 | Five more tiers, 27 levels. Minute-30 earnings went from 4,649 to 65,867 in that test. After a later reprice the current build earns 52,802 |
Three more changes
| Before | What showed the problem | After |
|---|---|---|
A linear payout, value × combo × step |
The reference is exponential. Linear starved the midgame | value × ceil(combo^(step − 1)) |
| The story’s first message at minute 8 | Too early, and the campaign ads read as part of the story | A gate on earning rate and upgrade level, median 14.8 minutes |
| A flat 6× bet at Potato Downs, the horse-racing side game, with no limit | At 60% PROGRESS the player’s potato wins 62.3% of races, so the bet returned 3.75 times the stake | Flat 6× up to 1,000. Above that, a VIP box with a 10% house cut |
I used a simulator to balance payouts and prices.
What I added to the reference:
- A hidden safety net. After three CORRUPTED spins in a row the next spin gets a 15% floor on its PROGRESS chance, rising to 100% after nine. It only overturns a spin that had already lost.
- A story that costs income. Each story job installs a module that takes its slice out of the green. Working for the story lowers earnings until the module comes off.
- Five more tiers. PROGRESS to 65%, COMBO to 4.5×, two more tiers of potato value.
- Sinks. By the hour mark a median player held 15 million potatoes and the dearest item cost 1 million. A VIP box at Potato Downs costs 250,000 and keeps a 10% house edge. Desktop themes go to auction for up to 1,000,000.

The current build, 2,000 simulated runs. The ring is minute 30 before the five added tiers. The jump after minute 20 is one long chain paying tens of thousands.
The numbers
| Minute | Median earned |
|---|---|
| 1 | 0.08 |
| 5 | 0.54 |
| 10 | 7.78 |
| 20 | 170 |
| 30 | 52,802 |
The price ladder, the simulator’s output and the late game
Tiers marked (added) are mine. The others follow the reference.
| Level | PROGRESS chance | Price (potatoes) | COMBO | Price (potatoes) |
|---|---|---|---|---|
| 0 | 20% | 1.0× | ||
| 1 | 25% | 0.01 | 1.5× | 0.01 |
| 2 | 30% | 0.10 | 2.0× | 0.10 |
| 3 | 35% | 1 | 2.5× | 1 |
| 4 | 40% | 10 | 3.0× | 10 |
| 5 | 45% | 100 | 3.5× | 100 |
| 6 | 50% | 1,000 | 4.0× (added) | 250 |
| 7 | 55% | 10,000 | 4.5× (added) | 1,000 |
| 8 | 60% | 100,000 | ||
| 9 | 65% (added) | 200,000 |
POTATO.exe — what the player earns
policy greedy, 2000 runs, 30 simulated minutes each
odds start at 20%, first packet pays 0.01, combo 1.0x
minute median earned spins upgrade levels owned
1 0.08 24 3
2 0.17 48 4
5 0.54 122 6
10 7.78 254 11
20 169.85 553 16
30 52801.84 877 25
The first full download comes at a median of about 30 minutes. Half of all runs finish between 21 and 40.
After it, everything stays: potatoes, upgrades, cards and story. Only the download restarts. The Potautospinner automates in batches, so there is no offline income. There is no prestige layer yet.
The player’s income determines when story events appear.
The story follows the player’s speed. A system I call Tempo compares what this player earns per spin with a player who never buys anything. Near 1 they are still fighting the wheel. Near 40 they have a chain economy. Near 300 they are printing potatoes.
| Gate | Tempo at least | Upgrade levels | Earliest | Latest | Median in simulation |
|---|---|---|---|---|---|
| The story opens: peeled writes | 40 | 12 | minute 8 | minute 30 | 14.8 min |
| The background channels go quiet | 300 | 16 | minute 18 | minute 40 | 23.1 min |
The floor keeps a lucky opening from skipping the calm. The cap means bad luck never locks anyone out of the story.

How the noise adapts, and the tool that finds the gaps
Ads and campaign spots read the last 50 spins. A stalled player gets them 1.4 times further apart, and a player on a run gets them at 0.8 times the gap.
The rule is that nobody does the same thing for more than three to five minutes without something addressing them. A tool prints the projected timeline from the game’s data and flags the gaps:
THE FIRST 40 MINUTES (steady player, installs PotatoGuard)
0:09 spin 1 -> Sprouty introduces itself
3:35 Tuberson campaign spot #1
5:00 the worm lands (>=55 spins, tempo, >=300s)
10:30 CURED after 6 ANTIVIRUS landings
12:00 Sprouty + HR: COMPLY_98.FRM lands in My Documents
15:00 peeled writes: START->MID phase gate (median ~15 min)
19:06 Sprouty marketplace reminder #4 (spin 380) <-- 4:06 of nothing
25:35 Tuberson campaign spot #5 <-- 5:30 of nothing
Sprouty is the desktop assistant, Tuberson a campaign ad, the worm an ad virus.
I wrote corporate humour for the game’s characters and websites.
The game is a comedy. The company never admits anything is wrong, and its fake internet runs to 64 pages of potato websites.
“Wrongly boiled, he spends nineteen years digging out of the pantry with a potato spoon.”
TuberFlix, The Mashank Redemption (1994)
“Two potatoes fall in love on a sack bound for the chip shop. The sack is unsinkable. The chip shop is not.”
TuberFlix, Taternic (1997)
“Reduce CORRUPTED to 79% (ambitious). The year stays 1968 (non-negotiable).”
Russet M. Tuberson, the platform
“I am about 60% gravy. Looking for the other 40%.”
Gravy Dave, 2 weeks old, Hot Mashed Singles
“Thank you for answering questions. Help is not available at your clearance level.”
Sprouty, the desktop assistant, after a six-question help intake
“Employees who resolve irregularities quickly enjoy longer careers. And bodies.”
HR, first written warning
“Do not paraphrase. Paraphrasing is how 1994 happened.”
HR, handing over a compliance form

The narrative progresses through five acts.
The player is employee E-1998 at Potato Inc. A stranger called peeled says the wheel is not what they were told. Every job from peeled is the same shape: install a module, hit its slice enough times, uninstall it.
The five acts, with spoilers
- Act 1, contact (around minute 15). peeled writes: “i used to sit where you are sitting. same chair, spinning same wheel.” If the player says no, peeled comes back.
- Act 2, the tunnel. A backdoor slice opens a hidden folder with the previous employee’s unsent letter. Then peeled goes dark, and the Steam demo ends here.
- Act 3, operations. Five hits on an exfiltration slice pull five files out of the company. An HR ATTENTION meter appears and rises on every hit and while a module is installed. At 50 HR fines the player, and at 75 it warns that the Basement has been notified.
- Act 4, the basement. A hidden photo is drawn one strip per hit. Each potato is an applicant, and the wheel sets the speed of the processing line. “Yes. They are people. They were always people.”
- Act 5, the end. Three endings. Send the files, and the machine formats itself and boots to the same wheel, now downloading from
\\SOIL\NOBODY(Nobody’s Potatoes). Tell HR everything, and you are Employee of the Month while Catering closes peeled’s file. The third can come earlier: if HR ATTENTION reaches 100 at any point after Act 3, you are FRIED. RE-APPLY keeps the potatoes and upgrades, so both Act 5 endings stay open.
These tools support the implementation and balance work.
Team, engine, code, tests and AI use
Uluç Kaymak made the Windows 98 look and feel: the window chrome, icons, cursors and Sprouty’s art, the CRT and ripple shaders, and the feel of dragging windows and icons. He also made all of the sound, the boot sequence and the desktop drag and drop, and fixed builds and performance.
- Godot 4.7, GDScript. About 18,900 lines in 121 scripts, grown from a single-file HTML prototype.
- Data-driven. No numbers or text live in code. The story engine reads its beats from JSON and checks every reference at start-up, so a typo fails a test.
- Python tools. The simulator reads the game’s own data files. A text pipeline moves all 2,127 lines through one sheet, one column per language.
- Tests. 17 suites, one of which plays the story from start to finish.
- AI use. The upgrade icons, the Windows 98 icon pack and the photos on the fake internet were made with image generators, and I wrote code with Claude. The translations were done with LLMs and edited by a translator at InEv.
- Accessibility. Reduced motion, UI scale, message speed, colour cues, remappable keys, and full keyboard and gamepad play with Steam Deck defaults.








