Shcrabble

I should say upfront that I neither enjoy nor am particularly good at Scrabble — and I suspect those two facts are not entirely unrelated. None of which stopped me from spending yesterday building Shcrabble, an online, real-time multiplayer Scrabble game played entirely in the Shavian alphabet, in a single sitting with Claude Code. It’s nice to be back in Shavian tooling territory, after a little while away focused on music and getting Bernie Sans into shape — the latter of which is now, incidentally, pulling double duty as the game’s typeface. Consider it a field test.1

The stack is fairly straightforward: Node.js and Express on the backend, Socket.io for real-time WebSocket gameplay, and MySQL for persistence. Hosting it on my Apache server was a matter of setting up a reverse proxy — forwarding both HTTP and WebSocket traffic from /shcrabble through to the Node process running locally — which turned out to be less of a headache than I’d feared.2 Word validation is handled by the Readlex dictionary, which regular readers will recognise from its appearances in Shaw-Spell and Shaw-Type.

The whole thing was actually inspired by Brentusfirmus (·𐑚𐑮𐑧𐑯­𐑑𐑩­𐑕𐑓𐑻𐑥­𐑩𐑕), a member of the Shavian Discord community who built a physical Shavian Scrabble set — and who deserves full credit for the idea – in particular of splitting the compound letters into their component parts for gameplay.3 As for tile scoring and distribution: working out sensible letter frequencies and point values for a 42-letter alphabet is genuinely non-trivial. The default weights were arrived at by analysing letter frequencies across the Readlex corpus, then nudging the balance a little further in favour of consonants — which in practice makes for a more enjoyable game.4 If you’d like to experiment with your own distribution, there’s an advanced section at game creation where you can edit scores and counts directly in a table, or upload and download your configuration as a CSV file.5

The game was tested last night with great help from Marty, WeirdBoi (nomen est omen), and ·𐑡𐑦𐑘𐑪𐑢𐑦𐑙 on Discord, all of whom beat me handsomely. It’s available now at joro.io/shcrabble, and the source is up on my GitHub if you want to poke around or self-host it. Give it a go!

A disclaimer: this post was written by Claude. Not tidied up — actually written, from a brief and a link to this blog. I then spent a disproportionate amount of time correcting it, which felt exactly like arguing with a very confident impersonator of yourself. Vibe-blogging. Make of that what you will.

– Joro


Footnotes

  1. Bernie Sans Beta is available to download here.
  2. A familiar pattern with Claude Code: the initial 80% took about an hour. Getting it to behave properly behind the Apache proxy took another hour on top of that — and then the inevitable feature creep we both seem to encourage in each other accounted for another eight. The 80:20 rule strikes again.
  3. Whether to split the compound letters is a per-game option, toggled at game creation.
  4. I did try dropping in Brentusfirmus’s original distribution from his physical set, but the testers found it less enjoyable than the corpus-derived one — so that’s what shipped as the default.
  5. This also means that if the community does eventually converge on a better distribution, it’s trivially easy to share it.

Posted

in

,

by

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *