I recently have gotten really into Scrabble. It started with playing my mom and a friend on playscrabble.com in an attempt to find an alternative to Words with Friends. Then I discovered isc.ro, which has a more difficult UI but gives you more options and seems to have a more community experience.
Nonetheless, I still feel like I haven’t found the perfect Scrabble app. Here, I’ll offer some pros and cons to the apps above and reflect on some ideas I have for making my own website to play Scrabble, and potentially other board games, with friends. I’m mesmerized by the ability to play board games online, which I’ve been doing for some time now with my brother and my game-collecting uncle who lives on the coast. For most of my life, my disability made playing physical games a chore that could suck the enjoyment right out of it. Try directing an opponent to start spelling a word in Scrabble with the third-to-last tile in your hand, and you’ll see what I mean. “Now play the tile two to the left of that one. No, my left!” … Not to mention not being able to rearrange the tiles in your hand at will.
Besides disability concerns, online board games offer a guided experience where wrong moves are impossible, making it a lot easier to learn a game for the first time. Think of all the wrong ways of playing Monopoly that could have been avoided if we’d been playing on computers!1
But the two people I’ve played Scrabble with recently aren’t savvy tech users, and one only uses an iPhone and no laptop or desktop. Playscrabble.com was the easiest site I could find, but registering and logging in was not straightforward at all. It redirected to another site altogether, required the user to enter their email with warnings not to close the current browser tab, verify their account by clicking a link in their email, which brought them to a page with a message telling them to go to the original tab they were on. This is convoluted for anyone, but especially for users who don’t use browser tabs and don’t know what they are. And navigating browser tabs is annoying on phones for anybody.
Neither playscrabble.com nor isc.ro are very mobile friendly. The board and tiles shrink to fit the page instead of becoming a panning area similar to Words with Friends (or at least what I remember from Words with Friends).
One thing I like about isc.ro is that it offers the ability to play with challenges turned on so players can’t simply guess weird words until their play is accepted. Or at least, I appreciate that they offer the option. I was surprised to find myself not preferring to have challenges turned on after all. It seems best that the computer should just not let you play wrong words. Playing with reasonable time limits prevents you from wasting time guessing everything that might possibly be a word while giving you some leeway to discover new words.
That being said, I wish these sites offered the ability to play without a clock. You can go up to an hour max per player, and playscrabble.com actually causes you to lose if your phone is off or your browser is closed for more than 60 seconds. Sometimes you just want to play a casual game with friends, maybe stop to go to the bathroom or order pizza or what have you, and keep playing. It’s hard enough to get my IRL friends to play with me, especially without a more casual, non-timed mode. That was what was always good with Words with Friends — you could play completely asynchronously and have several games going at once. In my Words With Friends heyday, I was playing with several IRL friends on Facebook, a few at a time. You can’t get that level of opportunity to play with real people you know on other board game apps. Of course, a lot of the reason for that was the ubiquity of FB.
You might be asking at this point why I don’t just play Words With Friends. Well, I slowly grew tired of it back in the day, for no reason in particular. Fewer and fewer people I knew were playing it. I also think I burned myself out on it by playing too many simultaneous games at once. In addition, no time limit or challenges meant I was obsessively trying to guess words and every turn was taking me forever. It just became a chore.
I did log back in a month or so ago when I was looking for an app to use for my mom and my friend. But it seemed glitchy and just as hard to use as the others, plus a ton of marketing in the way. Besides, their board is not the traditional Scrabble board I know and love.
With all of these considerations floating around in my mind about Scrabble, I’ve also been really considering building my own game site to use with my own friends on my own server. Boardgamearena.com is great, but they don’t have Scrabble and aren’t easy for non-tech savvy or mobile users. And building a board game site is something I’ve always wanted to try my hand at. I’ve flirted with it before, but an honest-to-goodness attempt will really put my coding skills to the test.
More on that below for anyone who’s interested in programming.
I was going to start this project in December with this naive notion I could build a board game website that would rely on polling a PHP server with my frontend JavaScript. I was talking about this with my brother one day, and we decided to build something with the same technique that would be simpler: our own Discord-like chat app.
It worked well in that we actually started it and finished it during a two-week Christmas vacation. A great way to spend Christmas for sure 🤓.
But Blake summarized well the lesson we learned from it:
Pretty much every article about writing a real-time chat app will tell you that you need websockets. They are all correct. Polling is a terrible way to keep a chat client up-to-date.
But there’s nothing more educational than learning such things by experience. In my mind, I thought I just needed a simple “heartbeat” AJAX call in JavaScript to fetch the latest data. But an infinite number of unexpected questions spawn from that. Like, what does “latest” mean? What about data you’ve already loaded but that has changed since the last polling call, like previous chat messages that potentially could have been edited? If you want these previous messages, how far back should it go? Do you really want all those messages every time you poll?
Before this, I thought websockets existed mainly for performance to avoid all the AJAX requests needed for polling. I didn’t realize the extent to which it can greatly simplify your logic by giving your client-side JavaScript only what it needs exactly when it needs it. I just hadn’t thought about it before. Need to let your JavaScript know that a past message in the chat history was updated? Then just send an event over the websocket.
The problem is, I don’t want to leave PHP, which can’t handle websockets. I’m hoping the solution is to use Laravel’s event broadcasting with Pusher or some similar service for handling websocket connections. I experimented one weekend with Laravel Bootcamp’s lesson on building a Twitter clone, which involves setting up real-time notifications. It was very helpful and I highly recommend it if you want to get your head around how this works.
As I write this, I’m thinking that you could probably still use JavaScript HTTP polling rather than a third-party websockets server and still gain much of the benefit of websockets by writing some sort of abstraction that uses standard Laravel events and listeners to simulate sending realtime events to your JavaScript app. But I’m done going out of my way to avoid websockets.
Another aspect of Laravel that should come in handy is the ability to use Livewire, which gives you the ability to manage JavaScript state and interactions on the backend. I started coding a proof-of-concept Scrabble clone a few weeks ago without Laravel or Livewire and was worried all the JavaScript I was writing was eventually going to need to be essentially rewritten in PHP in order to validate player moves on the server. Maybe I don’t even need to validate moves on the server for an app I’m just using with friends, but not doing so feels sloppy. And Livewire seems especially apt to handle just this type of scenario.
If you’ve gotten this far into my rather dry rant, I hope you enjoyed it. I really am excited for all the possibilities that might come with writing my own board game platform. While I don’t really expect to be a competitor in this market and will still be a happy paying customer of boardgamearena.com until death, having my own server with my own code means I can adapt it to my needs and the needs of the friends and family I play with. And who knows, maybe invent a few of my own games along the way.
Nevertheless, I still maintain that Free Parking comes with a “jackpot” collected by all the money paid from Chance and Community Chest cards, the official rules be damned. ↩