Esposter

Clicker

Clicker is Esposter's idle game at /clicker: click the central item to earn points, spend points on buildings that produce points per second, and buy upgrades that multiply production. It is a faithful Cookie Clicker homage (the 19 building tiers from Cursor to Idleverse) reskinned through switchable clicker types (Default / Magical / Physical) that change the item's name, icon, and color everywhere.

Key concepts

  • Data-driven content — buildings and upgrades are plain constant maps in shared/assets/clicker/data/ keyed by enum ids and typed by satisfies; the server just serves them (readBuildingMap / readUpgradeMap). Adding content means adding a map entry, not code.
  • Effect engine — every upgrade carries Effect[] records; pure functions fold them over a base power by effect type (additive, multiplicative, per-building). See effect engine.
  • Split Pinia storesclicker/ (save root + type theming), clicker/point, clicker/building, clicker/upgrade, clicker/mouse, clicker/popup, clicker/offlineProgress; each owns one concern and composes the others per the store-to-store convention.
  • One save blob per player — the whole game state is a single Clicker entity. Signed-in players persist it per account through the generic blob-state procedures; unauthenticated players persist it in localStorage, so their save is scoped to the browser/device, not a user. Games deliberately stay off the resource layer (games integration). See game loop and saves.
  • Achievements — ten clicker achievements unlock through the achievement tRPC-path middleware on clicker.saveClicker: five save-count thresholds and five milestones whose conditions read the save payload (shared/services/achievement/definitions/ClickerAchievementDefinitionMap.ts).

Pages

No open work. Decided ideas: deferred, rejected.

Shipped log

  • Core refactors — normalized id-based save data, single 60 FPS game tick, exponential building price curve.
  • Milestone achievements — points/collection/completion milestones evaluated from the save payload alongside the save-count ladder.
  • Offline progress — capped welcome-back production award with a summary dialog.
  • Bulk buy — ×1/×10/×100 purchase toggle with exact summed pricing.