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>
78 lines
3.3 KiB
YAML
78 lines
3.3 KiB
YAML
id: wavelength-static
|
||
engine: dial
|
||
category: co-op
|
||
title: "Wavelength: Static"
|
||
tagline: One-word clues. Narrow targets. And the guesser can only see half the dial.
|
||
estimatedMinutes: 20
|
||
difficulty: 5
|
||
players: { min: 2, max: 2 }
|
||
theme: { primary: "#8338ec", accent: "#3a86ff", background: "#06040d", headingFont: "JetBrains Mono" }
|
||
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: |
|
||
☠️ **Nightmare rules.**
|
||
- Clues are **exactly one word**, and you can **never reuse a word** used earlier in the game.
|
||
- The guesser only sees the **left** label. The right label is lost in static. Work it out from the clue... and from each other.
|
||
- The guesser's dial has **no numbers**.
|
||
- Scoring bands are razor thin. 10 rounds. Three keys.
|
||
dial:
|
||
rounds: 10
|
||
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: 2, points: 4 }
|
||
- { within: 5, points: 3 }
|
||
- { within: 8, points: 2 }
|
||
clue:
|
||
maxWords: 1
|
||
maxChars: 30
|
||
banLabelWords: true # clue can't contain any word from either label (normalized, case-insensitive)
|
||
noRepeatWords: true # if true, no clue word may be reused within the game
|
||
guesserSeesLabels: left # both | left | none
|
||
guesserSeesNumbers: false # whether the dial shows 0–100 tick numbers to the guesser
|
||
keys:
|
||
- { at: 12, name: Static Key }
|
||
- { at: 20, name: Signal Key }
|
||
- { at: 26, name: Clear Channel Key }
|
||
spectra:
|
||
- { id: s01, left: "Cold", right: "Hot" }
|
||
- { id: s02, left: "Ordinary", right: "Magical" }
|
||
- { id: s03, left: "Past", right: "Future" }
|
||
- { id: s04, left: "Bitter", right: "Sweet" }
|
||
- { id: s05, left: "Simple", right: "Complicated" }
|
||
- { id: s06, left: "Silent", right: "Deafening" }
|
||
- { id: s07, left: "Fake", right: "Genuine" }
|
||
- { id: s08, left: "Temporary", right: "Permanent" }
|
||
- { id: s09, left: "Safe", right: "Dangerous" }
|
||
- { id: s10, left: "Nobody knows it", right: "Everybody knows it" }
|
||
- { id: s11, left: "Square", right: "Round" }
|
||
- { id: s12, left: "Fiction", right: "Fact" }
|
||
- { id: s13, left: "Smooth", right: "Rough" }
|
||
- { id: s14, left: "Light", right: "Heavy" }
|
||
- { id: s15, left: "Weird", right: "Normal" }
|
||
- { id: s16, left: "Sacred", right: "Silly" }
|
||
- { id: s17, left: "Harmless", right: "Deadly" }
|
||
- { id: s18, left: "Bad advice", right: "Good advice" }
|
||
- { id: s19, left: "Introvert", right: "Extrovert" }
|
||
- { id: s20, left: "Ancient", right: "Brand new" }
|
||
- { id: s21, left: "Dull", right: "Shiny" }
|
||
- { id: s22, left: "Soft skill", right: "Hard skill" }
|
||
- { id: s23, left: "Mainstream", right: "Niche" }
|
||
- { id: s24, left: "Peaceful", right: "Violent" }
|
||
- { id: s25, left: "Tasteless", right: "Delicious" }
|
||
- { id: s26, left: "Low quality", right: "High quality" }
|
||
- { id: s27, left: "Calm", right: "Panicked" }
|
||
- { id: s28, left: "Childish", right: "Mature" }
|
||
- { id: s29, left: "Guilty pleasure", right: "Proud pleasure" }
|
||
- { id: s30, left: "Overpriced", right: "Bargain" }
|
||
- { id: s31, left: "Messy", right: "Tidy" }
|
||
- { id: s32, left: "Rural", right: "Urban" }
|
||
|
||
successEnding: |
|
||
Through all that static, you still found each other. 📡🔑
|