godot-genre-idle-clicker
Expert blueprint for idle/clicker games including big number handling (mantissa + exponent system), exponential growth curves (cost_growth_factor 1.15x), generator systems (auto-producers), offline progress calculation, prestige systems (reset for permanent multipliers), number formatting (K/M/B suffixes, scientific notation). Use for incremental games, idle games, or cookie clicker derivatives. Trigger keywords: idle_game, big_number, exponential_growth, generator_system, offline_progress, prestige_system, number_formatting.
How do I install this agent skill?
npx skills add https://github.com/thedivergentai/gd-agentic-skills --skill godot-genre-idle-clickerIs this agent skill safe to install?
- Gen Agent Trust Hubpass
The skill provides a comprehensive blueprint and set of GDScript components for developing idle and clicker games in Godot. It focuses on best practices such as custom BigNumber math to handle values beyond float limits, signal-based UI updates for performance, and UNIX-based offline progress calculation. No malicious behavior, obfuscation, or data exfiltration attempts were found.
- Socketpass
No alerts
- Snykpass
Risk: LOW · No issues
- Runlayerwarn
4/4 files flagged
What does this agent skill do?
NEVER Do (Expert Anti-Patterns)
Economics & Math
- NEVER use standard floats for currency; strictly implement a BigNumber (Mantissa/Exponent) system (e.g.,
1.5e300) to preventINFcrashes at 1e308. - NEVER use
Timernodes for revenue generation; strictly use a manual accumulator in_process(delta)to prevent drift during frame fluctuations. - NEVER hardcode generator costs or growth; strictly use an exponential formula:
Cost = BasePrice * pow(GrowthFactor, OwnedCount)(industry standard 1.15x). - NEVER evaluate exact float equality (
==); strictly useis_equal_approx()or>=to prevent "stuck" progress due to precision loss. - NEVER parse scientific notation strings with
to_int(); strictly useto_float()or a dedicated BigNumber parser.
Performance & Optimization
- NEVER update all UI labels every frame; strictly use Signals to update labels ONLY when values change, or throttle updates to 10 FPS.
- NEVER ignore Low Processor Usage Mode for mobile; strictly enable
OS.low_processor_usage_mode = trueto preserve battery life. - NEVER instantiate/delete hundreds of text nodes per second; strictly use Object Pooling or
MultiMeshInstancefor click-feedback. - NEVER update massive logs by modifying the
textproperty; strictly useappend_text()to prevent main thread blocking.
Player Experience & Persistence
- NEVER ignore Offline Progress; strictly calculate
seconds_offline * total_revenueusing system UNIX timestamps (Time.get_unix_time_from_system()). - NEVER make the "Prestige" reset feel like a loss; strictly provide a global multiplier that makes the next run significantly faster (2-5x).
- NEVER calculate offline time using
Time.get_ticks_msec(); strictly use Persistent UNIX timestamps as ticks reset on app restart. - NEVER use Node hierarchies for raw data; strictly use
RefCountedorResourceobjects for lightweight, serializable logic.
🛠 Expert Components (scripts/)
MANDATORY reads before implementing the matching system:
- big_number.gd — mantissa + exponent beyond float INF
- generator.gd — exponential cost / rate units
- scientific_notation_formatter.gd — K/M/B/T + scientific display
- offline_progress_calculator.gd — UNIX offline catch-up (not
ticks_msec)
Original Expert Patterns
- big_number.gd - Mantissa + Exponent math for e308+ scales.
- generator.gd - Exponential cost units and production rate calculation.
- scientific_notation_formatter.gd - Readable K/M/B/T and scientific suffixes.
Modular Components
- offline_progress_calculator.gd - Real-world delta tracking using UNIX timestamps.
- functional_income_reducer.gd - Fast income summation patterns.
- threaded_catchup_simulator.gd - WorkerThreadPool background catch-up.
- precision_cost_validator.gd - Cost curve / affordability checks.
- scientific_notation_math.gd - Shared mantissa helpers for formatters.
- idle_performance_setup.gd -
low_processor_usage_mode+ signal-throttled UI. - decoupled_economy_signal_bus.gd - Throttled economy→UI signals.
- lightweight_upgrade_resource.gd - Upgrade
.trespattern. - big_int_save_parser.gd - Persist big numbers safely.
- thread_safe_ui_updater.gd - Deferred UI after threaded catch-up.
Core Loop
- Click → 2. Buy generators → 3. Idle income → 4. Upgrade → 5. Prestige
Decision Trees
Numbers & display
| Need | Action |
|---|---|
| Values past ~1e308 | MANDATORY big_number.gd |
| Labels / abbreviations | MANDATORY scientific_notation_formatter.gd |
| Cost curve ~1.15^n | generator.gd + precision_cost_validator.gd |
Offline & perf
| Need | Action |
|---|---|
| Offline catch-up | MANDATORY offline_progress_calculator.gd (UNIX time) |
| Long catch-up | threaded_catchup_simulator.gd |
| Battery / idle CPU | idle_performance_setup.gd |
Do not re-inline BigNumber/Offline tutorials in the skill body — load the scripts above.
Skill Chain
| Phase | Skills | Purpose |
|---|---|---|
| 1. Math | godot-gdscript-mastery | Big-number arithmetic |
| 2. UI | godot-ui-containers, labels | Scientific / suffix labels |
| 3. Data | godot-save-load-systems | Offline timestamps + prestige |
| 4. Logic | signals | Throttled economy UI |
| 5. Balance | godot-monte-carlo-balancer | Minutes-to-milestone bands |
Common Pitfalls
| Pitfall | Solution |
|---|---|
| Wrong Expert Component hrefs | Links above point at canonical big_number / generator / formatter |
Time.get_ticks_msec offline | Use UNIX via offline calculator |
| UI every frame | Signal-throttle via economy bus / performance setup |
Expert knowledge (on demand)
LLM-ignorance rule: If a general agent would not know it before reading, load the reference — never delete expert deltas.
- expert-idle-clicker-patterns.md — restored baseline pedagogy (architecture, WHY, implementation depth)
- big_real.gd
- offline_progression_manager.gd
- click_juice_manager.gd
Reference
Progressive disclosure: open Official Documentation links only when researching a specific API; load Related Skills when routing to a peer domain — do not preload the whole lattice.
Official Documentation
- Idle and physics processing — Revenue must accumulate in
_process(delta)(or a fixed sim tick), not driftingTimernodes, so generators stay frame-rate independent. - Time — Offline catch-up uses
Time.get_unix_time_from_system(); neverget_ticks_msec(), which resets when the app restarts. - Saving games — Persist currency, generator counts, prestige multipliers, and last-save UNIX timestamps so welcome-back earnings survive restarts.
- Data paths — Keep save blobs under
user://so offline timestamps and big-number strings remain writable across platforms. - Resources — Generators, upgrades, and prestige curves belong as
.tresResources so designers retunecost_growth_factorwithout code changes. - GDScript exports —
@exportbase costs, revenue rates, and growth factors so balance sheets stay Inspector-driven. - Using signals — Emit
currency_updatedonly when balances change so HUD labels do not rewrite every frame. - OS — Enable
OS.low_processor_usage_mode(and sleep usec) for mobile idle sessions that spend most time waiting on generators. - Using multiple threads — Long offline catch-up sims belong on
WorkerThreadPool; UI must not block while thousands of ticks replay. - Thread-safe APIs — Marshaling sim results to Labels requires
call_deferred/ main-thread rules from this page. - Formatting strings — K/M/B suffixes and
%.2fe%dscientific display depend on correct format strings (andString.num_scientificwhen appropriate). - RefCounted — BigNumber and upgrade payloads should be lightweight
RefCounted/Resourcedata, not Node trees.
Related Skills
Prerequisites
- godot-gdscript-mastery — Mantissa/exponent classes,
powgrowth, and precision-safe compares (is_equal_approx) are core GDScript patterns before building idle economies. - godot-resource-data-patterns — Generator and upgrade definitions should be Resource-first so balance curves stay data-driven
.tresassets. - godot-signal-architecture — Decoupled currency buses must signal up to UI and never let Labels mutate the simulation wallet.
- godot-save-load-systems — Offline progress and prestige state need versioned save handlers that store UNIX timestamps and big-number strings safely.
Complements
- godot-economy-system — Soft-currency wallets, sinks, and transaction APIs compose with idle generators when the game grows shops or prestige shops.
- godot-ui-containers — Generator lists and upgrade grids are
GridContainer/VBoxContainerlayouts bound to throttle-friendly labels. - godot-ui-rich-text — Scientific notation, suffix strings, and append-only logs belong in Label/RichTextLabel patterns rather than rebuilding huge
textblobs. - godot-performance-optimization — Low-processor mode, UI throttling, and pooled click-juice keep idle loops battery-friendly on mobile.
- godot-autoload-architecture — Simulation managers and economy buses that survive scene reloads should follow Autoload ownership rules.
- godot-particles — Click-feedback bursts should use batched
GPUParticles2D.emit_particlerather than spawning Label nodes per tap.
Downstream / consumers
- godot-monte-carlo-balancer — After cost curves and prestige multipliers are Resource-driven, Monte Carlo career sims prove minutes-to-milestone bands (not win%) before shipping growth factors.
- godot-platform-mobile — Shipping idle on phones consumes low-processor mode, background resume, and offline catch-up patterns from this genre skill.
Master
- godot-master — Library router and mirrored module entry; use when discovering peer skills or syncing shared script mirrors after Domain Skill edits.
How can the creator link this skill?
Add the canonical catalog link to the repository README so users can inspect current installs and available audits. The publishing guide covers the complete discovery path.
<a href="https://skillzs.dev/skills/thedivergentai/gd-agentic-skills/godot-genre-idle-clicker">View godot-genre-idle-clicker on skillZs</a>