Finale Design (2026-08)
Grand finale + rickroll trove — design proposal (2026-08-08)
Decided 2026-08-08: the recommended combination below (1b + 2c + 3a) is confirmed
and merged to main. The trove’s room is named “The Upperworld” (see NEXT.md’s
two finale sections for the final wording). The axis breakdown below is kept as the
rationale record, not because the options are still open.
Important scope note, added 2026-08-08 after a follow-up question: “merged” covers
the mechanic only — recall a sequence correctly, a real chest spawns, a RECALLED!
fanfare plays, and triggerRickrollStub() flips one boolean flag. That’s it. The
actual rickroll — an 8-bit animation, a music sting, anything a player would see or
hear — does not exist. triggerRickrollStub() is a literal no-op beyond the flag,
exposed only for the test suite to verify the mechanic fires correctly. The real
payoff stays blocked on sourcing royalty-free-cleared audio (see the licensing note
in NEXT.md’s “rickroll gag” section) — that’s still 100% unbuilt.
Decided: one mechanic, not two objects
Torsten’s own description settles what was previously an open question (“is ROLL.txt’s trove the same object as the dance-sequence chest?”): yes. The mechanic is a single continuous thread — learn → recall → unlock → payoff:
- Tanzstunde’s dance QTE teaches the player a specific input sequence (Simon-Says
style — today’s fixed
DANCE_COMBO = ['crouch', 'left', 'crouch', 'right']). - Later, the player repeats that same sequence at a trove to open it.
- Opening it triggers the rickroll payoff.
So the dance chest and the rickroll trove are the same chest, opened by the same taught sequence. What’s still open — and what this doc actually proposes options on — is where that trove physically sits, how the recall is presented, and when in the game’s flow it pays off.
What’s already there, grounding every option below:
chest(items.ts) is an established reward-progression “tier-2 pickup” sprite, already reused across both existing Underworld sub-levels (River Cola’s, the mushroom house’s) — the likely “known good from an earlier level” prop.- Level order is fixed and one-way within a run:
[Minigolf, Lidl Lunch, Soccer, Tanzstunde, Clouds](main.ts’sLEVELS/LEVELS2), advanced byadvanceLevel()incrementing an index — no backtracking exists. The only level reachable after Tanzstunde in the same run is Clouds. Revisiting an earlier level at all means a full Season 2 replay (New Game+), not backtracking mid-run. - The dance overlay today (
drawDanceSequenceOverlay) already shows the upcoming move labels and a beat-timing bar live during the QTE — teaching is already guided, not blind. Nothing currently tests whether the player actually remembers the sequence without the overlay’s help. hasCompletedGamealready exists and is persisted (localStorage) — it currently gates title-screen attract mode, but the same flag could gate anything else.gameComplete(Season 2’s real ending) already runs a parametrized backdrop montage (drawBackdropSequenceoveractiveLevels) — a slot built to take more frames, not something needing new plumbing.- Music earmarked for this:
deep_drone_bells.wav(“a grand-finale reveal moment”),storm_atmo.wav(“a hidden-level entrance”),bytebeat_1/2/3.wav(the rickroll joke itself). Standing family-game rule: misses never punish, only reward skill.
Axis 1 — where does the trove physically sit?
- 1a. Inside/near the new Tanzstunde Underworld (the sub-level built to relocate the dance QTE into). Recall gap is short — seconds to minutes after learning it. Cheapest: one new level, one new portal, done.
- 1b. In Clouds (the only level reachable afterward in the same run), reusing the
chestsprite as a “known good” prop transplanted somewhere new — genuinely fits ROLL.txt’s implied distance, and the recall gap is real (a full level’s worth of intervening gameplay). Costs the same new Tanzstunde Underworld/portal as 1a plus placing a second, separate chest object in Clouds.
Placing it in an earlier level (Minigolf/Lidl Lunch/Soccer) isn’t viable without new backtracking infrastructure that doesn’t exist and isn’t worth building for this alone — not proposing it.
Axis 2 — how is the recall presented?
- 2a. Blind recall. At the trove, no on-screen move-label hints and no beat-timing
bar — pure memory test of the sequence taught in Tanzstunde. Matches “ultimate chance
to rickroll” as a genuine gotcha. Needs a second, simpler input-reading path alongside
updateDanceSequence()(same combo data, no overlay). - 2b. Same guided overlay, reused. The trove re-runs the existing dance QTE wholesale (same overlay, same hints), just gated behind reaching the trove instead of a fixed x. Cheapest — zero new UI — but weakens “recall” to “dance again.”
- 2c. Middle ground. Keep the beat-timing bar (rhythm help) but drop the move labels — tests memory of the sequence while still helping with timing, which is more reflex than memory anyway.
Axis 3 — when does it pay off relative to gameComplete?
- 3a. Same-run, mid-flow. Reachable as soon as the player gets to Clouds/the new
Underworld, before the run’s actual ending. Payoff plays immediately in-level; if
found, it also echoes as one extra frame in the later
gameCompletemontage. No new persisted state beyond a same-run “found it” flag. - 3b. Post-completion capstone. Gate the trove (inert/absent) behind the existing
hasCompletedGameflag, so it only becomes openable on a replay after finishing the game once. True “you have to have already seen the grand finale to unlock this” framing — but note the tension: the payoff then never appears during the actual finale run itself, only on a later replay, which could read backwards for something billed as the grand finale moment.
Recommended combination
Not a decision — a concrete starting point to react to: 1b + 2c + 3a. Build the
Tanzstunde Underworld/portal for the relocated dance QTE (teaching the sequence stays
exactly as guided as today), place the actual trove in Clouds reusing the chest prop
(real distance, real recall), test the sequence with rhythm help but no move labels,
and let it pay off in the same run with a later gameComplete echo — so the “grand
finale” framing is earned by players who catch it on a normal first playthrough, not
locked away from the very run it’s supposed to cap off. 3b (a deeper post-completion
variant) could layer on top later without conflicting with this, if a second, harder
version is ever wanted for completionists.