ThingsHappening — Live Prototype
Click anywhere to start (enables audio + unlocks browser input).
If your machine is under load, visuals will degrade — math stays correct.
Live Prototype: GW3 Surface Grid
Toggle ` • Move WASD • Aim Mouse • Grid [/] • Outside X • Pause P
ThingsHappening
Support Version:
Wiki Design Spec Asset‑less Infinite‑run Geometry‑readable chaos

ThingsHappening — Canonical Wiki / Spec v1

This page is the single source of truth for the current game design (mechanics, voice, unlock rules, and the minimal code layout). In‑game text follows the “happening” language law; this wiki can explain normally, but it also documents every in‑game line exactly.

Hook

ThingsHappening
Things, their happening…
Something is happening wrong.

Something happened to happen.
Things keep happening…

Now it’s your job to keep them happening!

Stability vs Collapse

The player is not a character — it is a system under stress. Power is visible. Loss is geometric.

Stable geometry state

Stable happening — contained growth, readable chaos.

Escalated geometry state

Escalation — entropy rising, fragments active, collapse accelerating.

Overview

ThingsHappening is a top-down geometry simulator where stability is never guaranteed. “Things” appear and begin to happen. You keep them contained, patched, and maintained so that — things keep happening.

If you fail, the planet does not simply lose health. It begins to shrink — not steadily, but in halvings.

Each collapse reduces what remains by half, accelerating like radioactive decay or a crypto halving. The smaller the planet becomes, the faster it collapses.

If it shrinks too far, the universe implodes and goes supernova in a fraction of a second.

Things Stopped Happening…
Things Stopped Happening!

And if things stop happening…
they will never happen again.

About the Game

ThingsHappening is an attempt to revive a genre that never truly came to be. Before sprites defined games. Before textures replaced clarity. There was a path — built from geometry, motion, and mathematics — that was never fully explored. This game follows that path.

There are no sprites. There are no textures. Everything you see is generated entirely from code, geometry, and shading, rendered in a top-down 2D world overlaid with a living 3D simulation grid. Motion, force, and interaction behave like a true physics system, rather than scripted gameplay.

Inspired by Resogun and Geometry Wars 3 - Dimensions Evolved, ThingsHappening plays as a geometry simulator where stability is never guaranteed and chaos emerges naturally from the rules of the system.

Design pillars

PillarMeaningImplementation consequence
Readability Chaos like Noita, but readable like Isaac / Geometry Wars. Simple silhouettes, strong contrast, limited simultaneous “rules”, clear failure signals.
Infinite tension The run can theoretically continue forever, but never becomes safe. Soft caps, backlash loops, scaling that adds chores, not raw stat inflation.
Power costs body Upgrades are sacrifices, not pickups. Companions are literal broken‑out pieces; revive consumes the internal piece.
Voice consistency The world speaks like a worried polygon. All in‑game text centralized; “happening” law enforced by code.
Brotato simplicity Small codebase; fast iteration; no bloat. ~10 files, data in one place, no asset pipeline required.

Moment‑to‑moment gameplay

  1. Things appear. They create local pressure (entropy).
  2. You respond. You move, patch, stabilize, and prevent spread.
  3. The planet reacts. Stable periods grow the planet; unstable periods shrink it.
  4. Growth can backfire. Grow too fast and the planet throws a shard; you must retrieve and patch it.
  5. Skill unlocks choices. Maintain score combos to unlock companion sacrifices sequentially.
  6. Late‑run gets weird. With 5 companions and a huge planet, the secret Void Particle becomes possible.
  7. Failure is existence ending. Wormhole, darkness, the final three lines.

Planet as the only meter

The planet has a radius R. The starting radius is R0. We track a size ratio: S = R / R0.

Core rule

Halving collapse

Shrink is not linear. As the planet collapses, it does so in discrete halves — the smaller it gets, the faster the next collapse arrives. This is a gameplay pressure system: stability must be regained quickly, or collapse accelerates.

Recommended math (simple, stable, tunable)

Use an “entropy pressure” value E (see next section). Convert it to a stability score Stab in [0..1].

Stab = clamp(1 - (E / Emax), 0, 1) growth_force = (Stab - 0.5) # positive if stable soft_cap = 1 / (1 + (R / Rcap)^p) # slows growth as R increases dR = (G * max(growth_force, 0) * soft_cap) - (D * max(-growth_force, 0)) # shrink has no soft cap (stays threatening) R = clamp(R + dR * dt, Rmin, Rmax)

Notes: Rcap is a soft cap, not a hard limit. Shrink staying “uncapped” ensures late‑game danger never disappears.

Unlock condition used later

The secret companion requires S ≥ 100 and 5 external companions active at once.

Entropy + difficulty scaling

“Entropy” is the global pressure produced by active happenings, missed patches, spread chains, and overgrowth debt. It is used to drive both planet shrink and spawn intensity.

Entropy sources

Entropy update model (recommended)

E = clamp( E + (sum(active_happenings.pressure) * dt) + (patch_debt * debt_pressure * dt) - (resolve_power * resolved_this_frame), 0, Emax )

Spawn scaling (readable chaos)

Keep spawning readable: increase the number of happenings and their spread chance gradually with E and S, but cap “simultaneous rule complexity.”

spawn_rate = base_spawn + kE * (E/Emax) + kS * log(1 + S) # cap max active happenings by size for readability max_active = base_max + floor(kM * sqrt(S))

Overgrowth backlash (fireworks + shards)

If you grow the planet too quickly, the world “overgrows” and violently sheds mass. This is the self‑balancing loop that prevents perfect play from becoming a safe infinite snowball.

Overgrowth trigger

Track growth velocity v = dR/dt. Define a safe velocity Vs. When v exceeds Vs, build an overgrowth meter O.

if v > Vs: O += (v - Vs) * dt else: O = max(0, O - O_decay * dt) if O >= 1: trigger_overgrowth_burst() O = 0

On burst (what happens)

Shard pickup + patch

Design intent: “Even the best maintenance creates chores.” Overgrowth keeps the run alive by generating new problems.

Score combo system (for sequential companion unlocks)

Companions are not found. They are earned by holding score combos. Each unlock requires sustaining a combo multiplier for a minimum time (not just hitting it once).

Combo breaks

Sequential unlock rule

Unlocks happen in order. You cannot unlock companion #3 before #2. Unlock can be offered; the player may refuse and accept later.

Example thresholds (tunable)

Unlock stepRequirementMeaning
Companion 1Hold combo ≥ ×25 for 8sProves baseline control under pressure.
Companion 2Hold combo ≥ ×60 for 12sProves stability while scaling spawns.
Companion 3Hold combo ≥ ×120 for 16sStarts “late‑run” risk patterns.
Companion 4Hold combo ≥ ×220 for 20sForces consistent maintenance rhythm.
Companion 5Hold combo ≥ ×400 for 30sEndurance; unlocks maximum fracture state.

These numbers are placeholders for tuning; the sequential + “hold” structure is the locked mechanic.

Companions + sacrifice (body as UI)

You begin the run whole. You also begin with a base internal “extra life” companion inside you. Companions are literal pieces of you that break out; the missing shape stays visible for the run.

Internal revive (base companion)

External companions (5 max)

Recommended companion roles (tunable)

These are the five “slots” (effects can be tuned, but keep the overall ecosystem):

SlotThemeMechanical purpose
1Patch helperMakes shard/patch chores more manageable without removing them.
2Speed shaperLocal movement/tempo modulation; pairs with Delay tower.
3Containment nudgeReduces spread locally; pairs with Anchor tower.
4Awareness nudgeImproves readability under chaos; pairs with Reminder tower.
5Risk amplifierHigh‑reward behavior shift to reach the secret companion condition.

Important: in‑game descriptions for these companions must use the word “happening” (documented later in the voice section).

Void Particle (secret companion)

Void Particle is the 6th companion (secret). It is not one of the five “broken‑out” slots; it is an additional, late‑run companion.

Unlock conditions (ALL required)

Behavior

Voice line (unlock)

happening is following

Towers (3) + cooldown law

Towers are temporary interventions, not defenses. They shape how happening behaves in a radius. They must never be spammable. They must always create periods of vulnerability.

Global tower law (locked)

cooldown_duration > lifespan_duration

Global tower parameters

Cooldown stacking rule (locked)

effective_cooldown = base_cooldown × (1 + 0.15 × active_tower_count)

Tower specs (current numbers)

TowerLifespanWind‑downCooldownPrimary effectCost / side effect
Delay 18s 4s 32s Local slow field; makes happening slower near you. Long‑term entropy accumulates; rebound speed pulse on expiry.
Anchor 26s 6s 45s Containment; reduces propagation chance in radius. Adds “mass”; increases overgrowth sensitivity; scar on collapse.
Reminder 22s 5s 38s Highlights the worst happening; improves readability. Information pressure; overuse causes confusion / noise.

Note: the above effects are expressed mechanically here for clarity. The in‑game voice lines remain happening‑only (see voice section).

Forbidden tower (start unlocked)

One tower is available from the first second: the forbidden accelerator. It does not help you survive. It helps you end runs faster.

Canonical placement line

make things stop happening faster...

Spec

ParameterValue
Lifespan14s (wind‑down 3s)
Cooldown45s
EffectAccelerates entropy growth and planet shrink; makes mistakes matter sooner; speeds collapse.
Design intentPlayer‑controlled mercy / speedrun lever; respects time; increases complicit tone.

Endings + universe darkness

There is one loss condition: if the planet shrinks too far, existence stops existing. The ending is audiovisual: geometry collapses, the universe drains of color, and a wormhole remains.

Final text (locked)

things stopped happening
nothing can happen now
they will never happen again

The game does not say “you died.” It frames failure as “happening ended.” After a short darkness / silence, the run restarts.

In‑game voice lines (canonical)

These are the in‑game phrases (happening‑law). All are stored centrally (recommended: text.gd) and referenced by event keys.

Core hook

ThingsHappening
things, their happening
Something is happening wrong.

Things are happening.
what is happening

Failure

things stopped happening
nothing can happen now
they will never happen again

Revive

happening returned

Forbidden tower

make things stop happening faster...

Towers (happening‑law)

EventLine
Delay description
happening moves slower here
Delay wind‑down
happening is speeding
Anchor description
happening does not spread here
Anchor wind‑down
this is not holding
Reminder description
this shows where happening is worst
Reminder overload
this is confusing

Void Particle unlock

happening is following

Procedural visuals (no assets required)

The game can ship with zero traditional assets. Everything can be rendered as math + shaders: polygons, circles, lines, gradients, distance‑fields, particles, and radial distortions.

Visual primitives

Why this matters

Minimal code layout (Brotato‑small)

Goal: keep the entire game in ~10 source files.

ThingsHappening/ ├─ main.gd # boot, run reset, end sequence routing ├─ world.gd # planet radius, entropy, overgrowth, implosion, darkness ├─ player.gd # movement, revive, missing pieces, shard carry ├─ happening.gd # spawn, spread, resolve, pressure contribution ├─ towers.gd # delay/anchor/reminder/forbidden; L/W/C timers ├─ companions.gd # sacrifice, 5 companion slots, void particle ├─ combo.gd # score multiplier, hold timers, sequential unlock events ├─ text.gd # ALL in-game strings; happening-law enforcement ├─ ui.gd # minimal HUD (combo/shard/tower cooldown hints) ├─ shaders.gd # planet glow, wormhole, darkness, particles (optional) └─ data.gd # constants, thresholds, tuning knobs

Rule: if a feature requires new folders, it’s too complex. Keep it small until the fun is proven.

Tuning surface / constants (what to expose)

Put these in data.gd (or equivalent) so the game can be balanced without refactors:

Store description draft (before‑you‑buy)

Tone‑accurate, readable, no spoilers beyond the premise.

ThingsHappening
things, their happening
Something is happening wrong.

You are a polygon on a planet where things keep happening.
Keep happening happening.
If you fail, the planet shrinks in halvings.
If it shrinks too far, things stop happening forever.

Runs can last forever — but perfect play makes new problems.
Grow too fast and the planet breaks off shards you must patch back.
Earn companions by holding score combos, then break pieces out of yourself to keep going.

If you want to end a bad run quickly, there is one forbidden choice:
make things stop happening faster...

This draft can be tightened for Steam/App Store later; it’s here as a working “vibe-accurate” baseline.

Changelog

Next: as the project grows, add “Happening Types”, “Planet Variants”, “Balance Notes”, and “Patch Notes” sections here.


Event → Quote Matrix (Exhaustive)

Every meaningful game event maps to exactly one or more canonical “happening” lines. No other wording is permitted in-game.

EventWhen it triggersExact text
Game startRun beginsThingsHappening
Early stabilizationPlanet stable > 3sthings, their happening
Anomaly detectedEntropy spikeSomething is happening wrong.
Mid‑run pressureMultiple happeningsThings are happening.
OverwhelmEntropy highwhat is happening
Overgrowth warningGrowth too fastthis happening is too much
Firework burstOvergrowth triggershappening broke outward
Shard detachedPlanet chipsa happening left
Shard pickupPlayer collects shardhappening can return
Shard patchedPatch completeshappening repaired
Combo risingThreshold crossedhappening is aligning
Combo heldHold duration metthis happening is stable
Combo lostCombo breakshappening was lost
Companion offeredUnlock meta happening can follow you
Companion acceptedPiece breaks offhappening separated
Companion activeNormal statehappening assists
ReviveDeath + internal piecehappening returned
Revive spentAfter revivesomething is missing
Tower placedAny towerhappening is shaped
Tower wind‑downEnd of lifespanthis will not hold
Tower expiredEffect endshappening resumes
Forbidden towerPlacedmake things stop happening faster...
Void unlock5 companions + 100×happening is following
Void distortionVoid activethis happening is wrong*
CollapsePlanet implodes things stopped happening
nothing can happen now
they will never happen again