Domino Grove Development Log


Dramatis Personae:

  • Matt Brelsford - design + programmer + advisor
  • Fergus Ferguson - longtime collaborator + artist
  • Chris Bolte - musician + sound designer extraordinaire
  • Paradise - avante garde artsy game design discord server
  • Tiny Mass Games (TMG) - game design community of folks making cool games on short timeframes

The Idea

Two years ago I made a tiling deckbuilder called Hellscaper. It had many good ideas in it but they never quite gelled together. At the time, I attributed that to not having enough in the game. Not enough character classes, tiles, tutorials. I decided to flip that on its head. What would happen if I cut it back to something simple and elegant?


During playtesting for hellscaper, the thing players enjoyed the most was grouping similar things together. They did this even when it wasn't the optimal strategy. If you ever notice that a particular part of a prototype or game is standing out as especially fun or intuitive - save it! Those are always useful to have in your back pocket.

When I thought about making an elegant simplification of Hellscaper I remembered that tendency for players to group similar things together. What if I made a game that had that as the only mechanic?

Another part of Hellscaper that I wanted to simplify was the way you placed tiles. In Hellscaper, you get tiles in groups of 2 or 3. From a theoretical perspective, placing tiles in groups makes the player build out the challenges that they face later on. Lots of games start with some complicated setup (like an encounter of enemies) and the player reduces their numbers until the game is back to a clean slate with nothing to do. Then more enemies come. When you're placing tiles, you are building up a situation which you'll have to react to in the future. That lets you start with a minimal setup. The trick is that if you let players place tiles one at a time then there's nothing to stop them from making perfectly optimal placements. Adding even one tile stuck onto the side creates tradeoffs, planning and side effects. I realized you only really need 2 to get the dynamics I wanted, not three. As an extra bonus, while groups of 3 or more tiles have the mathematical and jargon-y name "polyominoes" groups of 2 tiles have a delightfully familiar name: dominoes.


While I was pondering this grouping idea, I had just recently replayed the old card game Set. In set, each card has a shape, color, pattern and multiplicity. You lay the cards out in a 3 by 4 grid and everyone stares at the cards to try to find sets of 3 that, for each quality, are either all the same or all different. It's surprisingly fun to look for patterns. It requires your brain to do these little flips where you focus on different aspects and rearrange the cards in your head.

So I had these two ideas, a minimalist domino Hellscaper focused on grouping and a game about seeing multiple kinds of patterns. At this point the creative spark leaped the gap between them - each domino could consist of 2 tiles with a plant of a certain color and shape. This is the one page game design doc and implementation doc that I wrote at the time. Looking back, the main things that stand out as the (few) differences between these documents and the finished game are theming being a garden of flowers instead of a grove of trees, and the 2 minute timer I thought I would add.

The last main influence on the game was make ten, simply because I'd been playing a lot of it. That's where the idea for a 2 minute timer came from. After implemented the core loop I realized that a timer would impose on the relaxing nature of the game so I decided to scrap it, but there are still influences of make ten that survive in the game. The main one is make ten's ambivalence about fairness. Some boards are just better than others and that's fine, the bell curve combined with repeat plays sorts that out. Domino Grove is the same way. Theoretically you could get perfect tiles that score over a thousand points. There's some exciting treasure seeking exploration to starting a new game because you never know how close to that ideal you're going to get. Quite frankly, it's addictive.


The other vestige of make ten that survives in Domino Grove is the scoring. It's not radical, but I'd forgotten how compelling a simple score can be. When you use a score instead of a binary win/lose condition you make every move matter. Additionally, Domino Grove and make ten both have an exponential scoring thing going on that makes the ends of games exciting. Make ten allows you to highlight empty portions of the board for extra points, which means you can score big when you've cleared a big chunk of the board already. In Domino Grove you score a point for each shape in your group (the key element which incentivizes you to group them together) which also means that you have your highest scoring potential at the end of the game.

Initial Implementation

