A browser-based incremental / idle ("clicker") game. Click the aether orb and build an empire of magical structures that generate energy on their own. Pure vanilla HTML + CSS + JavaScript — no build step, no dependencies, no server required.
Just open the file in a browser:
open index.html # macOS
# or double-click index.html in Finder / your file explorerThere is nothing to install or compile. The game auto-saves to localStorage.
aether-forge/
├── index.html # Layout & DOM scaffold (3-panel UI)
├── style.css # All styling + animations (CSS variables theme)
├── js/
│ ├── data.js # CONTENT: buildings, upgrades, skills, achievements, shops
│ ├── game.js # Core state (G), CPS/click math, buying, tick loop
│ ├── ui.js # Rendering, tooltips, canvas background, click effects
│ ├── prestige.js # Rebirth / Awakening / Transcendence + Void Tree
│ ├── spin.js # "Aether Spin" gacha / ability rewards
│ ├── quests.js # Quest generation & progress tracking
│ ├── achievements.js # Achievement checks
│ ├── save.js # Save / load / export / import / wipe
│ └── main.js # Bootstrap & event wiring
├── README.md # ← you are here
├── CHANGELOG.md # Dated log of every change (what's been done)
└── ROADMAP.md # What's planned / what needs doing next
Scripts load in dependency order at the bottom of index.html:
data → game → ui → prestige → achievements → save → spin → quests → main.
| I want to… | Edit this |
|---|---|
| Add/balance a building | js/data.js → BUILDINGS array |
| Add/balance an upgrade | js/data.js → UPGRADES array |
| Add a skill / achievement / shop | js/data.js → SKILLS / ACHIEVEMENTS / *_SHOP |
| Change production / click math | js/game.js → calcCPS, calcClickPower, etc. |
| Change visual effects | js/ui.js (spawnParticles, animateCanvas) + style.css |
| Change prestige / void tree | js/prestige.js |
// BUILDINGS entry
{ id, name, desc, flavor, baseCost, baseCps, color, icon /* inline SVG string */ }
// UPGRADES entry
{ id, name, type:'building'|'click'|'global', icon, desc, effect,
mult, target, cost, trigger:{ type:'building'|'aether'|'clicks', ... } }Buildings cost-scale at ×1.15 per purchase; per-building upgrades unlock at owned counts 1 / 10 / 25 / 50 / 100 (the last is usually a ×4).
State lives in the global G object (see top of js/game.js) and is persisted to
localStorage. Use the header buttons to Save / Export / Import / Wipe. New
content (buildings/upgrades) is append-only, so existing saves keep working.