Conway’s Game of Life is the archetypal example of complex results from simple rules. You can look it up elsewhere, but, for completeness, here’s my minimal text description of it. It’s played on a 2D grid of any size. Each cell has 8 neighbors: 2 vertical, 2 horizontal, and 4 diagonal. Each cell in the grid is either alive or dead. A certain rule is applied to every cell simultaneously in what is called a generation. The rule examines how many of a cell’s 8 neighbors are alive. If 0 or 1 are alive, the cell stays or becomes dead as if by loneliness. If 2 are alive, the cell stays the same. If 3 are alive, the cell stays or becomes alive. If 4 or more are alive, the cell stays or becomes dead as if by overpopulation.
If you start with a random distribution of alive cells, as generations pass the cells quickly organize themselves into various patterns that seem like organisms. Hence “life” in the title.
The “game” part of the title is a bit misleading to nonmathematicians, because no one actually plays it; the rules don’t require any player input. To mathematicians, it’s still a game, just a “zero player game”. An idea I had was to make it into a game with more than zero players. If such interesting complexity could come out of simple rules, maybe if I added players and minimalistic rules for how they interact, interesting complex strategy would emerge. Since it was a pretty simple program to write, I made it into my first iPhone/iPad app. You can check it out here and look at a video here. The music in the video is procedurally generated based on the Game of Life. I’ll have a post on that soon.
So the rules I added to get from Conway’s Game of Life to Game of Life Multiplayer are as follows. The board is limited to 64×64 cells. Live cells belong to players; players and their cells are differentiated by color. Players start off by placing one cell anywhere on the board. The first player has most choice over where to start, but the last player has most knowledge of other player locations. Now the “rounds” start. A round consists of each player taking their turn. Players can only see cells near their own population of live cells. On their turn, a player can make a number of dead cells alive with their color. The number is a function of how many live cells the player has. No generations pass in first round because if they did, players who only had the chance to place a single cell would die without ever having played. However, after the last player has played in the first round, 5 generations of simulation pass after every player’s turn. Live cells of the same color obey the same rules as Conway’s Game of Life. Live cells that have neighbors of a different color always die. Players can see the evolution of the board near their population from their last turn to their current turn. The relative population sizes of the players is visible to all players.
Those are the rules, so let’s see what strategies emerged. As part of the game programmer’s curse, I haven’t yet played anyone who could beat me at the game. So although I may be best suited to comment on the strategy of the game, I hope my views will be overthrown when someone figures out an even better way to think about it.
The first thing you want to do is get your population up fast, so you have more power early on. Power is some abstract concept which relates to how many cells you can place in a turn and how much of the board you can see, among other things. If it’s a two player game and you’re the second player, you might opt for eradicating your opponent straight up (a “rush”). There’s not much more to say about that; you either win or lose. To get your population up fast, you have to make some “exploders”. Certain small patterns of cells, “seeds”, will quickly and unstably expand. One of my favorites is the f pentomino. The quick and cheap nature of exploders makes them useful throughout the game as well.
Patterns that travel across the board can be used as “scouts”. When your initial exploder is still exploding, you want to get out of its way for your second, or they will interact with each other and you get one big random pattern instead of two exploders. So you can send a scout off and build a second exploder near it once it’s far enough away. Placing single cells whose only purpose is to immediately increase your sight, which I call “stepping stones”, might suffice, or they can also help give your scout a head start. You can also locate opponents with scouts. When a scout finds an opponent, chances are it’ll be destroyed. The only scout I’ve used to date is the glider, which travels diagonally across the board.
Once you’ve located an opponent, you need to build some “static structures” so you can get close before mounting your attack. Static structures are things that last forever and don’t move. A blinker is an example which switches between two states. A block stays the same all the time, which I’ll call “truly static”. Static structure are hard to get rid of. In fact, because of how the Game of Life Multiplayer rules work, a truly static structure cannot be destroyed unless an opponent explicitly places a new cell beside it. This is because a layer of dead cells exists between two populations. The same thing happens most of the time with nontruly static structures, but there are some exceptions. For example, a spaceship can deform a pulsar. Static structures are also good because they provide stable population and sight.
Attacking an opponent is something of an art in itself. You want to take advantage of the rule that any cell with a neighbor of a different color dies. So when you place a, say, blue cell in a field of red, the 8 neighbors around the blue cell will die. The blue cell dies too, so you have to make sure you get all your work done in one turn. After you’ve placed the first cell, you have more sight and hopefully see more red. The first cell acts as a stepping stone for the next cell. Knowledge of patterns helps here. The safest way to get rid of some red is to make a 3×3 grid of blue, since their neighbors will completely cover the grid. But it’d be cheaper to just reduce the red to some pattern that wont survive. Usually it’s hard to tell what will survive and what wont, so there’s a tradeoff between cost, riskiness, and effectiveness. I call attacks of this form “zaps”, since in a replay of the entire game they look like arcs between two charged clouds. A more complicated strategy involves creating static structures in your zap, so in your next turn you have a better way of attacking. If you can see an opponent, they’ll see you next turn. So if you don’t attack an opponent you can see, chances are you’ll be attacked.
Exploders don’t provide stability, and so at some point you’ll need to do what I call “economic stimulus” if you don’t want to start over with a new exploder. In the later game, starting over with a new exploder is risky since an opponent might stop it at an early stage. The idea behind economic stimulus is to take an existing population and make it explode more. The most obvious way to do this is to convert static structures into exploder seeds. For example, a blinker easily turns into an f pentomino. The less obvious ways of doing this include saving doomed patterns and creating snakes of live cells, which I’ve empirically found tend to do well. Economic stimulus and attacks should be undertaken simultaneously; once attacks have started, losing a turn means your opponent will be far ahead in population. On the other hand, losing your economy means you wont have enough to attack with.