The implementation had no right to go as smoothly as it did. This is thanks, in large part, to using Brian Cronin's black box sim pattern. We'd learned it from him during our last project, a strategy roguelike that is now stuck in NDA IP limbo (RIP). The key idea is that you have a "black box" section of your code that accepts a world state and an input. The black box instantly and deterministically resolves that input into a new world state and a record of all the things that happened along the way. You can then feed that record into another part of your code responsible for player feedback like updating the visuals, performing animations and sound effects.

Starting development of Domino Grove with this pattern made development much faster. The separation of concerns makes it easier to diagnose and fix problems. It also makes a lot of things easy that are usually very hard (previews, undo systems, saving and loading) but even without any of those it's still worth it.

When I went looking for tree icons on noun project I came up with these. My initial instinct was to have 4 colors and 4 shapes on an 8x8 grid. Matt took one look at the project and gave me two really good pieces of feedback:

  1. The shapes should all have a similar level of detail.
  2. The game will probably be more interesting if you make the grid smaller and not square.


I replaced the palm tree and the cloud looking tree with a square tree, but I couldn't think of a fourth simple tree shape (maybe a star? an upside down triangle?). Eventually I gave up and ran it with 3 shapes and 4 colors. This happy accident made the game deeper. By having a different number of each category, they had taken on different strategic value. On average it's better to go for large groups of shapes because a tile of a specific shape is more likely to arrive than a tile of a specific color. However, sometimes you get dealt dominoes that happen to have a lot of one color. At what point does it become worth it to prioritize color over shapes? There's no one answer to that question, you've got to look at the board in front of you. That's depth.

At this point the game looked like so:


I posted a link to the game in Paradise to get some feedback from other designers. The feedback was mainly positive, with a couple notes on game feel, but one observation stood out as very important. It was from pancelor, the creator of make ten. By coloring the squares, he'd elegantly shown that it is not possible to fill in the board from this position. Any domino must cover one red square and one blue square. After placing 8 dominoes there must be 2 red squares left, but no two red squares are adjacent. Fixing this issue was a simple change to only spawn the starting tile on a red square, but I never would have thought to do it without this detour into the math of dominoes. Math is important!


Matt dropped in to do some polish-y stuff, the most important of which was animating the scores, making the group scoring more obvious and adding some much needed sound effects. Working with collaborators is energizing!

Wildcards

