This is a Minecraft project based on Conway's game of life.
http://en.wikipedia.org/wiki/Conway's_game_of_life
The game of life is an infinite grid of cells, these cells follow some simple rules. Each cell generation depends only on how many neighbour cells it has: if it is too lonely or too crowded then the cell dies; if it is exactly three then a new cell is created.
The idea is to experiment with different patterns. Some patterns are stable, but more interesting ones change, or even move or replicate.
The aim here was to simulate a section of the cell grid using redstone logic circuits.
http://www.minecraftwiki.net/wiki/Redstone_circuits
The tower has the logic for a single cell in the game. It ends up being 11 by 11 blocks, and I think about 16 or 17 blocks high...
My first cell design had less gates, but the interconnects between the layers were too bulky, so in this method I used a stack of shift registers and put the decision logic and latch in the top layer. Each cell is mostly hollow inside except for a line taking the output of the cell back down to the inputs of the neighbouring cells.
I took a few falls building this, and I had to mine nearly 500 redstone for it. So when it came to making the grid of cells, I took a shortcut and installed the WorldEdit mod so I could replicate the cells.
There is a grid of 8 by 8 cells. Between them runs the clock that triggers each update, which follows a kind of fractal pattern so that the path lengths are all the same, they all trigger simultaneously.
Originally the display was an array of torches on the top of each cell, but the rendering on this creaky old Geforce4 was way too slow to keep up, so i ran the lines above the array to take the outputs to a small LCD-style display made out of trapdoors.
The logic takes about 2 seconds to propagate, so I make the full clock cycle a little bit longer.
If you really want to play with the game of life some more outside of minecraft, take a look at the 'golly' project on sourceforge.
http://golly.sourceforge.net/
How you "count" all the signals?
artemonstrick 3 weeks ago
@artemonstrick It doesn't actually count them as such. Each cell takes the signals from the adjacent cells into a sort of unlatched shift register. The shift register bubbles along the 'on' bits to one end, and feeds the outputs up to the next shift register above. After doing this enough times, the 'on' bits finish at one end of the shift register. For example, if the adjacent bits 10101000 were set, then the output after the shift layers would be 00000111.
neonsignal 3 weeks ago
@neonsignal Oh god, how elegant is this! Yesterday I've tried to find simpliest solution in computing next state of cell, and couldnt do it! I even thought of minimizing 256x2 table..damn it. I am a bad engineer. If you are interested though, take a look in my channel. I've made fully playable redstone snake, and it is functioning at interactive speeds!
artemonstrick 3 weeks ago
@artemonstrick I was very impressed with your snake implementation, great to find people who are still interested in this gate level hacking!
neonsignal 3 weeks ago
@artemonstrick The combinatorial logic at the top then just looks at the last few bits (bits 4,3,2) to calculate the next state. For example, if the bit 2 is empty, then there are less than 2 adjacent cells on; if the bit 4 is set, then there are 4 or more adjacent cells, and so on. Some of the shift logic has been omitted because it doesn't need to 'count' beyond 4.
neonsignal 3 weeks ago
@artemonstrick Doing it this way takes more gates than a simple counter, but it is more compact because the shift register can be wrapped around like a ring, leaving space for the output to be spiralled back down the middle.
neonsignal 3 weeks ago