Hacker News new | past | comments | ask | show | jobs | submit login
SproutLife – Evolving version of Conway’s Game of Life (github.com/shpralex)
153 points by MichaelMoser123 on June 21, 2021 | hide | past | favorite | 44 comments



Hi! I'm the creator of SproutLife. I've been planning to do an official announcement of the recent developments, and to update the writeup as well.

I recommend checking out the gallery, and working off the latest source https://github.com/ShprAlex/SproutLife/tree/master/gallery

As far as "evolving towards what", here are my thoughts on the subject:

The inspiration for SproutLife was to create an open ended genome with unlimited potential for evolution.

The initial success was that this was possible.

Anticlimactically, it turns out that an open ended genome in a turing complete environment does not lead to some kind of transcendent evolutionary product. The solutions that emerge are still limited by the simple problems they are tasked with.

It is the evolutionary journey, rather than a specific destination where SproutLife can be most informative. It can be used to study the role that disruption plays as a threat to stability and a necessity for progress.

In particular, the process of "collapse" is an interesting topic for investigation. From Covid to the popping of stock market bubbles, political upheaval, and even global warming, we are surrounded by real and potential falling of the established order. SproutLife also exhibits this kind of behavior and can let us understand how to quantify and perhaps predict it.


This is really neat and the code looks very clean. Nice work.

Can you explain how you are evaluating fitness? Your readme says that it's based on collective success rather than individual. How do you score that?


That's the thing. Fitness is an unknown that can only be evaluated through competition/survival. There is a function that compares organism size (the number of cells) and bigger organisms win collisions. But just because being bigger has an advantage, doesn't mean that size is the only determining factor. Organisms can move/reproduce in such a way that they end up colliding with their direct relatives, so like parents killing children. That is obviously not good for collective survival. On the other hand smaller organisms may be more organized, so the damage they inflict adds to self-inflicted damage by the bigger organisms, so the smaller ones end up winning.


I don't want to complain about this much - it seems like a cool little project. But from the linked page and the Wiki, it seems to have been created in near-ignorance of the Artificial Life efforts of the early-mid 1990s. That's a shame, because a lot of people did a lot of interesting things with this idea back then, and it might be worth being aware of hwo that turned out before diving into the idea again.

Thomas Ray's "Tierra" would be as good of a starting point as any, or either of the two Artificial Life volumes published by Addison Wesley in that era.


I think you are being more than bit harsh. This is not an academic paper, it is not "A New Kind of Science", it is a fun personal project that the author took a lot of time to document well. I think the author should be applauded not told to read textbooks from the early 1990s.


I once posted a nascent open-source project to reddit and it got shredded, but someone pointed me to some prior art. I studied the suggested materials, and thanks to that feedback my project was eventually successful. Now even CERN uses it in some LHCb software.

ShowHN needs comments like Paul's. Tact and expertise never come equally in the same package. We should appreciate this and grow some thicker skin in the meantime.


> Tact and expertise never come equally in the same package.

There is no reason at all for an expert to act like an asshole, and being an expert should not mean that bad behaviour should be tolerated from them. In fact, experts should be held to a higher standard, because they are examples people look up to.


But their feedback can still be useful even if it wasn’t delivered tactfully. It’s not wise to outright dismiss expert feedback simply because they were a little mean.


That begs the question, doesn't it? If someone visits your project and says "shame you're so ignorant of this topic, maybe read a textbook", it doesn't matter whether that person is the world's foremost expert or the town drunk, it's useless feedback either way.

Whereas, if the feedback was rude but also pinpoint-accurate and incredibly actionable, I don't think there'd be a big subthread about it.


Well the example you gave is bad feedback, and would be bad feedback from anyone. But that's not really the point of the discussion at hand, as I understood it. The discussion is about useful feedback that is delivered in a manner that may not be the most kind, but being unkind doesn't make useful feedback and less useful. After all, the feedback that sparked this discussion does seem like useful feedback even if it came across as a bit dismissive.


> Well the example you gave is bad feedback

> the feedback that sparked this discussion does seem like useful feedback

The former was a summary of the latter. The "feedback" we're talking about gave no actual information about what the person thinks is wrong with TFA, it just said that TFA's author is ignorant and maybe look at XYZ.


I thought I was applauding the author and suggesting they read up on some antecedents.


“don’t want to complain”, “near-ignorance”, and ”a shame” don’t ring of applause.


Heh. GP's comments reminded me of a time some months ago - I posted a project I made, and someone left a disparaging comment and then acted surprised that the comment wasn't taken as helpful constructive feedback.

Now that I check back, sure enough it's the same commenter :D


Presumably we're talking about this, from 8 months ago:

https://news.ycombinator.com/item?id=24789536

in which the end of my final comment was:

