Implement the core decision tension. Progress should not be automatically safe.

Today we add the most important mechanic in your game — the decision between safety and greed. Let's revisit how a master game designer thinks about this tension:

Risk and Reward — Masahiro Sakurai (revisit from Day 2)

The creator of Kirby and Super Smash Bros explains how the push and pull of risk creates the core of fun. This time, watch with fresh eyes — you now have a working combat system. Where does the banking decision fit in Sakurai's framework?

Discussion after watching: In your game right now, winning gives XP but there's no real tension about keeping it. What if every encounter could take it all away unless you actively choose to protect it? That "should I stay or should I go" feeling — that's what we build today.

The player must choose between security and greed. Banking makes progress safe but resets your momentum. Staying in danger keeps you earning but risks losing everything. This decision IS the game. Without this tension, you just have a simulation. With it, you have a game.

You need: 20 tokens (coins, candies, LEGO bricks — anything small), an envelope or cup labeled "UNBANKED", and a second cup labeled "BANKED".

Setup: Both players start with 0 tokens in both cups. Place the token supply in the middle.

Rules:

  1. Each round, play rock-paper-scissors against the other player (or against the parent).
  2. Win: Take 2 tokens from the supply and put them in your UNBANKED cup.
  3. Lose: Nothing happens. But if you lose 3 times in a row, ALL tokens in your UNBANKED cup go back to the supply. Streak resets.
  4. At any time before a round, you can say "BANK!" — move all UNBANKED tokens to your BANKED cup. Banked tokens are safe forever. But your loss streak counter also resets to 0.
  5. Play 10 rounds. Most BANKED tokens wins.

After playing, discuss:

  • When did you feel the urge to bank? At 2 tokens? 4? 8?
  • Did you ever lose everything because you got greedy? How did that feel?
  • What was your strategy? Bank early and often, or push your luck?
  • At what point does the "smart" move become the "boring" move?

This IS your banking mechanic. The UNBANKED cup is gameState.unbankedXP. The BANKED cup is gameState.bankedXP. Saying "BANK!" is pressing the B key in Camp. Losing 3 in a row is what happens when you lose an encounter in the danger zone. The feeling you had when you had 6 unbanked tokens and thought "just one more round" — that's the exact tension your game needs to create.

Ami — Combat Risk Engine

Banking System:

  • In Camp zone only, press "B" to bank XP
  • Moves unbankedXP to bankedXP
  • Resets riskLevel to 1
  • Outside Camp, cannot bank
  • Risk increases over time in danger zone
// Risk escalation — runs every frame in danger zone if (gameState.zone === "danger") { gameState.riskLevel += 0.01; // Slowly increases }
Ida — Economic Growth Engine

Debt Engine:

  • If karma is negative, apply interest once per second (use a timer, not every frame): gameState.debt += 1
  • If debt exceeds -50, reset all progress (bankruptcy)
  • Decision: take a loan (increase debt for bigger builds) or wait for smaller, safer jobs

Zone-restricted banking (Ami):

// Listen for "B" key press document.addEventListener("keydown", (e) => { if (e.key === "b" || e.key === "B") { bankXP(); } }); function bankXP() { if (gameState.zone !== "safe") { console.log("Cannot bank outside Camp!"); return; } if (gameState.unbankedXP === 0) { console.log("Nothing to bank."); return; } gameState.bankedXP += gameState.unbankedXP; console.log(`Banked ${gameState.unbankedXP} XP! Total banked: ${gameState.bankedXP}`); gameState.unbankedXP = 0; gameState.riskLevel = 1; // Reset risk }

Risk escalation over time:

// Inside game loop function update() { if (gameState.zone === "danger") { gameState.riskLevel += 0.01; // Increases every frame } }

Debt interest system (Ida):

// Call this once per second, NOT every frame // Use setInterval(applyDebtInterest, 1000) in your game setup function applyDebtInterest() { if (gameState.karma < 0) { gameState.debt += 1; console.log(`Debt interest applied. Total debt: ${gameState.debt}`); } if (gameState.debt > 50) { console.log("BANKRUPTCY! Debt exceeded 50. Resetting all progress."); gameState.karma = 0; gameState.debt = 0; // Reset other progress } }
  • Implement zone-restricted banking (Ami)
  • Implement debt interest system (Ida)
  • Add risk escalation over time
  • Add decision prompts (bank/loan)
  • Test: banking resets risk correctly
  • Test: debt caps trigger bankruptcy
  • Checkpoint

    There is real tension — stay longer for more reward, or secure progress? The decision feels meaningful.

    No multiple currencies. No inventory. No complex financial systems. One resource, one tension.

    Allowing banking outside the safe zone — banking must be restricted to Camp only. Check the zone before allowing it.

    Risk escalation too fast or too slow — test different values. 0.01 per frame is a starting point, not a final answer.

    Debt interest not accumulating properly — make sure interest applies every cycle, not just once.

    Forgetting to reset risk on bank — banking must reset riskLevel back to 1.

    The Envelope Game is the emotional heart of Week 3. Play it yourself alongside the kids — do not just observe. When you lose 6 unbanked tokens because you got greedy, that visceral "ugh" feeling is exactly what their players will feel. Name that feeling: "That's your game working."

    This is the emotional peak of the systems design. Watch their faces when they lose unbanked XP or go bankrupt. That emotion is the game working. The tension between safety and greed is what turns a system into a game. Ask: "Where is the moment of stress?"

    Connect the physical to the digital: After playing The Envelope Game, have each kid point to the line of code that represents each part: the UNBANKED cup is unbankedXP, saying "BANK" is the bankXP() function, losing everything is the gameState.unbankedXP = 0 line in the loss condition.

    If a kid always banks immediately (never accumulating risk), ask: "Is that fun? Is your game fun if the safest strategy is also the only strategy?" This is a design conversation, not a right/wrong question.

    Tomorrow: We add persistence — your game remembers progress even after closing the browser. Right now, refreshing the page erases everything. Tomorrow, banked XP will survive a browser close. And unbanked XP won't — which makes the banking decision even more real.