Word Magnet
A synonyms & antonyms game for ages 11–13. Same meaning attracts, opposite meaning repels.
Run it
open word-magnet/index.html # simplest
./serve.sh # local-serviceserve.sh also prints your LAN address so a phone or tablet on the same wi-fi can play —
and only the served version can be installed to a home screen. See PACKAGING.md for
iOS/Android.
Your progress
Saved in the browser under one stable key, wordmagnet. Three things follow from that:
- Updating the game never wipes it. New versions merge onto your existing save and fill in
any new fields with defaults; old fields are kept. Old wordmagnet.v1/v2 saves are read
and migrated automatically on first load.
- Each origin has its own save.
file://…,local-serviceand a hosted URL are
three separate browsers as far as storage is concerned. Pick one and stay on it.
- To move a save between devices or origins: Locker → Save file → copy the transfer
code, then paste it into the same box on the other device.
Modes
| Mode | What it is |
|---|---|
| Daily Challenge | Twelve rounds, seeded by the date — the same twelve for everyone, with a copyable result |
| Arcade | Three lives, a shrinking clock, combo to ×5, shields earned at 6 and 12 streaks |
| Practice | No clock, no lives, mistakes explain themselves — still earns XP |
| Needs work | Drills only the words you've got wrong; a word leaves the list after two right answers |
| Shooter | Targets drift across a field — fire on 2 synonyms and 2 antonyms, leave the 4 decoys alone |
| Word bank | Search every word and ladder; filter to Needs work / Mastered / My words |
| My words | Add your own words one at a time or paste a whole list |
Character, badges, profile
- 13 characters to unlock — and you can rename any of them (Locker → Characters).
- Your character is on screen the whole time you play: reacting to every answer, with a
combo meter and your pinned badges under it.
- 18 badges across 5 tiers, each with its own insignia. Earning one turns it into a
wearable pin — pin up to three and your character wears them, military-style.
- A player card with your call sign, rank, XP bar and pins shows on the Locker's Profile
tab and after every run.
Unlocks
Three separate routes, so there's always something to chase:
- Rank — reaching a rank opens skins, characters, gadgets and emoji sets.
- Badges — 8 cosmetics are earned only by earning a specific badge (e.g. Lie Detector
gives the Detective Cap and the Beasts emoji set; Week Streak gives the Vaporwave skin).
- Codes — some skins and characters can be unlocked only with a secret code, and they
stay completely hidden in the Locker until one is redeemed. Codes are stored as salted
hashes, so they aren't readable in the source, and the game never displays them.
Redeem at Locker → Profile → Secret codes.
Adding your own words
Just paste the words. One, or a hundred — commas, spaces or one per line. The game fills in
the meaning, synonyms and antonyms itself; you are never asked to supply them.
It resolves a typed word in three steps:
1. Words already in the game (149 bank + any pack + your own)
2. A built-in dictionary of 388 words, every one hand-written with a meaning, three
synonyms and three antonyms
3. An online dictionary lookup — only when the game is served from a real web address.
In the sandboxed artifact this request is blocked, so steps 1–2 are the whole answer there.
Word endings are understood, so running, kindness, happiest, copied and easier all
find their base word. Anything genuinely unresolvable is reported with a reason and skipped —
no forms to fill in.
On size: ~537 words costs about 220KB, against a 16MB budget. Storage is nowhere near the
limit; the dictionary grows as fast as entries can be written, and the hard part is the
antonyms — public dictionary data is rich in synonyms and almost empty of opposites.
Content
- 149 anchor words, each with 3 synonyms, 3 antonyms and a kid-readable meaning
- 43 intensity ladders (
annoyed → angry → furious → livid) - Words come from a shuffle bag — everything is used once before anything repeats, and words
on your "needs work" list are dealt in twice as often
Offline play + online word updates
The full 149-word bank is compiled into index.html, so the game works with no internet.packs/words.json is an optional versioned add-on: when the game is online and that file'sversion is newer than what's saved, the extra words download once, are validated, cached,
and merged into play. If it's missing or unreachable, nothing happens. To push new words
without shipping a new build, edit that file and raise version. Details in PACKAGING.md.
Files
index.html the whole game, self-contained
manifest.json PWA manifest (home-screen install)
sw.js offline cache; HTML network-first so updates always land
icons/ generated PNG icons
packs/words.json optional downloadable word pack (21 extra words, version 1)
serve.sh local web server on :8777
PACKAGING.md iOS / Android packaging routes
.build/ build scratch — mkicons.js regenerates the icons