"I know what the differences are - I've worked in this field for 20 years. I was just trying to give you a gentle smiley faced nudge to jump in on a "better" version of what you've already done in order to Make The World A Better Place."

It seems that this attitude rubs some people the wrong way, and I certainly apologize for that. I don't apologize for my belief that it's better when exploring new projects to find out as much as possible about what has been done before. I made the mistake of not doing that when I was younger, and my software has been the worse for it ever since. If you feel that you or others are immune from this, awesome, go for it, but give me room in the skeptics corner.


I can tell you want to offer helpful feedback and you are not trying to be negative, you are well intentioned and your advice comes from a place of knowledge and experience.

That said, I don't think "Show HN" should be considered a public academic peer review. The internet is full of enough negativity.

If you want to offer advice on HN, try framing it like this:

[GREAT WORK] I especially like [FEATURE 1..i] the [SOMETHING ELSE] is [WELL WRITTEN|WELL DOCUMENTED].

If you are looking to [EXPAND/EXTEND/DEVELOP] [FEATURE/DEPLOYMENT/APPLICATIONS] I recommend [BOOK|BLOG|PAPER]

> If you feel that you or others are immune from this, awesome, go for it, but give me room in the skeptics corner.

You are quite keen on feedback, so take the feedback offered by myself and others here into consideration. Communication skills are not a weakness, they are a strength.

[ You can see this comment was written in a positive, hopefully helpful manner ]


This is a lovely breakdown of positive, constructive feedback. I try to practice this online and in person, likely because of how much I personally benefit from the rare moments where I’m on the receiving end. I believe it’s important for us to motivate and inspire one-another whenever possible.


This is a nice formula. There's an argument to be had for learning the skill of inoffensive commentary. I prefer to recieve feedback in this form. Confusingly I also sympathize with the crowd who would rather state things in more forceful terms, in the name of being genuine and impactful... We tend to focus on things that are highly critical. I'd prefer if people felt happier after reading a comment of mine, and maybe see me as a friendly person...but I question the overrelience on pleasantry, I think it belies some insecurity.


> I don't apologize for my belief that..

Nobody here is suggesting it's bad to tell someone about prior work. They're suggesting it can be done without belittling the person's project.

(Also, in my case you were hardly just telling me about other projects. You said that my web app did something that can already be done in an existing native language/environment, so I should have "just" ported that whole language/environment to the browser instead of building my web app.)


some people just want to create, and that's ok. if you think they might be interested in something someone else has done, it's easy enough to say 'you might be interested in...'

no need to talk about 'better', etc.


pure DARVO :D


It might help you if you write for the reader, not just to output what's in your head - the added empathy will enhance your communication. Being right isn't enough, it's not just what you say, but how you deliver it.


