Conway Tetris
September 14, 2017 11:31 AM   Subscribe

 
Holy. Crap.
posted by Ogre Lawless at 11:42 AM on September 14, 2017 [7 favorites]


This was very confusing when I didn't yet know that there was a difference between Conway's Game of Life and The Game of Life, just kind of odd when I found out that Conway's is a computer simulation sort of thing, and then mind-boggling when found out how it works.

What a roller coaster.
posted by Holy Zarquon's Singing Fish at 11:46 AM on September 14, 2017 [9 favorites]


I thought Country Music legend Conway Twitty would be involved.

Or Tim Conway.
posted by oneswellfoop at 11:49 AM on September 14, 2017 [5 favorites]


This is like those 8-bit minecraft computers. YouTube

I suppose the reverse is actually true - Minecraft block-state changes are clearly based on the GoL / cellular automaton idea.
posted by JoeBlubaugh at 11:55 AM on September 14, 2017 [1 favorite]


The awesome part is that with a few more layers of abstraction, it could play Crysis too.
posted by miyabo at 12:17 PM on September 14, 2017 [6 favorites]


Instead of implementing Tetris as a Life configuration, they used a large number of individual Life configurations that permit the implementation of arbitrary cellular automata rules, for which they chose WireWorld, with which they built a CPU, which they then programmed to play Tetris.

Lazy bastards!
posted by rlk at 12:18 PM on September 14, 2017 [10 favorites]


Interpreter for the custom assembly language, with Tetris pre-loaded: link.

To play: click the 'Run' button (located right under the text entry field with the Tetris code), then scroll down to see the game.

To interact with it: find "Direct write to RAM" (near the bottom of the page, above the "display"), and write any of the following values into the text input:

1 counterclockwise rotation
2 left
4 down (soft drop)
8 right
16 clockwise rotation

Extra fun: change "RAM addresses to display" from the default 3-32 to 0-70 and see the inner RAM values.
posted by vert canard at 12:26 PM on September 14, 2017 [1 favorite]


Bow low to our Turing complete cellular automata overlords. Gliders forever!
posted by sammyo at 12:40 PM on September 14, 2017 [1 favorite]


Maybe I'm missing it, but didn't they fail to implement the display as specified? ("...displaying the result somewhere on the automaton. The displayed result must visibly resemble an actual Tetris grid.") This is obviously impossible if taken strictly literally—you can't have one cell per Tetris pixel because some tetronimos aren't stable in Life—but there's got to be a way to do it with, like, a grid of sufficiently-spaced blocks that get modified by modulated beams of gliders. Unless I'm overlooking it, they didn't even do it at the metapixel level. In the interpreted version, their display consists of a bitmapped display filled by peeking into their RAM. Is the RAM physically arranged in the same pattern, and can it be plausibly eyeballed to read its state?

I'm not saying the work isn't amazing—PhDs for everyone!—but, you know, what about the spec?
posted by The Tensor at 12:47 PM on September 14, 2017 [11 favorites]


Doing anything in Life counts as "doing it the hard way". The proceeded to take that to the next level by "doing it the hard way" the hard way.
posted by It's Never Lurgi at 1:31 PM on September 14, 2017 [6 favorites]


I feel like I'm looking at one of those tomes made by monks who lost their minds in a religious fervor.
posted by ikea_femme at 1:35 PM on September 14, 2017 [7 favorites]


ikea_femme: I feel like I'm looking at one of those tomes made by monks who lost their minds in a religious fervor.

They were bored. And all that parchment was just lying around...
posted by clawsoon at 1:46 PM on September 14, 2017


This is completely and totally fucked up.

Actually, now implement this in Brainfuck. In a Minecraft emulator.
posted by loquacious at 1:56 PM on September 14, 2017 [3 favorites]


The displayed result must visibly resemble an actual Tetris grid.") This is obviously impossible if taken strictly literally—you can't have one cell per Tetris pixel because some tetronimos aren't stable in Life

They are so far beyond "one cell/one pixel" that it would blow your tiny mind. They haven't gotten to the point of making a display yet, but the idea is that each square of the blocks will be made up of thousands of spaceships (probably), a type of life object, packed densely enough to look solid if you zoom far enough out.
posted by It's Never Lurgi at 2:06 PM on September 14, 2017 [1 favorite]


This is totally awesome...although, in vert canard's link, I found that if I try to move it too far to where it would pass 'into' the wall, the piece stops there, hovering in space; this in no way is meant to diminish the fact that this is a videogame written in, essentially, a simulation that is based off only a handful of rules. Even modern day games don't do collision detection that great.
posted by AzraelBrown at 2:18 PM on September 14, 2017


