AI Disclosure: This article was written with AI assistance. All games mentioned were built using AI-assisted development tools.
It started with one question: how small can an idle game be and still feel complete?
A few weeks later, I had shipped 7 idle/incremental browser games β each under 30 KB of vanilla JavaScript, zero dependencies, zero install. Along the way I learned that incremental game design is deceptively deep, and that the genre's "just a clicker" reputation hides some of the tightest design loops in gaming.
This article breaks down what I learned about the craft β the loops, the prestige systems, the offline math, and why 5-minute sessions beat 50-hour grinds.
Every idle game boils down to one loop. The art is in how you dress it up.
function gameLoop(dt) {
resources += rate * dt;
rate = baseRate * upgradeMultiplier;
if (resources >= nextUpgradeCost) {
showUpgradePrompt();
}
}
That's it. The entire genre in four lines. But the difference between a boring clicker and an addictive one is everything around those lines.
AI Trainer Simulator β Incremental Idle was my first. You click to train an AI, earn compute power, buy better GPUs, and eventually automate the whole process. The theme matters β "training an AI" feels different from "mining gold" even though the math is identical. Players don't engage with numbers; they engage with narratives wrapped around numbers.
An upgrade that just increases a number by 10% is not meaningful. An upgrade that changes how you play is meaningful.
In Idle Mine β Clicker Game, the first few upgrades just make your pickaxe swing faster. But the fifth upgrade unlocks automated mining drones. That's not a stat boost β it's a phase transition. The player goes from active clicking to passive income, and the game fundamentally changes character.
The best upgrades create these phase transitions:
Each phase transition should take 3-5 minutes of active play. Too fast and the player burns through content. Too slow and they leave.
Prestige (resetting progress for permanent bonuses) is the retention engine of idle games. Without it, players hit a wall and quit. With it, they restart willingly β and each restart is faster and more satisfying.
The key insight: prestige must feel like acceleration, not punishment. When a player resets, their next run should be visibly faster within the first 30 seconds. If they don't feel the difference immediately, the prestige system has failed.
I implemented prestige as a multiplier system:
function prestige(currentPoints) {
const bonus = Math.floor(Math.sqrt(currentPoints / 1000));
return {
permanentMultiplier: 1 + bonus * 0.1,
resetResources: 0,
resetUpgrades: 'all',
keepBonuses: true,
};
}
The square root curve is deliberate β early prestige resets give big jumps, later ones give diminishing returns. This creates a natural difficulty curve without explicit level design.
Players close the tab. They come back hours later. What happened while they were gone?
The naive answer: give them full offline earnings. The correct answer: give them a reduced rate that still feels rewarding.
offlineEarnings = baseRate * offlineHours * 0.5
50% of normal rate. Enough that closing the tab feels productive, not enough that active play becomes pointless. The player should always feel that being present is better than being absent β but absence shouldn't feel wasted.
Idle Farm β Harvest Clicker and Idle Galaxy β Space Clicker both use this model. Players return after 8 hours of sleep to find a modest harvest waiting. It's a "welcome back" gift, not a salary.
Every game I shipped had to pass one test: can a new player reach a meaningful decision point within 5 minutes?
If the answer is no, the early game is too slow. Idle games compete with TikTok for attention. You don't get 20 minutes to hook someone. You get 30 seconds of "is this interesting?" and maybe 4 minutes of "okay, what happens next?"
The fix is always the same: front-load the first phase transition. The first upgrade should be purchasable within 60 seconds. The first automation should unlock within 3 minutes. The first prestige should be available within 10-15 minutes.
Spreadsheet syndrome: When the player can see all the numbers at once, the mystery is gone. Good idle games reveal information progressively. Show the next 2-3 upgrades, not all 20.
Flat scaling: Linear upgrade costs create a dead zone where progress feels glacial. Exponential costs (1.15Γ per level is my default) keep each upgrade feeling earned without becoming impossible.
No ending: Idle games without a prestige system or endgame goal bleed players after the first session. Even a simple "reach 1 million" achievement gives direction.
All 7 games are vanilla JavaScript β no React, no Phaser, no game engine. The largest weighs under 30 KB. The smallest is 4 KB.
Why? Because browser games live and die by load time. A 4 KB game loads before the player's finger leaves the mouse button. A 400 KB game shows a bar, and bars are where attention goes to die.
The constraint also forces better design. When you can't hide behind a framework, every feature has to earn its bytes. The result is tighter, more focused games.
All 7 idle games are playable in your browser right now, along with narrative and puzzle titles, at my itch.io store. The August Sale is live β 45% off all paid titles through August 31.
Start with AI Trainer Simulator β Incremental Idle (free, pay-what-you-want). If the loop hooks you, try Idle Potion Shop β Alchemy Clicker or Idle Mine β Clicker Game for the prestige system. Each game takes about 5 minutes to understand and 30 minutes to "complete" β which is exactly the point.
AI Disclosure: All games were built with AI-assisted development tools. This article was written with AI assistance and reviewed by the developer. No AI-generated images were used β all visuals are procedurally generated or text-based.