Just for fun: Building a boggle-style word game

Github link

live version

Hi! I’m using meteor for a few projects at the moment. I also like to play boggle with my friends. I haven’t found a simple online version that I like, so I decided to build it myself.

Right now, you can:

  1. Refresh to get a new random game.
  2. Click and drag to select a word.
  3. Watch the timer countdown 3 minutes.

It should only allow legal moves of adjacent letters, and words of 3 letters or more.

I’ll be working on the following soon, feel free to make a pull request or create an issue to request something:

  1. User accounts.
  2. Save games/scores.
  3. Challenge other players.
  4. Variable sized games (5x5, 6x6 etc).
  5. Verifying against a local scrabble dictionary / api.
  6. Maybe more meteor word games?

Feedback appreciated. I need to write a readme tomorrow.

(Using: Blaze, bootstrap.)

7 Likes

that’s awesome! I’d suggest do this first :

3. Challenge other players.

When any user visits, route them to a new unique game url. They can send that url to a friend and play each other in realtime. That’s where Meteor really shines. Nice work!

2 Likes

I’ve implemented a non-real-time challenge system. Type a friend’s username in on your account page to set up a challenge.

I want to implement a real-time version that shows each competitors word count and score…but my day job needs some attention! Soon though.

1 Like

Very fun! :slightly_smiling: So far max 50 points. Being able to see top score list of all players would be great.

I get “Qu” instead of “Q” all the time.

If I stop the game in the middle, at the scores list it appears without score but with word counter from the last finished game.

1 Like

Thanks!

Top scores is a great idea. Not sure how it would work best though, by game / overall? Will think about it.

“Qu” counts as two letters. It just makes “Q” more useable. ie, Queen, Quest, Quit etc.

The point about word counter from pervious game, how did you “end in the middle”? Did you refresh the page? Somebody else mentioned that problem but I can’t reproduce it.

Thanks for your reply!

Yes, refreshing the page. You will end up with majority of users in the single player mode refreshing the page if they end up with poor letters, like 3-4 E in the same place of the board (happens quite often) or no S. S is the most important letter from the stack, because it doubles almost every verb and noun.

Imho if the game doesn’t have the “finished” flag (time run out or played clicked finish), it shouldn’t be visible at the score board.

What do you mean by game in this context? I’d start with single player mode best overall and daily results, by all players and also by particular player in his profile - I can’t check my best results after my last results move it out of the list.

I see that fixed, thanks! :slightly_smiling:

53 :slight_smile: How are your records guys?

1 Like

After last changes I’ve noticed a visible slow down of the game, in form of the words on the list appearing with 1-5 seconds delay.

I appreciate that I can now see which words are correct while playing, but still being able to see the list of incorrect ones after the game is over, would be nice.

Once, my game reset in the middle. It’s possible that you were pushing an update at that moment. Also my last result (47 points) is not visible in the last results list.

1 Like

Brajt,

Nice to see you’re hooked!

Yes, there are visible delays between when a word is selected and when a word is verified by the server. This is a limitation of meteor (or at least the meteor deployment on the free deployment host). The most efficient way to check the dict is using a trie [citation needed], but meteor can’t handle a full trie in memory. The next best thing was to make a collection and put an index on the words. Therein lies the problem.

The solution would be to store all words found locally and either cross them off if not a real word, show the score when verified, or fade them out until the server responds. Or at least that’s how I see it happening. I’ll probably do all of these in one update tomorrow or the next day.

The most recent updates today included fixing the routing and template organisation so the game state (playing/finished/already played etc) wasn’t on different routes. Not something iron-router provides (at least as far as I can tell). I ended up using a mixture of nested templates and session variables to store the state. It’s not very clean though.

1 Like

Yeah, crossing out if incorrect or fading until it’s confirmed by the server would do the trick. There still would be delay, but in the users’ mind, most of the feeling of the delay would be gone.

I believe loading into user’s memory only the 3-4 letter words (together around 6500 according to scrabble dictionary) but only with available letters would force the server to do calculations, but would help a lot and wouldn’t be too heavy for the client. This would make the method call necessary only for 5-6 letter words. So far I haven’t managed to use 7 letter word with 4x4 board, but it may be easier to achieve among native speakers or on larger board.

Can’t help with Iron Router sadly, I joined Meteor community when people already started recommending Flow Router. Speaking of which, did you start learning Meteor in January or did you join the forums in January?

The game scores are not saved anymore. :frowning:

Interesting idea with the shorter word list.

I started with meteor in September last year. I built a few simple things to get used to it, then built the app for another project (http://tkt.ninja) as a hybrid app using angular-meteor and ionic. We’re looking to fund a marketing campaign before we release it.

For this project, I wanted to explore blaze and iron-router. After using angular, everything just seemed so fragmented and changeable. I figured with the way things are going, some active development with blaze would be a good thing.

They are! They were just not being sorted correctly. Fixed!

1 Like

I’ve added a few updates, including:

  • Immediate updating of word list
  • The return of discarded words
  • A bug allowing you to see your opponents words before you play
  • A few more little bugs here and there
1 Like

I feel like I’m the only one who can’t get it to work. It doesn’t do anything when I click the letters, can’t drag them, can’t type (tried on Chrome and Firefox).

Hmm…The only supported input is click (or touch) and drag. I haven’t done anything other than use mouseDown and touchStart / touchMove etc events.

I haven’t come across any devices that don’t work yet. Feel free to check out the github and make a pull request if you can figure it out.

Sorry!

I fell foul of this for a while until I realised click and drag doesn’t quite describe the required action - which is more click and trace (adjacent letters to make a word).

2 Likes

62 points. :slight_smile: What are your results guys?

Well done! I think my best yet is 42.

Since the game went up, there have been over 13 hours of games played (naively assuming they all played to the end).