I'm totally ignorant of lots of things. And if I tried to do stuff in those domains, it would probably be a shame that I didn't know what had been done before (though I concede there's some chance that it might not be).


It can be very rewarding to jump right into a new creative project (e.g. cellular automata, drawing, etc) without any knowledge of what's already been done before. When you approach a something from a clean state perspective, you won't have any references of what's what, and all of your discoveries will be the result of your own creative experimentation. If at some point you feel like you've reached a limit to discovering things, you will naturally become curious about what other people have done -- to see what else is out there that you didn't find on your own. Only then do you see the sort of stuff that's already out there, and it's way more exciting, because you appreciate it how difficult it was for others to reach unfamiliar states you didn't reach on your own.

That same bewilderment might not happen if you read about all the amazing things that already exist before you even get started. If you read or see too much of what's already been done first, you might just end up feeling starting from scratch is boring, because it isn't as interesting as the more advanced stuff other people had already done.


If you read or see too much of what's already been done first, you might just end up feeling starting from scratch is boring, because it isn't as interesting as the more advanced stuff other people had already done

This is pretty much my feeling in every side project idea I've thought up :D


You may not have intended to come across as rude, but you did.


Perhaps you could elaborate on some concrete benefits that reading up on some antecedents provide here. Has there been any work combining A-life with GoL?

I've got some passing familiarity with the A-life literature, and I'm not aware of anything like OP. So it's not clear what benefit mentioning Tierra has to a reader beyond name-dropping.


GoL is one very specific cellular automata. There was lots of work in the 80s and 90s on CA's investigating their properties, and some of them turn out to be much more interesting from an evolutionary-ish perspective than the GoL one. That could be useful if you were interested in evolving CAs.

Tierra was among the first documented examples of evolving code/evolving rules and led to many other ALife experiments with simple rules governing evolution yet complicated outcomes. The work done then didn't lead to any particular conclusions, but it could be inspirational when thinking about how to apply selection pressure, what degrees of freedom to allow, and the nature of the rules controlling the CA.

I wasn't name-dropping Tierra, I was giving it as one entry point (and an early one at that) into the prior work on this sort of thing. I could have left the name out, and then some other commenter (perhaps even you) would have said "oh yeah, why not actually give some examples?"


Ok then, agree to disagree. Not being aware of merely interesting work is not ignorance or a shame. One nonlinear phenomenon is not by default relevant to another. Checking what someone cited is "Science!" not Science.


Thank you for the links. The closest I've seen to what I'm doing with SproutLife is an iteration of Langton's loops which were developed in 1984 https://en.wikipedia.org/wiki/Langton%27s_loops#:~:text=Lang....

Here is a video where these loops compete - https://www.youtube.com/watch?v=MGRPwuVvErs&list=LL&index=14...

SproutLife is a passion project for me. I would like to give attention to previous works, and more importantly highlight some kind of practical benefits that studying alife has. We are surrounded by living evolving structures, and having a better mathematical concept of this can be pretty useful which is essentially what alife give us.


Oh wow - I haven't thought of Tierra in 25 years. There was a time in the early 90's where I was super fascinated by genetic algorithms, artificial life, and chaos theory. I think it was all kicked off by James Gleick's Chaos and following threads in the bibliography.

I think Tierra was featured in Steven Levy's book Artifical Life.

In another thread on HN, people are talking about where programmers of the 90's thought we were headed and your mention of Tierra reminds me that I thought artificial life was going to be a big, big deal.


I found this list https://www.cs.memphis.edu/~franklin/aliferef.html which include the two volumes mentioned. Are there any other particular ones to either avoid or focus on?


It's a GitHub repo, not a Ph.D. thesis. FFS.


I love the concept and the visualizations, but am left wondering - evolving toward what? I don't get the same feeling of "complexity from simple rules" as I do from Conway's Game of Life.

I bet you could create a very interesting version of this with simple neural networks that start with random weights and determine the (x, y) coordinates to which an organism grows - reproduction is simply a matter of randomly selecting weights from two or more identical networks, and organisms that grow inefficiently are naturally selected against. I believe you could capture an increasingly complex range of organism shapes and introduce natural lifespans with a sufficiently deep network.


Maybe I'm missing the connection, but shouldn't this incorporate Conway's game "Sprouts" [1] if it's going to be named SproutLife?

[1]: https://en.m.wikipedia.org/wiki/Sprouts_(game)



This is a neat project! Another interesting project with self-replicating and evolving computer programs is Avida, developed in Charles Ofria’s lab. http://avida.devosoft.org/ It’s been used to research evolutionary processes in collaboration with Richard Lenski who leads the long term E. coli evolution experiment. e.g. https://www.nature.com/articles/nature01568

There’s also an Avida-ED version designed for classroom use.


Thanks! I hadn't realized but Tierra and Avida are quite similar to SproutLife. I found this video that explains a bit about it https://www.youtube.com/watch?v=ouF8wKxXWFQ&t=1050s

I wonder if they also encountered the issue where the genomes/programs get simpler over time. In some ways one would expect evolution to increase complexity, but what I found happening is that prioritizing reproduction means creating pressure to decrease complexity, thereby increasing the reproduction rate and decreasing the footprint for negative mutations. The way SproutLife counteracted this was to add a "competitive" metric where bigger organism win over smaller ones, kind of like big trees casting shade to block smaller shrubs.


As it seems like you’re seeing, what evolves depends a lot on what you’re selecting for and the environment they’re ‘growing’ in. This is another paper with more details. https://www.ncbi.nlm.nih.gov/pmc/articles/PMC7123229/pdf/978... My favorite stories are the ones where the organisms evolved to be able to detect when they were in the test environment and only performed the high-cost, selected-for behavior there.


If you haven’t run across it yet, Karl Sims’ virtual creatures are also really fascinating. https://www.karlsims.com/evolved-virtual-creatures.html And anything by Melanie Mitchell. Her book “An Introduction to Genetic Algorithms” is great.


This is similar to the Bluedogs Artificial Life Simulation [0] that I wrote while learning C++. Each lifeform inherits a "dna" string from its parent. The string is a program which executes in a simple virtual machine and determines the lifeform's behavior.

[0] http://www.tamale.net/bluedogs/


This seems like an interesting visualization. This is "neat," but that was the goal - it was designed to be neat, and so it is neat. That's quite antithetical to the general idea of the emergent properties of things like Conway's Game of Life.


Why battle instead of cooperation?.. ;_;


Who knows if they won't evolve to cooperate? Just like real life, it's possible that two artificial organisms will evolve in mutually beneficial ways.

If the author models some kind of resource (like food) it may make it easier. Or even make possible for an organism to be a parasite of another and so on.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: