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”- 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, lowerDANGER_PER_LEVEL(0.06) first, or drop the elite/boss base HP to compensate. - 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). - 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×). - Elites are the #1 killer. With the wave-gate, the elite debuts at wave 3 (early). Consider
pushing it later in
UNLOCK_ORDERif 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 timingSim.BIOMASS_TRIGGER / BIOMASS_TARGET / WAVE_INCOMING_S. - Boss/elite timing:
Sim.ELITE_WARDEN_TIME / ELITE_BOSS2_TIME / BOSS_FIRST_TIME.