10 ms·
Recursive Game of Life
- Rendello 4y agoRarely do I look at a website in amazement and ask "How?". This is awesome.
- naikrovek 4y agothere's an open source tool/toy called "Golly" which can show you. https://golly.sourceforge.net/ https://golly.sourceforge.net/
- danwills 4y agoAnd if you want to explore continuous-state automata ('reaction diffusion') there's Golly's cousin-app Ready, too! (Next version of Ready's Houdini plugin (py3/H19.5) hopefully coming soon!)
- jasonkhanlar 4y ago[dead]
- rodrigosetti 4y agoThis is awesome. How would one describe this formal system? There are no cells essentially
- TuringTest 4y agoThere are cells, but they are not atomic but decomposeable. 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.
- kleene_op 4y agoThat's what's really awesome about it. In essence there's nothing but the rules of the game of life. 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.
- mr_mitm 4y ago> 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.
- eru 4y agoWell, electrons are sort-of fundamental. But they can also be seen as quantized excitations of some underlying quantum field.
- jerpint 4y agoHow is this even possible?
- ttul 4y agoAs you zoom out, the simulation of the underlying cells is swapped for a higher level simulation of the cells at the next higher level. Watch how the simulation of the cells from the level down speeds up as you transition to the next level.
- naikrovek 4y agoLife in Life is a real thing. https://golly.sourceforge.net/ https://golly.sourceforge.net/ is a tool/toy that will help you explore this stuff if you're interested.
- Papirola 4y agoamazing, both visually and conceptually.
- smegsicle 4y agohaha getting the speed right at the different levels and everything, nice
- fishtoaster 4y agoThis is amazing! I've seen "life in life" as a video from ages ago[0], but this is just suck a slick implementation of it! [0] https://www.youtube.com/watch?v=xP5-iIeKXE8 https://www.youtube.com/watch?v=xP5-iIeKXE8
- Jerrrry 4y agoAt a certain draw distance (probably/hopefully depending on framerate and other specs), the platform replaces the individual cells with the OTCA metapixel, effectively giving the illusion that it is GoL all the way down. Neat, even when you know the trick. https://conwaylife.com/wiki/OTCA_metapixel https://conwaylife.com/wiki/OTCA_metapixel
- nneonneo 4y agoThe other trick is that the simulation speed scales with draw distance, such that once you've zoomed out a full cycle the simulation has gotten exactly 35328x faster, which is the period of the OTCA metapixel. There's some lovely "engineering diagrams" of the OTCA metapixel on this (sparse) blog: http://otcametapixel.blogspot.com/2006/05/how-does-it-work.html 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).
- infogulch 4y agoIt also appears to retain the current state of arbitrarily higher recursive instances, not that they move much when you're zoomed in. Makes me wonder, how do you code for the current 'position' in the whole stack in a way that remains consistent? Conceptually the space is very big. If you zoom/recurse in to a random metapixel 13 times in a row, you're almost certainly looking at a pixel that no other human has or ever will see, and you have scaled from the width of the observable universe to the width of a proton.
- nneonneo 4y agoYeah, this part is very clever and quite well-done IMHO. I suspect the trick is to only store the state for any levels you've actually seen. 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.
- p-e-w 4y agoI guessed almost immediately how this is implemented, but I'm still amazed by how fast it is.
- postalrat 4y agoI guessed too. Do you think I was right?
- kmoser 4y agoYou can't fool me! It's Life all the way down!
- zogomoox 4y agoLife is life - nana na nana
- wintorez 4y agoOK, this is mind-blowing
- tehsauce 4y agoSuper well done! The transition between levels is beautiful.
- an_aparallel 4y agothis is what the internet is all about thx :)
- symmetricsaurus 4y agoVery smooth. Wonder if there are any optimizations like Hashlife going on? There’s a lot of spatial redundancy to exploit. https://en.wikipedia.org/wiki/Hashlife https://en.wikipedia.org/wiki/Hashlife
- space_fountain 4y agoIt need not do any simulation at all. Representing this as an animation should be very doable. Probably 2^4 animations (1 for each potential state of a cell) then you just need to tile the animations and replace sub pixels as needed. So you start out showing a zoomed in view of the animation. As you zoom out you tile based on the animation shown one layer up. The exact tiling is probably tough, but easier than actually simulating and keeping tons of state
- Cthulhu_ 4y agoI've also heard that Game of Life can be implemented as a pixel shader, so your browser gets to use all that dank GPU available. But a looping animation makes sense too.
- symmetricsaurus 4y agoThe OTCA metapixel has 2048x2048 cells and a period of 35328. That's a total of 18.5 GB. And that's not counting the different states depending on neighbors and on-off-transitioning state. Even with compression that's a lot of data.
- rizky05 4y ago
- jerrygoyal 4y agoi can't possibly be the only one who didn't get what this is
- bornfreddy 4y agoHint: zoom out.
- Kim_Bruning 4y agoIt's a game of life simulation that is -itself- running a game of life simulation that is running a game of life simulation that is ... https://en.wikipedia.org/wiki/Conway%27s_Game_of_Life 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.
- system2 4y agoTrippy.
- Kim_Bruning 4y agoalso duplicated at: https://news.ycombinator.com/item?id=33971341 https://news.ycombinator.com/item?id=33971341 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.
- sheerun 4y agoNice zoom out, it feels like the Universe is constructed a bit like this
- yshklarov 4y agoThe author says: (https://twitter.com/shr_id/status/1602691898162184192 https://twitter.com/shr_id/status/1602691898162184192) 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 scroll
- NiceWayToDoIT 4y agoMesmerizing, I am interested for the code and how is this built. When I said build the entire fractal concept is it emergent or deliberate? Who did author envisioned this>
- anubhav200 4y agoWOW
- singularity2001 4y agoWow! At the speed of around 0.15 you can see all the relevant computations: Every few seconds three glider triples get sent out, obviously directly representing the 9 neighboring cells. These interact with some lane shifting and 90 degree reflections. In the process these "byte" may lose a glider or two, representing the result of the game of life computation. Then you can see a fuse burn down, then a single glider makes a round and suddenly the whole cell switches state by an army of gliders gently touching the producing border.
- infogulch 4y agoDid you zoom yet?
- tinyplanets 4y agoWhoa!
- Cort3z 4y agoI LOVE how you can set it to scroll forever by itself. This website is a true work of art.
- brunorsini 4y agoI love that too, only wish auto-scrolling speed could be adjusted (would like it to be slower).
- thunderrabbit 4y agoFor me there's a horizontal slider in bottom middle of the screen which controls the auto-scrolling speed.
- danbruc 4y agoI did not realize that. If you are not auto-zooming it seems to just control the simulation speed but while auto-zooming it effects the speed of the zoom. That probably makes sense at a deep level because as you zoom in and out the simulation speed has to be adjusted to make the new level run at the same speed as the old one.
- raldi 4y agoHow do you do that? I only see the speed slider, and it doesn't seem to respond to keystrokes.
- Cort3z 4y agoScroll quickly out, it will just keep on going. Maybe it’s a desktop only thing?
- sceptically 4y agoLoading...
- globalise83 4y agoThis is really great. I would like to use it as a visual backdrop on a big screen when playing DJ sets. I see that it enters a permanently zooming out mode when I zoom out fast, would be awesome if the zoom control disappears when it enters that mode so that it just displays the game of life itself and no UI elements.
- concordDance 4y agoMake a greasemonkey script and Bob's yer uncle! :)
- globalise83 4y agoUnfortunately the controls UI elements seem to be rendered in the canvas, so it's not as simple as just hiding something. I can't even inspect it.
- strenholme 4y agoWhile an interesting effect, this recursive nature of this game can not be seen unless one has a mouse scroll wheel. I think it would be good to allow zoom in/zoom out to be done a different way (such as page up/page down or +/-). Not everyone has a mouse scroll wheel.
- traes 4y agoWhile this may not work for tablets (?), the vast majority of laptops have a setting called two-finger scrolling that lets you use two fingers on a trackpad to give scroll wheel inputs.
- Zeyka 4y agoIt works perfectly fine on mobile and it feels really smooth :)
- xigoi 4y agoWhat kind of mouse doesn't have a scroll wheel?
- deleted 4y ago[deleted]
- logicallee 4y agoAmazingly performant. Runs on old hardware very smoothly.
- ranting-moth 4y agoDoesn't work in Firefox Uncaught Object { message: "assertion error", stack: "C@https://oimo.io/works/life/main.js:31:459\nze@https://oimo.io/works/life/main.js:31:383\nC.g@https://oimo.io/works/life/main.js:85:493\nne.prototype.h@https://oimo.io/works/life/main.js:37:66\nZb.prototype.bb/<@https://oimo.io/works/life/main.js:60:197\nu.g/g.Ja.onload@https://oimo.io/works/life/main.js:225:160\nEventHandlerNonNull*u.g@https://oimo.io/works/life/main.js:225:166\nZb.prototype.bb@https://oimo.io/works/life/main.js:60:122\nNc.prototype.ba@https://oimo.io/works/life/main.js:58:500\nZb.prototype.ba@https://oimo.io/works/life/main.js:59:428\nZb@https://oimo.io/works/life/main.js:33:71\nZb.h@https://oimo.io/works/life/main.js:72:373\n@https://oimo.io/works/life/main.js:243:4\n@https://oimo.io/works/life/main.js:243:9\n" https://oimo.io/works/life/main.js:31:459\nze@https://oimo.i..., g: {…}, value: "assertion error" } main.js:37:66
- mjhagen 4y agoMy God, it's full of pixels!
- fooker 4y agoIt is interesting to observe that the perception of time changes with zooming in/out. I know the actual speed of the gliders remains the same, but it seems to my eye that they speed up if you zoom out and slow down if you zoom in. I wonder if this perception has an analogue in the physical world that has relativity as a consequence.
- bobnamob 4y agoIt isn’t often I verbally exclaim on opening an HN link. Wow.
- fifilura 4y agoMesmerising! And so fast! @JWZ, can we have a xscreensaver for this please!
- danbruc 4y agoI can wrap my head around zooming in - conceptually you run any life simulation you want, i.e. a base level game of life, and then recursively decompose each cell into the 2²² cells of a OTCA metapixel. 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.
- phoe-krk 4y ago> What does it look like if you zoom out infinitely often? Make a sharp backwards roll of your mouse wheel and see for yourself - it'll turn on the autopilot mode.
- consumer451 4y agoI am really enjoying this full screen with auto-zoom-out at the slowest speed setting. If the controls faded like media player controls do in full screen, I would be perfectly satisfied. 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. https://news.ycombinator.com/item?id=33566924 https://news.ycombinator.com/item?id=33566924
- danbruc 4y agoAlready tried that, does not zoom quickly enough to reach infinity before I have to go to bed.
- phoe-krk 4y agoI don't think you need to reach infinity to realize it's OTCA metapixels all the way down and OTCA metapixels all the way up. In a way, it just loops forever.
- graderjs 4y agoThat is so cool! This person really is a freak, in good way. They also created their own physics engine, which was featured here a while ago: https://github.com/saharan/OimoPhysics https://github.com/saharan/OimoPhysics But it would be cool if we could change the GoL parameters and see how that affects the infinite fractal recursion!
- sambalbadjak 4y agoThis should be an option for a screensaver. Well made!
- davedx 4y agoIncredible. There's more here: https://oimo.io/works https://oimo.io/works
- m00dy 4y agowell this guy makes me feel stupid, tbh.
- oliverbennett 4y agoI'm never going to stare at TV static and see deeper meaning in random noise, and while this is almost the opposite of that, I'm surprised by how I felt watching this. Awe and mild discomfort aren't the usual feelings I get watching information being processed.
- fractal618 4y agoThat is beautiful
- JediLuke 4y ago
- intrasight 4y agoWho else had this experience. 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?
- deleted 4y ago[deleted]
- mikez302 4y agoFYI it looks fine on my laptop (a Mac running Chrome). But it looked messed up on my phone (a Pixel 2), kind of like random static.
- Aardwolf 4y agoIf you zoom in, you get lower and lower level OTCA metapixels forever, very straightforward. 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!
- jefftk 4y agoIt wasn't immediately obvious to me: you need to scroll to see the recursive aspect. (This is really amazing)
- bloopernova 4y agoI wonder what the smallest molecules/things are that could be used to make a real game of life? Could you do it with bacteria? Surely not viruses or amino acids?
- fernanDOTdo 4y agoThe longest-running evolution experiment uses bacteria and it has been running for more than 30 years. There's a Veritasium video about it: https://www.youtube.com/watch?v=w4sLAQvEH-M https://www.youtube.com/watch?v=w4sLAQvEH-M
- layer8 4y agoThe difficulty is keeping it error-free. The best way we know is what we're using for CPUs.
- Karsteski 4y agoThis person's entire website is beautiful.
- msarris 4y agoIt looks quite different on mobile here (both Chrome and Firefox) than on desktop. It's way better on desktop, on mobile quite chaotic and doesn't seem to follow the actual Game of Life rules. Really cool on desktop here!
- remram 4y agoYeah, on mobile even if I turn the speed way down, it skips over many steps making everything unrecognizable. It lowers the FPS but still skips just as much between rendered frames. Seems like a programming error.
- szundi 4y agoIt should be oiomo.io
- albert_e 4y agoHas anyone tried this in a 3D cell distribution instead of 2D arrangement of cells with similar rules? Does it simulate life or universe at any scale?
- felipelalli 4y agoHow?
- wufufufu 4y agoI am enjoying this. Is there a way to pause? I have to verify each cell just to boggle my mind at the fact that everything is adhering to GOL rules.
- psychphysic 4y agoI had a sudden dawning zooming out that really felt like a psychedelic "insight".
- tobyhinloopen 4y agoNeat
- tobyhinloopen 4y agoneat
- zengid 4y agoFirst off, this is one of the coolest things I've ever seen. 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! [0] https://github.com/saharan https://github.com/saharan [1] https://haxe.org/ https://haxe.org/
- zengid 4y ago*OCaml
- calebm 4y agoBeautiful
- Exuma 4y agoWow, this is something I never considered... go down the rabbit hole on this site ("guns", "glider guns", etc). I had no idea people actually tried to "game" or discover useful patterns in game of life: https://conwaylife.com/wiki/OTCA_metapixel https://conwaylife.com/wiki/OTCA_metapixel
- dschuetz 4y agoOOOohhh, you have to scroll!
- luxuryballs 4y ago“It was the right day to micro dose”, Christopher Robin said to himself.
- fallingfrog 4y agoThis is the coolest thing I've seen in a long time!
- 121110987654321 4y agobeautiful
- Llamamoe 4y agoNo matter what speed/zoom I set it to, it skips steps like crazy and no simulation can be seen.