I've written CYCELL2D to be a sandbox of sorts to experiment with some of my ideas on the subject. Perhaps it will be useful to others.
I'm not a professional programmer. I'm a lawyer by trade. I taught myself programming, in part, to explore certain ideas I have about development and regeneration. Why is a lawyer thinking about such things? I don't really know, but I got interested in the subject about a decade ago when my daughter was 'self-assembling' inside my wife. Lying in bed next to a pregnant woman, knowing that cell by cell, bit by bit, a human body is being formed, got me wondering how such a thing is possible.
Before you can experiment with ideas on how this all works, you first have to come up with a good model of a cell. For my current project, I settled on a Cellular Potts model.
Once I got a 'petri dish' running, I could begin crafting 'rules' to try and get my cells to assemble into various forms.
To do this, I created a fairly simple language... a set of rules the cells would follow in an iterative fashion as they collectively build something neat. The constraints that make it interesting are that (a) no cell has any idea where it is in the system, (b) a cell can only communicate with an immediate neighbor, and (c) a cell has no memory per se.
An aspect of CYCELL that some might find intriguing is a version of 'morphogenic fields' that I've incorporated into the program. It's explained at the site. I would love any feedback, both on the program itself and -- more generally -- the 'Fields' concept that is the backbone for the cooler sample videos that may be found in the Tutorial section.
Everything is C++. Used SFML for graphics and TGUI for the user interface.
I'd be happy to share my source code, but I'm not all that familiar with GitHub yet. If anyone wants it, let me know and I'll simply put a link on the site.