I play very few mobile games but Combine was one of them. A few years ago the app stopped being maintained and I decided to build it myself. I used the web version of Combine as a requirements guide to start with.
I went through a tutorial series on Udemy to learn some Unity basics, once I understood how to do anything in Unity I jumped right in and started programming the core gameplay. I use a breadth-first-search approach to finding matches, if any path is more than 3, it goes back to the root and updates it's value.
After achieving the main game loop there were a few features I wanted to add including a leaderboard and a peek at the next set of colors. From a gameplay perspective, knowing the next set of colors allows the player to be more creative with their current colors to find the best placement based on the next colors.
I wanted the gameplay to be uninteruppted which is why I wanted to develop my own leaderboard rather than utilize the leaderboards in the game stores. With a custom leaderboard, players on iOS, Android, and the web can all compete against each other and I could customize the design.
The leaderboard is a .NET Core REST API running in AWS with an RDS database to keep track of scores.
Since launching the game I've added some more game modes including:
- Shot Clock: A limited amount of time to drop colors
- Timer: A limited amount of time to score points
- Power Up: The ability to pick up a trash-can powerup to destroy your current color set, if you don't want them
I wanted a darker more retro arcade theme for Merge so I focused on Red and Black as the main colors. I also wanted to increase my accessiblity by not relying only on colors to convey values, so I integrated the font into the colors for more clarity.
To keep UX clear I made sure to use fonts in a consistent way where the Red main font was always a button and gray softer fonts were descriptive.
I wanted to save the player in case they lost internet connectivity when they finished a great game, in case this happens the game will ask the player for their name and save the score locally. When the player starts their next game, if there is a saved score, it will try to upload it.
In my opinion music is one of the most important factors in providing a great game experience. I took a few days to try to design a fun theme that would be memorable but not too distracting. My goal was to have the music help the player think while building on the theme. I'm proud of how the music turned out and am happy how changing the speeds for the different menu options was a nice creative solution to getting different music but staying on theme.