A game I made so I could play the word-building games my grandma loves while protecting my privacy (apps like Words With Friends are embarrassingly bloated, and I don't have a smartphone anyway)
A privacy-preserving crossword game. This game protects your data through the simple expedient of not collecting any data.
Everything is performed client-side. Think about it as a game in the tradition of chess-by-correspondence: you make a move, then send the game state to your opponent, who makes their move... Even dictionary lookups are performed client-side (This makes for a larger-than-ideal web page, since you're downloading the entire dictionary every time you refresh it. Maybe there's some sort of client-side caching that can address this, but that's not part of the minimum viable product. You could also just download loadDict.js
for yourself and run the game offline if you want.)
The stable version of this game lives on my website, at https://bennettmcintosh.com/words
.
I can’t provide any privacy guarantees, though, because my website is hosted by GitHub, and I haven’t bothered to figure out what sort of analytics they collect from the URL parameters that store the game state. So if it’s really important to you that MSFT not have your crossword game moves (to train ScrabbleGPT? That seems not worth it) I suggest, even encourage you, to download the javascript source yourself and run it offline.
Navigating to the landing page (in this case, https://bennettmcintosh.com/words
, with no URL parameters) produces an empty game board and automatically draws seven tiles for you. Build words by clicking on a tile to select it, then click on the board to place it where you click, or on the rack to remove it from the board. If you have made a legal move, the Play
button will turn green and display the number of points this play would earn you.
If you're not sure why a move isn’t valid, clicking on the Play
button while it’s gray will produce a message explaining why.
Once you click the Play
button, the game automatically generates:
- A URL that includes the
seed
parameter. The seed parameter encodes the game state, so your opponent can visit this URL to view/play the game from their perspective - The text of an email or message you can send to your opponent with that URL (so that you can use communications protocol of your choice)
- A
mailto
link (with blank recipient field) that you can click to generate such an email. Simply input your opponent’s email address.
The first word must be placed on the blue sunflower square in the center. Future words must use at least one tile already in play. All moves must place tiles in only a single row or column, and must form only one ‘stem’ word (that is, while you can place tiles on either side of a tile already in play, you cannot place tiles on either side of a blank cell).
9 × A1 | 3 × B3 | 2 × C3 | 4 × D2 | 14 × E1 | 3 × F5 | 5 × G3 |
---|---|---|---|---|---|---|
5 × H3 | 9 × I1 | 1 × J8 | 2 × K6 | 5 × L2 | 3 × M2 | 5 × N1 |
9 × O5 | 3 × P3 | 1 × Q10 | 4 × R1 | 4 × S1 | 4 × T3 | 6 × U3 |
2 × VK | 2 × W5 | 1 × X8 | 2 × Y5 | 1 × Z9 | 3 × _0 |
For the first move in which a tile is placed on these cells, these multiply the value of the letter placed on them (purple & pink cells) or any word that includes them (blue and green cells, including the central blue cell) by the number shown in the cell.
- The game interprets
p1
andp2
parameters in the URL as player one and player two’s names, but those aren’t currently added to the URL that gets sent to your opponent. - Recent shortening to the
seed
parameter means there's no opportunity for a line break, so the email displayed at the end breaks the CSS formatting. - There’s debate among players (even within my own family) whether it’s more fun for a game to tell you in real-time whether the word you’re considering is legal, or to make you wait until pressing the
Play
button. As currently implemented, this game tells you in real time (because that’s how Grandma likes it!), but I might add an option to toggle that later.
Also of note: I provide a link to the Official SCRABBLE® Players' Dictionary (OSPD), because that provides a useful search tool for prefixes/suffixes, etc., but this game doesn't use OSPD. So the game may reject a play that would be valid per OSPD, or vice versa.