A robust, full featured (eventually) evolution simulator, similar to the old Maxis classic Sim Life, but much more scientific in nature. Creatures live by basic biological rules and evolve instinctual behaviors over successive generations though a virtual genome. Behaviors are the result of neural network pathways, which can be quantitatively monitored in real time using graphs.
- Creatures have senses, and can tell when food, rocks, other creatures, etc. are nearby.
- Creatures need food to live, and even more of it to mate.
- Creatures can not walk out of bounds or into rocks.
- The offspring of a creature will share genetic traits from both of its parents, plus a possible mutation or two.
- All creatures will eventually die, either from starvation, or from old age.
- A piece of food will eventually run out, forcing the creatures to seek a new one.
- Creatures have basic biological urges. They will eat food if it is in reach. They will mate if they have eaten enough food recently and a mate is in reach. They will not move given a lack of input.
- Creatures have the ability to sense food and other creatures. If they sense these things, their movement might be affected (dependant upon the makeup of that creature's neural net).
- Graphs are working. GUI to control what the graphs display still needs to be built.
- The user can create and delete creatures, food, and rocks.
Known Bugs and Issues
- Removing field objects with GUI can cause NullPointerExceptions with other methods accessing the objects.
- run() and getRecentfps() in Stepper can conflict over recentWaitTimes, throwing NullPointerException. Due to being part of different threads.
- Pausing simulation isn't done well enough.
Features Planned to be Implemented Next
- Proper graph gui so you can choose what data is displayed.
- Figure out proper gene mutation algorythm and implement it.
- Fixed major CPU leak bug. Simulation speed is now consistant given a constant number of creatures.
- Added rock aversion neuron to the brain, and gave it a weight proportional to how close the rock is (creatures will mostly ignore distant rocks).
- Consolidated brush size and speed sliders into one slider that changes function based on context.
- Made it so creatures don't stop dead when they hit a barrier. They can attempt tangental motion, and if that fails they will take a step in a random direction.
- Basic functioning field, neural net, detection, and graphs. Only field object adding/romoving GUI in place.