` • Move WASD • Aim Mouse • Grid [/] • Outside X • Pause PThis 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.
The player is not a character — it is a system under stress. Power is visible. Loss is geometric.
Stable happening — contained growth, readable chaos.
Escalation — entropy rising, fragments active, collapse accelerating.
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.
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.
| Pillar | Meaning | Implementation 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. |
The planet has a radius R. The starting radius is R0. We track a size ratio:
S = R / R0.
R trends upward.R trends downward.R hits Rmin, the universe implodes.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.
Use an “entropy pressure” value E (see next section). Convert it to a stability score Stab in [0..1].
Notes: Rcap is a soft cap, not a hard limit. Shrink staying “uncapped” ensures late‑game danger never disappears.
The secret companion requires S ≥ 100 and 5 external companions active at once.
“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.
Keep spawning readable: increase the number of happenings and their spread chance gradually with E and S, but cap “simultaneous rule complexity.”
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.
Track growth velocity v = dR/dt. Define a safe velocity Vs.
When v exceeds Vs, build an overgrowth meter O.
R -= chip_amount.patch_debt += 1.patch_debt, restore some R, reduce E.Design intent: “Even the best maintenance creates chores.” Overgrowth keeps the run alive by generating new problems.
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).
Unlocks happen in order. You cannot unlock companion #3 before #2. Unlock can be offered; the player may refuse and accept later.
| Unlock step | Requirement | Meaning |
|---|---|---|
| Companion 1 | Hold combo ≥ ×25 for 8s | Proves baseline control under pressure. |
| Companion 2 | Hold combo ≥ ×60 for 12s | Proves stability while scaling spawns. |
| Companion 3 | Hold combo ≥ ×120 for 16s | Starts “late‑run” risk patterns. |
| Companion 4 | Hold combo ≥ ×220 for 20s | Forces consistent maintenance rhythm. |
| Companion 5 | Hold combo ≥ ×400 for 30s | Endurance; unlocks maximum fracture state. |
These numbers are placeholders for tuning; the sequential + “hold” structure is the locked mechanic.
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.
5 external companions active at once.These are the five “slots” (effects can be tuned, but keep the overall ecosystem):
| Slot | Theme | Mechanical purpose |
|---|---|---|
| 1 | Patch helper | Makes shard/patch chores more manageable without removing them. |
| 2 | Speed shaper | Local movement/tempo modulation; pairs with Delay tower. |
| 3 | Containment nudge | Reduces spread locally; pairs with Anchor tower. |
| 4 | Awareness nudge | Improves readability under chaos; pairs with Reminder tower. |
| 5 | Risk amplifier | High‑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 is the 6th companion (secret). It is not one of the five “broken‑out” slots; it is an additional, late‑run companion.
external_companions == 5 (all five broken out and active simultaneously)S = R/R0 ≥ 100 (planet at least 100× original size)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.
| Tower | Lifespan | Wind‑down | Cooldown | Primary effect | Cost / 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).
One tower is available from the first second: the forbidden accelerator. It does not help you survive. It helps you end runs faster.
| Parameter | Value |
|---|---|
| Lifespan | 14s (wind‑down 3s) |
| Cooldown | 45s |
| Effect | Accelerates entropy growth and planet shrink; makes mistakes matter sooner; speeds collapse. |
| Design intent | Player‑controlled mercy / speedrun lever; respects time; increases complicit tone. |
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.
The game does not say “you died.” It frames failure as “happening ended.” After a short darkness / silence, the run restarts.
These are the in‑game phrases (happening‑law). All are stored centrally (recommended: text.gd) and referenced by event keys.
| Event | Line |
|---|---|
| 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 |
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.
Goal: keep the entire game in ~10 source files.
Rule: if a feature requires new folders, it’s too complex. Keep it small until the fun is proven.
Put these in data.gd (or equivalent) so the game can be balanced without refactors:
R0, Rmin, Rcap, p, G, DEmax, per‑happening pressure weights, resolve powerVs, O_decay, chip amount, debt pressure, shard restore valueTone‑accurate, readable, no spoilers beyond the premise.
This draft can be tightened for Steam/App Store later; it’s here as a working “vibe-accurate” baseline.
Next: as the project grows, add “Happening Types”, “Planet Variants”, “Balance Notes”, and “Patch Notes” sections here.
Every meaningful game event maps to exactly one or more canonical “happening” lines. No other wording is permitted in-game.
| Event | When it triggers | Exact text |
|---|---|---|
| Game start | Run begins | ThingsHappening |
| Early stabilization | Planet stable > 3s | things, their happening |
| Anomaly detected | Entropy spike | Something is happening wrong. |
| Mid‑run pressure | Multiple happenings | Things are happening. |
| Overwhelm | Entropy high | what is happening |
| Overgrowth warning | Growth too fast | this happening is too much |
| Firework burst | Overgrowth triggers | happening broke outward |
| Shard detached | Planet chips | a happening left |
| Shard pickup | Player collects shard | happening can return |
| Shard patched | Patch completes | happening repaired |
| Combo rising | Threshold crossed | happening is aligning |
| Combo held | Hold duration met | this happening is stable |
| Combo lost | Combo breaks | happening was lost |
| Companion offered | Unlock met | a happening can follow you |
| Companion accepted | Piece breaks off | happening separated |
| Companion active | Normal state | happening assists |
| Revive | Death + internal piece | happening returned |
| Revive spent | After revive | something is missing |
| Tower placed | Any tower | happening is shaped |
| Tower wind‑down | End of lifespan | this will not hold |
| Tower expired | Effect ends | happening resumes |
| Forbidden tower | Placed | make things stop happening faster... |
| Void unlock | 5 companions + 100× | happening is following |
| Void distortion | Void active | this happening is wrong* |
| Collapse | Planet implodes | things stopped happening nothing can happen now they will never happen again |