A short piece glossing over the ramifications of Conway's Game of Life (from Stephen Hawking's 'Meaning of Life' documentary).
posted by mysticreferee at 5:35 PM on September 14, 2017


I feel like I'm looking at one of those tomes made by monks who lost their minds in a religious fervor.

early source code comments
posted by sebastienbailard at 8:16 PM on September 14, 2017 [3 favorites]


So it seems that they've built a general purpose computer ultimately out of Game of LIfe blocks to play tetris.
The obvious next step is to make their general purpose computer simulate game of life, then use that version of game of life play tetris.
posted by Just this guy, y'know at 4:25 AM on September 15, 2017


So...can someone explain this as if I were a ten year old who knows tetris only as a smartphone game?
posted by Omnomnom at 8:15 AM on September 15, 2017


> Actually, now implement this in Brainfuck. In a Minecraft emulator.

That would be comparatively easy. Brainfuck's command set is a highly restricted but relatively straightforward; the Wikipedia link shows how it can be treated as a shorthand for a limited C command set. Which doesn't make coding easier but allows the programmer to write something relatively comfortably in C that can output itself into Brainfuck; at one extreme, this can literally be just a text search and replace. The Tetris team did something similar but at a much higher level of complexity, by building a virtual machine constructed with logic blocks that allowed them to abstract away the specifics of Conway's Game of Life rules.

It's the difference between programming a computer with an existing language and building a computer with transistors and diodes.

As for the "Minecraft emulator" part, I imagine that's possible but not plausible with current computing capacity. I'm not up on Minecraft hacking though, so I don't know how it scales these days.
posted by ardgedee at 8:37 AM on September 15, 2017


So...can someone explain this as if I were a ten year old who knows tetris only as a smartphone game?

I can try, though I'm super unqualified to the essay.

Conway's Game of Life is a ... game, of sorts, whereby "cells" in a graph may change their state at each turn of the game. In the simplest form, cells can change from "alive" to "dead" and back again each turn.

In the classic version, alive cells with 2-3 neighbors stay alive; alive cells with <2>3 cells die from overcrowding. Dead cells come alive when they have exactly 3 neighbors. You start with a random or ordered array of alive and dead cells and iterate the game through some turns and patterns and regular behaviors emerge out of these simple rules. Some patterns "move" across the grid. Some patterns "shoot" these other patterns out as they cycle through. Some patterns just oscillate over a period of time. Often, a moving pattern will disrupt a stable pattern or oscillation.

By adjusting the rules to the classic game in a couple of ways, and by setting up the cells just so, a player can create "wires" whereby a on or off "signal" will propagate down a wire in a predictable way. Once that's done, a player can also create patterns which interpret these signals based on Boolean logic. You can create logic gates. So a signal will only go beyond a certain point if both "wires" going into that "gate" are "on" for instance.

A microchip is, essentially, an array of logic gates etched onto a piece of silicon -- the etching (is it still done by etching?) creates a differential whereby electron can flow, and the arrangement of etched lines creates these logic gates which enable a computer to, well, compute.

What these folks have done is to turn a large Life board into a simulated array of logic gates -- a virtual computer -- using only the rules of Life. And then to use that virtual computer to run the classic video game Tetris.
posted by gauche at 9:06 AM on September 15, 2017 [3 favorites]


Just this guy, y'know: "So it seems that they've built a general purpose computer ultimately out of Game of Life blocks to play tetris.
The obvious next step is to make their general purpose computer simulate game of life, then use that version of game of life play tetris.
"

"You're very clever, young man, very clever," said the old lady. "But it's John Conway all the way down!"
posted by Chrysostom at 10:28 PM on September 17, 2017 [4 favorites]


Just this guy, y'know: The obvious next step is to make their general purpose computer simulate game of life, then use that version of game of life play tetris.

I've been using the Internet on an older computer lately, and I'm pretty sure that's exactly how some websites' Javascript modules were created.
posted by clawsoon at 5:16 AM on September 18, 2017 [1 favorite]


TO be honest I was thinking small. What you need to do is take your General Purpose Computer and use that to simulate Minecraft, and then build a General Purpose Computer in your simulated Minecraft and use that to run a version of life, and then in that version of life you can do Tetris.
If you can't be bothered to build a whole GPU in minecraft I guess you could just do a dedicated machine for Life.
posted by Just this guy, y'know at 8:39 AM on September 18, 2017


« Older [ger. Raubdruckerin: pirate printer / feminine...   |   Destruction- annihilation that only man can... Newer »


This thread has been archived and is closed to new comments