Of course I had to lead with an image.
This is a subset of cellular automata, with extra rules. The rules are procedural, and scalable.
I get into more detail in the attached notebooks, but the gist of it is the rules are designed to produce universes which are comprehensible to a human, have (some) conservation of energy, have an energy input, and have a way to corral that energy in one spot.
In the image, the gray boxes on the ground are just that - non-interacting ground. The colored boxes are cells with mass energy (I've been calling them hadrons), and the pips are light energy. The star moves across the screen, leaving more hadrons in its wake, which then interact. There's a gravity bias, such that it costs light energy to move mass upwards. There's a cap on the amount of energy any cell can have, and cells with more get trimmed back to the cap, which allows for defining the amount of colors.
It's inefficient to generate rule numbers for this, which I've gotten around by using a random seed value for the uncalculated parts of the rule. This guarantees sharing a universe with the same seed will result in the same rule number.
The code is mostly written for displaying 2D cellular automata with small caps of energy, with these specific special star and ground cells. However, a lot of it should be easily modifiable to work for 3D or above, or with other concepts for special cells.
As far as applications - maybe this is a ways out, but I'd like to see if we can study how life could develop in another universe. I'd be happy with finding stable complicated configurations analogous to biochemicals in the meantime. Hence me flagging this post for chemistry & bio sciences - this is your wheelhouse.
How to use the notebooks:
There are two notebooks attached: an "Instructional" notebook with copious notes, and an "Operational" notebook with far fewer notes.
There is also a "Bad Rule Digits.txt" file which stores data for a workaround regarding errors in the CellularAutomata function that may or may not be specific to my machine. You can place the .badlist file in your Documents folder, under a folder (which the code may create automatically) called "Star and Ground CA".
The notebooks will also store screenshots of every step in this folder, along with it being the save location for the universe information, currently known rule number, and instance information.
I've done about as much checking as sanity permits that everything works, but if you find errors or have questions, please let me know.
PS: I was unable to attach a .badlist file until I changed the extension to .txt. It's not critical to have this file, but change the extension back to .badlist to get the notebook to read it. Thanks!
Attachments: