Introduction
AmalgamA was the first game I actually finished. It's a casual puzzle game, very similar to Infinity Loop, but I didn't know about IL when I starting making AmalgamA. There is little proper game design in it, but I paid great care with the aesthetic details, and I still think there are some very cool aspects to it, even though it isn't geared towards being fun to actually play!
The game simply consists of rotating pieces in order to form a fully connected pattern at the end. What is special about it is how the puzzle generation works as well as how the music relates to the puzzles.
I worked on it in August and September of 2016. I had been playing around with Stephen Wolfram's totalistic cellular automata for a few months, and those experiments came together in this game! The whole thing actually started with a game called Missing Translation that I played. It had a similar mini-game with "edge matching puzzles" and rotating pieces, but it wasn't very good at all. Most puzzles I actually completed without "seeing" the solution, while I was still rotating pieces more or less at random. I wondered if I could automatically generate puzzles and their solutions and compute maybe the average steps they took to solve as a measure of difficulty. So I made a quick prototype in Game Maker:Studio and... then it completely derailed, which was a good thing! (My idea of computational evaluation is cleaner to implement with SAT solvers, I realized years later, and may still do something with it.
Once I realized how the cellular automata could generate puzzles, the game grew wings of its own and all I had to do was add some bells (quite literally) and whistles.
Puzzle Generation
Totalistic Cellular Automata
Strangely enough, I didn't come across cellular automata through Conway's Game of Life, but through Stephen Wolfram's work (there is his New Kind of Science book, which I confess I have not read, though I know the rough ideas he presents in it). You can also see my other project of a different kind of CA.
Cellular automata are simple programs that run repeatedly on a grid of uniform cells, and their behavior depends on the states of their neighbors. In this case, cells have a binary state, 0 or 1, and their own state depends on the sum of their neighbors' states (hence the name totalistic). The nice thing about this is that you can encode the different rules in the form of a short number, making experimentation with many different patterns easy.
Puzzle Generation
How do you go from a binary grid to a pattern of links? One idea is to create a link between adjacent cells with the same color (or state). This didn't look very good to me, though. Then I realized that I could superimpose a larger hexagonal grid on top of the CA, like the green hexagons in the figure to the right. The game pieces are the cells marked with a blue dot, and the existence of an edge is marked by the state of the cell crossed by the green edge.
If you're familiar with these kinds of CA, you know that they can grow. You can start with a grid full of white cells and a single one in the center, and that will quickly grow, changing the state of its immediate neighbors, who change their neighbors, and so on. Most rules aren't stable, either, which means that a black cell doesn't stay black forever. This creates a natural puzzle progression, from smaller to larger, and keeps it somewhat varied. You can also choose different seeds (I described a single black cell in the center, but you could have three, or two, or a full pattern). The rules are naturally preserve the symmetry of the seed, which is nice.
Honestly, I am not a big fan of Infinity Loop. When I played it, I was just looking for the next symmetrical pattern, which was prettier. I also played in short 10 minute bursts, perhaps once a day, solving a handful of small puzzles. AmalgamA was similarly about that. It wasn't the puzzles themselves, but a few minutes of relaxation looking for a cool pattern. The whole system of seeds and growth made it about a sequence of puzzles more than a single puzzle, however, an idea which appealed to me!
This created three natural game "modes":
- Random mode - the game chooses a random seed and rule, and generates progressively larger but unrelated puzzles;
- Growth mode - the player chooses a random seed and rule, and the player plays through the "natural" growth of puzzles;
- Daily mode - every day, the game generates a different seed and rule and the players play through 15 puzzles.
Rendering
Puzzles
As I said before, I didn't know about Infinity Loop before starting this project. So the rendering I had in mind wasn't of "sticks", but of triangles. In the end, I put both in the game, with the player choosing between whichever mode they prefer. You can see the two kinds below:
Coloring
The puzzles themselves are monotone. As a kind of "visual reward", however, I decided to add a bit of color to the triangle-rendering. It is fairly simple - I look for connected components in the CA graph and assign a different color to each isolated component, respecting symmetry. Each triangle also has a slight color variation for flavor.
The palettes were a bit lacking, as I just settled on certain angle-relation on the color wheel and then chose a handful of different colors. It would have probably worked better with either hand-picked palettes (for best looking but limited colors), or a more versatile palette generator (for more variety but probably less aesthetic appeal). Either way, I am still happy with the result, especially when you finally get to the larger puzzles, where there is more variety.
Music
The music in the game is one of the most contentious aspect of the game! Mostly because the first impression is very abrasive - you're confronted with rather dissonant music as soon as you start the first p I honestly didn't expect people to care much about the music of the game (I typically mute casual games and play my own music, and this is even more so in mobile), so I gave myself the freedom to be quirky.
The music is all "procedurally" generated, using a measure of dissonance to tie it to the puzzle state. As you approach the solution, the music generated gets progressively more and more consonant, reaching pure consonance when you solve the puzzle. I think I may have gotten the idea from Michael Brough's Number Quality. The system itself is a set of polyrhythmic sources. Each one plays a single note on a different beat. This was a collaboration between me and a friend.
Finally, I also coupled it with the visual-reward by giving the instruments more variety. As the color came in, some of the instruments also changed. These are tiny effects, but it's the kind of attention to detail I enjoy!
Software
You can download this one on my itch.io page. If you want to look into the code, feel free to ask.