I made another thing! This time, I made my first game. Well, the first game I’ve ever finished (I’ll get back to you someday Mahjong). It’s a JavaScript web implementation of the game Blicblock that your Sims play in The Sims 4. I built it using AngularJS, my new loves Yeoman and Bower, and Bootstrap. You can try it out in your web browser and view or contribute to the source code on Github.

Blicblock in The Sims 4 seems to be a combination of Tetris and Bejeweled. Colored blocks fall from the top of the screen and Sims seem to combine them into tetrominos–the shapes in Tetris–before the entire tetromino disappears. So match any four blocks of the same color.

Here’s my Sim playing Blicblock in The Sims 4:

My Sim playing Blicblock in The Sims 4

And here’s a screenshot of BlicblockJS that I built:

BlicblockJS

I’ve tried to keep BlicblockJS as similar to the original Sims 4 game as possible. When I first started making the game, I didn’t even know if it would be fun to play, I mainly just wanted to see if I could implement the game my Sims were playing. Turns out, BlicblockJS is pretty fun, and offers a challenge since the rate at which blocks drop speeds up as you progress.

I did make one intentional change from The Sims 4 Blicblock by increasing the number of block colors. In The Sims 4, Blicblock screens only ever have four colors: magenta, green, yellow, and blue. However, the board is five columns wide. This means you can forever just stack straight lines of blocks and score points without losing. So I added two colors, white and orange, so you are forced to make other shapes to score points.

Since releasing an initial version on Heroku for others to play, I’ve gotten my coworkers to try it out. They started a scoreboard on the chalkboard at work, which prompted me to add a Rails back end to the client-side game for the purposes of keeping a global scoreboard. The Rails app is part of the same Github repo, so you can check it out, too. It’s pretty straightforward, using a scores table to record the user’s initials, their score, the date, and IP address. The Rails app functions only as an REST API, responding with JSON.

BlicblockJS scoreboard at work

I’ve been considering adding the ability to record each move in a game so that the game could be watched later. This might also be a useful tool for tracking down bugs, of which there have already been a few. Jon also suggested it could be neat to play the game with someone, like maybe you see what’s happening in their game and their moves somehow affect you. Maybe every time the other person clears a tetromino, you receive extra blocks that you have to deal with. The game board is small enough–7x5–that it probably wouldn’t be feasible to drop too many blocks on you at once, but maybe just one or two extra at a time would provide a manageable challenge.

Folks in the /r/thesims subreddit have suggested Blicblock would make for a fun mobile game. While I’ve never developed for iOS before, I’d like to make an Android version. It could use the same scoreboard as BlicblockJS by talking to the Rails API. I’d also like to add swipe controls to BlicblockJS so people can play in their tablet browsers.