Recursive Game of Life
oimo.io
oimo.io
In the beginning I didn't think it was possible without cheating something but finally found a way to "build everything perfectly"
Due to the inifinite recursion, each level is aperiodic for both space and time, and you'll never see the same pattern no matter how much you scrollNeat, even when you know the trick.
There's some lovely "engineering diagrams" of the OTCA metapixel on this (sparse) blog: http://otcametapixel.blogspot.com/2006/05/how-does-it-work.h.... It's fun to zoom in on the posted site and identify all the features, like the rule table near the bottom left.
For context, the OTCA metapixel is a large pattern (2048x2048) which is capable of simulating Conway's Game of Life rules (or, indeed, any rule set consisting of neighbour-counting birth/death conditions); it does this by having adjacent pixels coordinate sharing of state (whether they're on or off) and then looking up what to do via a (programmable) lookup table. Based on the current state (on or off), a series of "glider guns" will be conditionally activated, which creates the appearance of a filled center (filled with moving gliders).
As you go higher, they can just arbitrarily select a location in the simulation a few levels up from where you are that is consistent with the metapixels you've seen; once you go up a few levels, there's no chance of you having seen beyond a very small window of the simulation, so it's a matter of just finding a matching pattern.
As you go lower, the time step cannot be set be zero, so they can simply initialize the simulation a few levels down to an arbitrary state since the lower levels will tick exponentially faster.
The only problem is that you do have to store state for levels between the highest level you've seen and the current level as you zoom in. I suppose this means that if you zoom out a lot (just spam the scroll) and then zoom in a lot, there might be substantial memory usage. I've tested it and they do seem to consistently remember the exact state of the simulation at least a few levels up - it's easy to check by looking at the length of the clock train on the left of the metapixel in each level.
Some of the more subtle bits do depend on the neighbor cells in the parent level, so I think there still does need to be some simulation done to ensure that these subtle bits are correct when viewing lower levels. But that only needs it be done in a small neighborhood.
Edit: the author has said that it’s non periodic apparently which seems like it would make this whole thing a lot harder and probably require more state
Cool - Game Of Life on my phone. Some pretty cool patterns. Recursion? Don't see it. But look - I can zoom out. Wow, that's a pretty large pattern. Oh shit!
I've not delved into the code. But I am assuming that this is a static model and not actually doing the GOL calculations. Is that correct?
Second, judging from the author's github [0], I'm guessing this was made in Haxe [1], which is a language often used to make games. I'd looked at Haxe before, but I hadn't realized that it has a lot of Ocaml-like features. I think I need to give it a try on my next prototype project!
Zooming out I find much harder to make sense of. What does it look like if you zoom out infinitely often? Is there some limit? If you take an empty universe with all cells dead there seems to be nothing at first, but at closer inspection there is of course still a lot of stuff going on in all the dead metapixels making up the empty universe. After zooming in a couple of times it would be hard to tell that zooming out a bit would leave you with an empty universe. And it would not have to be an empty universe, it could be anything.
Make a sharp backwards roll of your mouse wheel and see for yourself - it'll turn on the autopilot mode.
This inspired a bit of awe in me, especially after I learned from another comment here that each game is unique.
edit: Oh wow, of course it's last month's Bubbles creator.
Awe and mild discomfort aren't the usual feelings I get watching information being processed.
But a looping animation makes sense too.
Even with compression that's a lot of data.
Really cool on desktop here!
Uncaught Object { message: "assertion error", stack: "C@https://oimo.io/works/life/main.js:31:459\nze@https://oimo.i..., g: {…}, value: "assertion error" } main.js:37:66
I wonder if it's the same for reality. Everytime we've been looking at some particles we deemed fundamental they appear to be made of even smaller ones.
Not everytime. There is a list of particles that we currently deem fundamental, because no one has found any structure in them. But maybe we haven't looked closely enough yet. Some entertain the idea that they consist of vibrating strings instead of structurless, pointlike particles, but then those would be fundamental.
But they can also be seen as quantized excitations of some underlying quantum field.
Each cell in level N is the stable pattern of gliders arranged into a square shape in the lower level N-1. If you think about it, this is how "objects" in the real world exist - not as an essence of the object, but as a pattern of simpler elements arranged in space-time that we recognize as an object.
But it would be cool if we could change the GoL parameters and see how that affects the infinite fractal recursion!
But if you zoom out, at any time it could be possible for them to compute a different pattern. But it's OTCA metapixel all the way up. What is being computed, other than more OTCA metapixels? What is being computed after infinite zoom out steps?
Makes me question the meaning of existence!
I wonder if this perception has an analogue in the physical world that has relativity as a consequence.
https://en.wikipedia.org/wiki/Conway%27s_Game_of_Life
Game of Life is Turing-complete, and has all sorts of other weird and interesting implications in chaos theory and philosophy of maths.
You can write a game of life implementation on a rainy sunday afternoon, and be stuck playing with it for weeks.
This guy took it to another level though.
@JWZ, can we have a xscreensaver for this please!
There must be a trick to it, but some of it has to be real... and it's so smoothly done I can't easily see the transition.
(This is really amazing)
https://golly.sourceforge.net/ is a tool/toy that will help you explore this stuff if you're interested.
Does it simulate life or universe at any scale?