I decided, after talking to my dad about neural networks, to write a creature simulator that allows creatures to evolve. This is a complicated type of software for me to write because I want to make it totally flexible and yet get it done and working. There are things that are seemingly impossible to write in software, such as the ability of the neural network to change size. But maybe it’s possible to allow for mutations in the connections between neurons could happen. It’s hard to decide at the moment how this might work.

To be flexible, I think that there should be a maximum number of senses that is more than a few, with the senses being totally flexible in how they sense. A single sense apparatus would have a field of “view” that could be as high as 360 degrees, an orientation or aim, a maximum range, a set of properties it can detect (light, sound, smells), and maybe other features I can’t yet think of. The properties of the creatures and the environment, such as light, sound, etc., are all just generic things that don’t really equate to specific properties of the real world. On Earth in the atmosphere, our eyes can detect light and our ears detect sound. In this world, creatures might have numerous senses that detect properties that are not equated to light frequencies, etc.

The neural network might not be too hard to create. There would be a few input neurons for each sense and what they detect will be real-world information like range, direction, and maybe some made-up properties similar to “color” or “smell”. I am not yet sure if the features of a sense are part of the neural network but I think not. Those will be traits that can evolve but they are more physical in nature and not related to the processing of data. A sense with a limited range might still send a value from 0.0 to 1.0 to its distance neuron but the meaning of “1.0” might be different than the meaning of “1.0” when used by a sensor with a nearly unlimited range. The neural network will deal with these things as it sees fit.

There will need to be a source of energy for the creatures. I expect to have solar power, or power that is constant and low-level, so that a creature could just survive and reproduce by developing low power senses. Even though it will be sort of hard-coded into the environment, there should be some sort of food that pops up here and there. But maybe that doesn’t make sense if solar-power low-consumption creatures can reproduce in a way that allows them to spread a little. The neural network will have a bunch of output neurons that, similar to the sensory neurons, are connected to specific non-network features. There will be neurons to control speed, direction, reproduction, some outputs like smell, and anything else that seems to make some sense. The environment should have some features that the creatures cannot adjust or a creature might evolve to be completely invisible in all ways. But if I can somehow build a high cost into a high light-absorbing output property, maybe invisibility is possible. I’ll work out the details as I go.

So I have a plan for the senses, the neural network, the environment, and reproduction. The creatures will be able to sense the other creatures around them and will put out signals (yes, “signals” is a good word for light reflection, smells, etc.) that the others can sense. With some tweaking, so various signals have different maximum strengths in order to mimic how sound doesn’t travel the same as light and smell is worse than both, I think I can make an interesting simulation.

I’ll write some code tonight to get a simple creature drawn on the screen and moving in a straight line. Then I’ll have to do some research for how to write the data structures for a neural network before trying to make a creature have some random abilities. I’ll post more when I get something interesting working.