Matt and I had a design meeting to decide what to do next. We knew that the game was really good. Matt described the game as a delicious taco with all the basics. The last thing it needed was a little squeeze of lime. A slight accentuation to make everything else shine brighter. (We're both partial to food metaphors)

We had a lot of options, and I think any of these would have worked.

  1. Some limited ability to peek at the next domino
  2. A special kind of tile that needs to be separate from other tiles of the same kind (if two touch you lose)
  3. A wildcard that counts as any shape or any color

I had a good feeling about option 3. It's a classic thing that everyone can understand, and it adds to your power instead of detracting from it. This is a feel-good game, it should have a feel-good twist. It also has a quality that I now view as a good sign: it seems intuitive but is actually complicated under the hood. In other words, easy to learn but hard to master. As a programmer, it's often tempting to make things the other way around where it's easy to program but confusing to the player. That's a bad instinct.

Why is a wildcard complicated under the hood? Well, how should it score? Do you have to choose what color it is when you place it? Is it somehow always all colors? If so, should it score for every color group that it's adjacent to? Here's how I implemented it: when you place the wildcard it scores for every color group it's adjacent to. After you've placed it, it always counts as whatever color is being tallied if it's adjacent to that group. The combination of these traits makes it a bit strange when you place two wildcards next to each other! First they score as a group of two (they share the color "wildcard") then each color group propagates through both of them.

As a side note, the current visuals for wildcards took a couple iterations to get right. First I tried these empty outline trees but they looked too different than everything else. Matt suggested a shadowy look for them, and that worked well! Originally the wildcards showed up randomly just like any other color but more rare (1/16 chance) and the eyeballs were a separate thing that showed up when you passed each 100 point threshold. I decided to combine those two dangling threads to give the wildcards eyeballs and have them only show up when you pass each 100 point threshold. The perfect strategic squeeze of lime.


Some people have asked why there are no shape wildcards. The answer is twofold.

  1. How do you make a tree with no shape? Would it be a morphing blob? That would look cool but be hard to implement.
  2. I like that it's an extra little nudge of difference between shapes and colors. It gives them a slightly different texture, and therefore slightly different strategic implications.

Scoring

There's something subtle I learned about scoring while making this project. Chasing high scores is fun and addicting, especially when some seeds are better than others. However, I don't find high score chasing to be the most rewarding activity in a game like this. I like to make the most of a bad situation. I love to improvise together with the game even when it's not giving me the perfect tiles. To encourage this type of play, I included an average score from your last 10 games along with a personal best. Now even when you're having a horrible run you still want to do your best, to keep your average up.


Music and sound effects

One of the first things I did when prototyping the game was to add in ambient forest sounds. Shoutout to FreeSounds.org! It was important to me that the game feel like being in nature. Ambient sounds make a game feel like it exists in a real space.

Matt added a nice arpeggio sound effect when groups score. I wanted the sound effects to reinforce the scoring rules, so I changed the scoring to count from smaller groups to larger groups, and to increase the pitch of the sound effect when you scored more. (Side note: if you want to increase the pitch of a musical note try multiplying by the 12th root of 2. This makes the note go up by a single half step). These scoring sounds were effective in an arcade-y way but we wanted something more satisfying and beautiful. Enter, Chris.

Chris and I got on a screenshared discord call and talked about what we wanted it to sound like. Chris put in some great sound effects and after a couple rounds of trial and error we settled on the current implementation. When a group scores, it plays a list of notes chosen semi-randomly from a mostly pentatonic scale. The larger the group, the bigger the list of notes and therefore the more complex the chord. When you're scoring multiple groups in a row, there's a chance for the game to interject a discordant note into the middle chords, but it's not allowed to end on anything discordant. In fact, the last chord in every set of scoring sounds contains the root note for an extra dose of finality.

Chris also added all the satisfying sounds for rotating and placing dominoes. Later on, Matt added more delay between the notes so they feel more relaxed and flowing.

Finishing

It is hard to finish a game. There's always more you could do. From a design perspective, I'm grateful that Matt helped me see that the game was lovely as a minimal thing and didn't need extra features. Even still, there is always more you can do to polish a game. To finish, I need a deadline. Luckily, one came a-calling!


It was a bit of a scramble, but we did manage to get the game into a release-able state by Friday (the next day!) We aimed to release it by 1pm and finally got it out the door by 5pm. Corey was very understanding about it as I continued to push back the time 😅 - thank you Corey! It was a wonderful boost to see the thinky game community turn their minds to the task of unraveling the strategic depths of Domino Grove. (P.S. you can still find our discussions on the thinky games discord)

Extra Features

After launch, there were two main features we wanted to add: touchscreen compatibility and a daily mode.

Mobile was not easy to support but I'm happy we did because it lets people play much more easily, and in places they couldn't before. I have a couple friends who I know wouldn't be able to play the game at all without it, so that already makes it worth the work to me! I'm still not completely satisfied with the solution we landed on for dragging and dropping the dominoes because your finger blocks you from seeing what you're doing. I could see myself returning to fix this in the future.

Daily mode is now my favorite way to play the game. These kinds of games can be addicting to me in an "ate too much sugar" kind of way. The daily helps me focus on deliberately playing and really thinking about my decisions. It's also a fun way to compare with others playing the game because you know you got the same pieces. There's still luck involved (some decisions are essentially a coin flip, but can have ramifications down the line), but generally it limits the amount you can discount a lucky seed as being the reason someone got more points than you. Dailies also encourage you to make the most of the situation you're in, since you've only got one attempt each day.

If you try the game, please tell me what you think of it! (and what you got for the daily that day 😉) https://ezra-szanton.itch.io/domino-grove

Files

domino-garden-webgl.zip Play in browser
Version 49 5 days ago

Leave a comment

Log in with itch.io to leave a comment.