komyo — Challenge Shop

design report · 2026-07-03 · release priority #1 · rev 2
✨ Rev 2 — what changed after your review (all marked with dashed gold boxes below): currency is the Trophy 🏆 everywhere (every ◈ price replaced), shop named "Cosmetics" (never "Shop" — that's merch), trophies/cosmetics pill wording, favorite games sort to the top of the store, good-run trickle approved, bird prices reordered (Raven is #2 after Phoenix), and all five open questions resolved into decisions.

0 · Decisions locked in this session

1 · Economy

Earn rates today: daily 10 + weekly 50 → perfect week = 120, active ≈ 100, casual ≈ 40–60. One daily = one cheap item; one full week ≈ one premium item. Each game's launch set costs 🏆 200–400 total ≈ 2–4 weeks of active play per game — so "finish your favorite game's set" is quick, "chase 100%" scales with the catalogue (by design, per the bands decision).

Titles thresholds — reviewed, keep as-is (for now)

Ladder timing at active pace (~100/wk lifetime): Peasant 100 ≈ 1 wk · Squire 250 ≈ 2–3 wk · Knight 500 ≈ 5 wk · Sorcerer 1 000 ≈ 2–3 mo · Archmage 2 000 ≈ 5 mo · Oracle 4 000 ≈ 10 mo · Ascendant 6 500 ≈ 16 mo · Emperor 10 000 ≈ 2 yrs. Since titles key off lifetime, shop spending doesn't slow the ladder — the two tracks are fully independent, which is exactly why the pacing still works. The early tiers land satisfyingly fast, the tail is a real long-game. Recommendation: leave thresholds; retune from GA4 once real completion data flows (the existing challenge_done events already measure earn rate).

Earning headroom — APPROVED, ships with the shop✨ REV 2

+2 🏆 per good run, capped at 3/day (max +42/wk; realistically +20–30 for active players). Ties earning to actually playing — cheap to add since goodRuns are already tracked per day. It also raises the title pace slightly (lifetime grows faster); the thresholds review below already absorbs that. Parked streak bonuses could slot here later if more headroom is ever needed.

✨ Where the player sees the cap: (1) the end-of-run menu's existing "✓ Good run" line becomes the receipt — "✓ Good run · +2 🏆 (2/3 today)", and when maxed "✓ Good run · daily bonus maxed 3/3" — you learn the cap the moment it matters; (2) an always-on line in the challenges panel/drawer under the trophy pills — "⚡ Good-run bonus: 2/3 today · +2 🏆 each" — for planning "is one more run worth it?"; (3) one sentence in the FAQ's challenges entry. No new storage: the counter is min(goodRuns, 3) from the existing daily log.

2 · Player simulations — who earns what, and when

Three archetypes, straight multiplication of today's earn rates (titles read lifetime, so spending on cosmetics never delays them):

PlayerHabitEarn / weekMonth 1Month 3Month 6Year 1
🔥 Devoteeevery daily + every weekly🏆 120≈ 520≈ 1,560≈ 3,120≈ 6,240
🙂 Active~5 dailies + most weeklies🏆 100≈ 430≈ 1,300≈ 2,600≈ 5,200
🌙 Casual2–3 dailies, weekly sometimes🏆 45≈ 195≈ 585≈ 1,170≈ 2,340

What that buys (launch catalogue ≈ 🏆 2,375 / 58 items)

Milestone🔥 Devotee🙂 Active🌙 Casual
First cosmetic (🏆 10)day 1day 1day 1–2
A premium item (🏆 100)~1 week~1 week~2 weeks
Favorite game's full set (🏆 200–400)2–3 weeks2–4 weeks5–9 weeks
All 8 paid birds (🏆 1,160, incl. Phoenix 500)~10 weeks~12 weeks~6 months
100% collection (launch set)~5 months~6 months~12 months

Title timeline (lifetime — unaffected by spending)

Title (lifetime 🏆)🔥 Devotee🙂 Active🌙 Casual
🌾 Peasant (100)week 1week 1week 2–3
🛡️ Squire (250)week 2–3week 3week 6
⚔️ Knight (500)week 4–5week 5~3 months
🔮 Sorcerer (1,000)~2 months~2.5 months~5 months
🧙 Archmage (2,000)~4 months~5 months~10 months
👁️ Oracle (4,000)~8 months~9 months~1.7 years
🌟 Ascendant (6,500)~13 months~15 months~2.8 years
👑 Emperor (10,000)~19 months~2 years~4+ years

Week 1, day by day — 🙂 Active player "Ola"

Mon — daily done, +10 → buys Cherry (🏆10) for Snake. Balance 0.
Tue — +10. Eyeing the Golden Apple. Balance 10.
Wed — +10. Two short of the Golden Apple — saves. Balance 20.
Thu — +10 → buys Golden Apple (🏆25). Balance 5.
Fri — +10. Balance 15.
Sat — daily skipped (busy). Balance 15.
Sun — daily +10 AND the weekly completes +50 → buys Crosshair cursor (🏆25) + Wood Classic paddle (🏆10). Balance 40, saving toward the 🏆100 Owl.
End of week 1: lifetime 100 → 🌾 Peasant title pops · 4 cosmetics owned · 40 banked. The cadence the bands were designed for: something small almost every day, a real save-up goal always in sight.
Reading the simulation: the launch pool (~🏆2,375) is comfortably in the "Active finishes in ~6 months" zone — and every new game ships another 🏆200–400 set, so the horizon moves with the catalogue (which is the point). The one number worth watching is Casual vs Phoenix (🏆500 ≈ 11 casual weeks): that's the "aspirational exception" working as intended, but if GA4 shows casuals stalling, the fix is the good-run earn trickle (section 1), not price cuts.

3 · Where the shop lives (UX)

The challenges drawer's points row becomes a two-pill row + collection bar; the shop itself is a separate modal (like the titles ladder), opened from the gold pill — and the same modal is reachable from the profile's collection bar.

🏆 1,240 trophies 🎨 COSMETICS · 🏆 320
12 / 58 unlocked · 21%
Challenges drawer — trophies pill = lifetime earned (opens the titles ladder, as today) · gold COSMETICS pill shows the spendable balance · collection bar. The same bar + 🎨 pill appear in the profile's meta column.

4 · The shop modal (mock)

Kit-modal like the titles ladder. Header: balance + collection bar. Items grouped by game (game icon + per-game progress), each group a grid of kit shop cells — the exact primitive shipped for the Drydock: icon painter, price, owned/affordable/locked states, touch two-step select→buy with a focused-desc line, mouse hover+click. Titles render at the bottom as the read-only prestige ladder.

✨ Rev 2 — group ordering: favorite games sort to the top of the store (same favorites the catalogue pins), then most-played (from profile data), then the rest — your games' cosmetics are always the first thing you see. Site-wide sets (cursors) sit above the game groups.

🎨 COSMETICS 🏆 320
12 / 58 · 21%
Golden Apple — Neon Snake's food gleams gold. 🏆 25
🐍 NEON SNAKE2/6
Apple✓ DEFAULT
Golden Apple🏆 25
Gem🏆 25
Rainbow Orb🏆 100
🧱 BRICK BREAKER1/9
Synthwave✓ DEFAULT
Wood Classic🏆 10
Neon Ice🏆 25
Lava Core🏆 50
🎖️ TITLES — prestige ladder (automatic, lifetime points)
⚔️ Knight of the Realm — YOURS500
🔮 Sorcerer of the Spire — next1,240 / 1,000 ✓ at next visit… 🔒 2,000
🧙 Archmage of the Arcane🔒 2,000 lifetime
Shop modal — kit shop cells (swatch painters), per-game headers with progress, focused-desc line, gold buy button (two-step on touch). Titles = read-only ladder with lifetime progress.

5 · In-game unlocking (no shop round-trips)

Anywhere a cosmetic is selected in a game, it can be bought in place: locked cells in the existing selection UI show the 🏆 price; tap once to select (desc + price show), tap again / hit the gold button to buy — the exact `locked:` + two-step machinery from the Drydock. Flyer's bird grid is the template:

— FLYER — 🏆 320
🐝Bee
🐦Robin
🦉Owl🏆 75
🐦‍⬛Raven🏆 250
🔥Phoenix🏆 500
Owl — silent night hunter with slow, heavy flaps. 🏆 75
Meadow Flyer's bird grid after migration — same grid, prices in challenge points, buy-in-place. Games without a selector today (most) gain a small "STYLE" grid group in their start menu using this same pattern.

6 · Launch catalogue — every live game (draft prices)

Defaults are free and pre-owned (count toward collection %). One "crown jewel" per game sits at 🏆 100; the birds keep a progressive tail. Launch total ≈ 🏆 2,375 across 58 items — but per the bands decision, the number that matters is per-item: nothing above a week except the flagged exceptions.

WhereSetItems (price 🏆)Rules
Site-wideCursor skins (desktop only)Classic FREE · Crosshair 25 · Paw 25 · Pixel Sword 50 · Neon Comet 50 · Rainbow Trail 100buy any
🐍 Neon SnakeFood skinsApple FREE · Cherry 10 · Golden Apple 25 · Gem 25 · Star Fruit 50 · Rainbow Orb 100buy any
🧱 Brick BreakerPaddle skinsSynthwave FREE · Wood Classic 10 · Neon Ice 25 · Lava Core 50 · Chrome 100buy any (user-specified)
Ball skinsNeon FREE · 8-Ball 25 · Comet 50 · Disco 50 · Plasma 100
🏰 Keep DefenderCastle skinsStone Keep FREE · Oak Fort 25 · Sandcastle 50 · Ice Keep 50 · Obsidian Citadel 100buy any
🫧 Bubble PopPop effectsClassic FREE · Confetti 25 · Stars 50 · Fireworks 100buy any
Shooter basesAqua FREE · Candy 25 · Royal Gold 50
🎯 RangeTarget skinsRings FREE · Neon Donut 25 · Fruit 50 · Alien Blob 50 · Gold Star 100buy any
Hit markersClassic FREE · Spark 25 · Boom 50
🗼 StackBlock palettesPastel FREE · Synthwave 25 · Forest 25 · Candy 50 · Gilded Mono 100buy any
🛸 AsteroidsShip colorsCyan FREE · Emerald 10 · Crimson 25 · Violet 25 · Gold 100 · CRT Green (whole-game retro tint) 50buy any
☄️ Asteroids+Hull colorsViolet FREE · Teal 25 · Blood Red 50 · Gold 100buy any
Engine trailsIon FREE · Ember 50 · Rainbow 100
🐤 Meadow FlyerBirds (migrated)Bee FREE · Robin 10 · Bluebird 25 · Parrot 50 · Owl 75 · Bielik 100 · Raróg 150 (exception) · Raven 250 (exception — #2 after Phoenix) · Phoenix 500 (exception — the aspirational one)buy any · owned birds stay · banked pts convert 1:1
🎖️ TitlesPrestige ladderPeasant 100 → Emperor 10,000 lifetime (unchanged)automatic — read-only in the shop

7 · Data & implementation shape

8 · Extra ideas (mine — take or leave)

9 · Questions — ALL RESOLVED✨ REV 2

Q1 — entry points: ✅ challenges menu (+ profile bar) ONLY. The main ☰ "shop" slot stays reserved for future merch — never mix them.
Q2 — selection scope: ✅ per-device, carried by Export/Import (like everything else).
Q3 — bird prices: ✅ progressive tail approved (Raven moved to #2: …Raróg 150 → Raven 250 → Phoenix 500); tune later from data.
Q4 — STYLE group placement: ✅ start menu — cosmetics you can see sell the chase.
Q5 — collection %: ✅ counts purchasables only; titles stay their own ladder.

10 · Challenge targets & good-run bars✨ REV 3 — RETUNED & APPLIED

✨ Rev 3 (2026-07-03) — the review below was acted on; these are LIVE now:
New targets — snake 150/300 · bubbles 3,000/5,000 · stack 25/50 · flyer 25/50 · Keep Defender wave 5 / wave 10 (kills the redundant score goal) · asteroids 4k/8k (second tier added) · asteroids+ 15k/30k · breakout 500/1,500 and Range 250/600 unchanged.
Good-run bar = the HARD daily target (snake 300, bubbles 5,000, breakout 1,500, stack 50, flyer 50, Range 600, asteroids 8,000, asteroids+ 30,000) — KD's hard goal is wave-based, so its bar is an estimated wave-10 score of 2,000 (confirm in playtest!).
Rotation is now genuinely shuffled — hashed by UTC day, same for everyone on a given day, never the same goal twice in a row, no more easy-half/hard-half clusters (46-day simulation: 0 repeats, 21/23 goals hit).
Mode leaks: accepted (any mode counts, by design).
⚠ Watch in playtest: with bars at hard-day level, "3 good runs today" and "10 good runs this week" got meaningfully harder, and the +2 🏆 trickle will pay only for hard-bar runs — if that feels too stingy, the fix is lowering the good3/wk-good10 counts or giving the trickle its own bar, not re-raising the targets.

The tables below are the ORIGINAL review (pre-retune numbers) — kept for the record.

Every target translated into concrete play (scoring rules read from each game's code), with an eyeball verdict against the bar "a casual player clears a daily in one or two tries (~3–8 min)". This matters doubly now: the good-run bars gate the +2 🏆 trickle, so a mis-set bar distorts the economy, not just a challenge. Nothing changed yet — this is the review sheet for your testing.

Daily single-game goals (22-day rotation)

GoalTargets (easy day / hard day — two separate goals per game in the 22-day rotation)In play termsEffortEyeball
🐍 Snake100 / 25010 / 25 apples (+10 each, no mode multipliers)~1 min / 3–4 minOK / OK
🫧 Bubble Pop1,000 / 3,000~20–25 good shots (pop = group×10×level, drops ×15) / needs level 2–3 multipliers3–4 min / 8–12 minOK / borderline HARD
🧱 Brick Breaker500 / 1,50050 / 150 bricks (10×level each; a full level-1 board = 180 bricks = 1,800)1–2 min / 3–5 minOK-easy / OK
🗼 Stack12 / 25~10 / ~20 placements (+1 each, perfects bonus) — Zen mode trivializes both30–45 s / 1.5–2 minTOO EASY / OK
🐤 Meadow Flyer8 / 20~5 / ~12 pipes (+1 each; collectibles add 2–5 in ~half the gaps)~20 s / 45–60 sOK-easy / OK
🎯 Range250 / 600~15 hits with small combos / ~20+ with sustained combo (hit = 10×combo tier) — easy in 60 s mode, targets don't pin durationone 30 s round / a good roundOK-easy / OK*
🏰 Keep Defenderwave 5 / 700cumulative medium score ≈ 600 after wave 5 + drops → both targets ≈ the same run (first boss)5–8 min (same run)OK / OK but REDUNDANT pair
🛸 Asteroids4,000wave 1 (4 rocks = 2,080) + most of wave 2 — only ONE goal (every other game has two)3–5 minOK
☄️ Asteroids+50,000 / 150,000survive to wave 11–12 / wave ~17–18 (cumulative ≈ 11.5k @w5, 40k @w10)15–20 min / 30+ minTOO HARD / FAR TOO HARD

Cross-game, random & weekly goals

GoalTargetEyeball
play2 / play3 / genres2 (daily)2–3 games / 2 genres todayOK — pure variety nudges, minutes of play
good3 (daily)3 good runs todayOK — assuming sane bars (see below); with asteroids+'s current bar it's effectively "not via that game"
rand-daily / rand-weeklyplay the pickOK — cycles all 9 games in 9 days/weeks
wk-distinct5 / wk-play12 / wk-genres3 / wk-good105 games · 12 plays · 3 genres · 10 good runs per weekOK — "more work, not harder" holds (~2 plays/day covers all)

Good-run bars (gate goodRuns challenges AND the new 🏆 trickle)

GameBarIn play termsEyeball
snake 100 · bubbles 1,000 · breakout 500 · flappy 8 · aim 250= the lower daily target1–4 min of decent playOK — consistent "cleared the easy daily" definition
stacker12~10 placements, ~40 s (Zen: trivial)TOO EASY — free trickle trophies
tower-defense300≈ clearing wave 3–4 on medium (below its own daily targets)OK-easy
asteroids2,000≈ clear wave 1OK
asteroids-plus50,000≈ wave 11–12 ≈ 15–20 minFAR TOO HARD — a "good run" costs 5× any other game's; kills the trickle there

Structural findings (beyond individual numbers)

Your playtest checklist

① Each game's LOWER target in 1–2 casual tries — which ones failed? · ② Stack via Zen — how silly does 12 feel? · ③ Range: 600 at 30 s vs 60 s — is the mode leak acceptable? · ④ Asteroids+: time an honest run to 12k and to 50k — does 12k feel like the other games' dailies? · ⑤ KD medium: note the score when wave 5 falls — confirm the ~600–700 redundancy. · ⑥ Bubble Pop: is 3,000 reachable in two focused tries?