Today I'm gonna talk about the World in Atlas, which is an evolution simulation program developed by me.
This isn't my first shot at something like this. I've already developed a really simple version in Python, that used linear neural networks (which is, by the way, weird), and got basic learning working. Here's a picture of how the world looked:
This is a screenshot taken at a very early stage of development, but with all the UI switched off (there were some statistical renderings, a console, and some info about each creeper displayed).
Now, to clarify how to World is structured (I'll be talking strictly about Atlas here, not about the project that screenshot is from)... The World consists out of blocks. These are simple squares upon which acts physics, and which share some properties. There are three types of blocks, though: Creepers, bricks and food. They all inherit from a base class called Block, which implements all the required fields and methods needed for physics and some basic functionality, such as velocity, impulse, destroy(), and others...
- These are the main actors of any world simulation in Atlas. They have a brain, a chromosome, and some input-output devices that let them sense the world around them and react accordingly (or, at least, that's the goal). They reproduce by cell division, but I'm still in the process of designing them thoroughly.
- Really simple blocks that can be digested by Creepers. Usually shown green on the screenshots (on the one above they can "grow" in a tree-like structure, which was beneficial for learning).
- By current design, these are only instantiations of the Block class, and have no extraordinary behavior (aside from being able to release or transfer energy (a.k.a. explode), which is a property of all blocks).
So, the "goal" (there's no real goal) for the Creepers is the same as for "real"-life animals, carry on the genome to future generations. This implies getting food, conserving energy, reproducing, and becoming overall more efficient in life. I think this will be it for this post!