Skip to content

v0.1 Crystals — balance notes from telemetry (PROPOSAL, not applied)

v0.1 Crystals — balance notes from telemetry (PROPOSAL, not applied)

Section titled “v0.1 Crystals — balance notes from telemetry (PROPOSAL, not applied)”

Pulled from the live telemetry dashboard 2026-06-29. Caveat: all of this is from builds ≤78, i.e. the pacing BEFORE the launch-polish changes (wave-gate / deep-run XP / level-danger). So it describes the problems those changes target; it does not yet reflect them. Treat as a playtest hypothesis list, not a verdict. Nothing here was applied to the game.

What the runs look like (Crystals = the launch mode)

Section titled “What the runs look like (Crystals = the launch mode)”
  • Crystals ruleset: 47 runs, avg ~373s (6.2 min), avg level ~12.9, ~2041 kills, ~37 DPS. So a typical crystals run lasts ~6 min and reaches ~level 13.
  • Decoy usage is ~94% basic (79/84 runs) — the other decoys are shop-locked, so new players only ever field the basic one. Fine for v0.1.

Performance (healthy on the launch targets)

Section titled “Performance (healthy on the launch targets)”
  • Apple TV (A12, 50Hz): build 78 = avg 49.8 fps, min 32, only 1.1% of samples <40fps, max 181 enemies. Quality adapts (older builds settled avg_q 0.73) but build 78 holds the floor. Good.
  • iPhone 16 / iPad: 116–118 fps (ProMotion), 0–3.6% <40. Web: 57 fps. No perf concern for launch.
  • (One “(unknown)” device shows 5775 enemies / 58% <40fps — an old runaway-count outlier; ignore.)
  • My launch-polish changes add no render cost (XP bar + control hint are trivial) and don’t raise enemy counts, so perf should be unaffected.

Deaths — where players actually die (survival/crystals)

Section titled “Deaths — where players actually die (survival/crystals)”
cause deaths avg time avg level
elite 15 360s 13.4
boss 11 233s 8.5
ranged 11 328s 12.9
rusher 11 488s 15.5
accumulator 4 420s 14.3

The standout: bosses kill EARLY — at ~level 8.5 / ~4 min, well before the elite/ranged/rusher deaths (~level 13–15). That’s a difficulty spike at the first boss/elite-Warden, before the build has come online. Elites are the single biggest killer overall.

Hypotheses / what to watch in your playtest

Section titled “Hypotheses / what to watch in your playtest”
  1. Level-danger may compound the boss/elite spike. _danger_mult() adds +6%/level HP+contact past 30s. At the boss-death level (~8.5) that’s ~+45% — stacked on an already-spiky boss/elite, it could make that fight harder, not just “keep pace.” If the first boss/elite feels brutal, lower DANGER_PER_LEVEL (0.06) first, or drop the elite/boss base HP to compensate.
  2. Wave-gate cadence vs run length. One new type unlocks per wave fill. A ~6-min run reaching level 13 implies ~12–24 waves, so most/all 14 types should appear within a normal run — good. But verify on-device that waves fire often enough (every ~10–30s) that the unlock pace feels like discovery, not starvation. Lever: SpawnTable.UNLOCK_ORDER (+ could unlock 2/wave if slow).
  3. Deep-run XP scaling is aimed at the right thing. Runs plateau around level 13; the +30%/min XP past 60s should keep picks flowing in long runs. Watch that it doesn’t over-accelerate and trivialise — if levels come too fast late, lower XP_DEPTH_PER_MIN (0.30) or the cap (4×).
  4. Elites are the #1 killer. With the wave-gate, the elite debuts at wave 3 (early). Consider pushing it later in UNLOCK_ORDER if it spikes new players.

Tuning levers (all constants, documented in code)

Section titled “Tuning levers (all constants, documented in code)”
  • Leveling: Sim.XP_DEPTH_START / XP_DEPTH_PER_MIN / XP_DEPTH_MAX, PlayerState.xp_to_next.
  • Danger: Sim.DANGER_START / DANGER_PER_LEVEL / DANGER_LEVEL_MAX / DANGER_SPEED_FRAC, LETHALITY_MULT.
  • Type intro: SpawnTable.WAVE1_TYPES / UNLOCK_ORDER; wave timing Sim.BIOMASS_TRIGGER / BIOMASS_TARGET / WAVE_INCOMING_S.
  • Boss/elite timing: Sim.ELITE_WARDEN_TIME / ELITE_BOSS2_TIME / BOSS_FIRST_TIME.