Game pack 3: 22 new games (19-40), 40 in total. - New engines: dial (Wavelength / Mind Meld), twin (Twin Rooms / Spot the Difference, incl. mirror mode) and blueprint (Describe & Draw, incl. peeks, overlap scoring and a rotated Builder canvas) - Labyrinth: items and doors (Hedge Maze) - Defuse: manualFrom, roles swapping every level behind a Ready card, and duplicate wire modules (Tick Tock: Switch) - Generic time limits for the new engines; sync/defuse successEnding - Library: engine-label chips and filters; Noto Color Emoji font - Validation: Appendix A checks ported, with a per-game summary - Quote comma/colon-split labels in five new YAMLs (wording unchanged) - Tests for all new engines and sanitized payloads of all 22 games - Docs: CLAUDE.md, GAMES.md (pack 3 spoiler guide), How to Play Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
80 lines
3.5 KiB
YAML
80 lines
3.5 KiB
YAML
id: wavelength-tune-in
|
||
engine: dial
|
||
category: co-op
|
||
title: "Wavelength: Tune In"
|
||
tagline: One of you knows where the needle should land. One clue. Can you read each other's minds?
|
||
estimatedMinutes: 10
|
||
difficulty: 1
|
||
players: { min: 2, max: 2 }
|
||
theme: { primary: "#06d6a0", accent: "#ffd166", background: "#04120d", headingFont: "Playfair Display" }
|
||
roles:
|
||
A:
|
||
name: Partner A
|
||
blurb: You give the clue in odd rounds and guess in even rounds.
|
||
B:
|
||
name: Partner B
|
||
blurb: You guess in odd rounds and give the clue in even rounds.
|
||
intro: |
|
||
Each round, a dial appears with two opposites, like **Cold ↔ Hot**. The **clue-giver** secretly sees where
|
||
the target sits on the dial and types a short clue (up to 5 words), something that sits at that spot.
|
||
The **guesser** turns the dial to where they think the target is, then locks in.
|
||
|
||
Example: target near "Hot" → clue "a fresh cup of coffee". Target in the middle → "a bath you forgot about".
|
||
|
||
Wide scoring bands. 6 rounds. Two keys to win. No talking during a round, just the clue!
|
||
dial:
|
||
rounds: 6
|
||
range: [0, 100]
|
||
targetMargin: 5 # hidden target is a random integer from 5 to 95
|
||
scoring: # distance from target → points (first band that fits)
|
||
- { within: 5, points: 4 }
|
||
- { within: 10, points: 3 }
|
||
- { within: 15, points: 2 }
|
||
- { within: 20, points: 1 }
|
||
clue:
|
||
maxWords: 5
|
||
maxChars: 30
|
||
banLabelWords: true # clue can't contain any word from either label (normalized, case-insensitive)
|
||
noRepeatWords: false # if true, no clue word may be reused within the game
|
||
guesserSeesLabels: both # both | left | none
|
||
guesserSeesNumbers: true # whether the dial shows 0–100 tick numbers to the guesser
|
||
keys:
|
||
- { at: 8, name: Tuning Key }
|
||
- { at: 14, name: Frequency Key }
|
||
spectra:
|
||
- { id: g01, left: "Cold", right: "Hot" }
|
||
- { id: g02, left: "Cheap", right: "Expensive" }
|
||
- { id: g03, left: "Useless", right: "Useful" }
|
||
- { id: g04, left: "Boring", right: "Exciting" }
|
||
- { id: g05, left: "Quiet", right: "Loud" }
|
||
- { id: g06, left: "Tiny", right: "Huge" }
|
||
- { id: g07, left: "Healthy snack", right: "Unhealthy snack" }
|
||
- { id: g08, left: "Easy to spell", right: "Hard to spell" }
|
||
- { id: g09, left: "Scary", right: "Cute" }
|
||
- { id: g10, left: "Old-fashioned", right: "Modern" }
|
||
- { id: g11, left: "Overrated", right: "Underrated" }
|
||
- { id: g12, left: "Smells bad", right: "Smells good" }
|
||
- { id: g13, left: "Rare", right: "Common" }
|
||
- { id: g14, left: "Bad movie", right: "Great movie" }
|
||
- { id: g15, left: "Soft", right: "Hard" }
|
||
- { id: g16, left: "Normal pet", right: "Weird pet" }
|
||
- { id: g17, left: "Sad song", right: "Happy song" }
|
||
- { id: g18, left: "Easy job", right: "Hard job" }
|
||
- { id: g19, left: "Fragile", right: "Unbreakable" }
|
||
- { id: g20, left: "Breakfast food", right: "Dinner food" }
|
||
- { id: g21, left: "Forgettable", right: "Unforgettable" }
|
||
- { id: g22, left: "Slow", right: "Fast" }
|
||
- { id: g23, left: "Ugly", right: "Beautiful" }
|
||
- { id: g24, left: "Villain", right: "Hero" }
|
||
- { id: g25, left: "Dry", right: "Wet" }
|
||
- { id: g26, left: "Mild", right: "Spicy" }
|
||
- { id: g27, left: "Lazy", right: "Hardworking" }
|
||
- { id: g28, left: "Indoor activity", right: "Outdoor activity" }
|
||
- { id: g29, left: "Kid's toy", right: "Adult's toy" }
|
||
- { id: g30, left: "Waste of money", right: "Worth every cent" }
|
||
- { id: g31, left: "Weak superpower", right: "Strong superpower" }
|
||
- { id: g32, left: "Short-lived", right: "Lasts forever" }
|
||
|
||
successEnding: |
|
||
You two are on the same frequency. 📻🔑
|