Releases: ME-MarvinE/MaceEvolve
1.1.0 - Save States, Mass, Attacking, and Nutrients
- Added ability to save and load steps
- Creatures now also require mass and nutrients to reproduce (as opposed to just energy).
- Added ability for creatures to attack
- Added more creature inputs.
- Added variation in food size
- Changed dead creatures to decay (Nutrients, energy, mass) over time instead of disappearing. They now only disappear when their mass is less than 0.
- Major performance optimisations, including creatures' brains to be calculated in parallel, and their visible objects to be evaluated in parallel via splitting world size into chunks.
- Replaced cardinal based movement with angle based movement
- Added cone of vision for creatures and visualisation for cone of vision on the selected and best creature (Cone of vision for best creature is only shown when network viewer is open, but it can be minimised).
- Changed creatures so that creatures that attempt to attack more than they eat are more red in colour. Creatures that attempt to eat more than they attack are more blue in colour. Creatures that do both a similar amount of times are more green in colour.
- Added button to hide UI and removed pressing the "0" key to hide the UI.
- Added ability to modify TPS. Target frame rate is locked to TPS. TPS is ignored while in fast mode but is still used for frame rate in fast mode.
1.0.0
- The simulation is now continuous - generations have been removed. Creatures now need nutrients and energy to reproduce and can produce multiple offspring at a time if they have enough resources.
- Steps now perform calculations in parallel, making use of multiple cores.
- Successbounds functionality has been removed.
- Creatures are no longer blocked by the worldbounds and instead loop to the opposite side.
- The world is now also rendered during fast mode.
- Network viewers can now also be shown during fast mode.
- ~20 minutes of in-game time produces the same behaviour as the first few thousand generations in the previous release.
~2 hours of in-game time produces creatures that move in all directions as needed whenever food spawns close enough. When there is no food in range, most stay still.
0.7.1
Decreasing the mutation chance and increasing the amount of creatures considered as successful from top 10% to top 50% has led to better creatures evolving long-term.
The highest I've ran the simulation to was 20600 generations. With a Worldbound of 1920x1080, creatures move left by default, they only eat by stopping and only moving down towards the food. They move up and left at the same time if there is no food below them and if they see food above them. There is still much room for improvement as 80% of the population is dead at the 16 second mark (30 seconds total per generation).
0.7
- Refactor creation of a new generation by @ME-MarvinE in #16
- Remove unused property 'StopWatch' in GameHost by @ME-MarvinE in #17
- Replace function 'GetVisibleGameObjects' with function 'IsWithinSight' in Creature by @ME-MarvinE in #18
- Change how information from the simulation is stored and distributed to creatures by @ME-MarvinE in #19
- Add caching of MX and MY in GameObject by @ME-MarvinE in #20
Optimisations since the last version have resulted in ~12x increase in speed when fast-running the simulation compared to fast-running in version 0.6. Fast-running now takes only 2-4 seconds to finish a generation as opposed to 15-20 seconds. It simulates around 1 minute every 5 seconds, so it takes around 2 hours to simulate what would have taken a day.
GameHost's 'NextStep' method can also be ran asynchronously in the WinForms and Mono app, as long as the code responsible for drawing creatures and food is disabled.
Full Changelog: 0.6...0.7
0.6
What's Changed
- Better visualisation of selected and best creature by @ME-MarvinE in #12
- Decouple graphics by @ME-MarvinE in #13
- Bug Fixes and graphics decouple by @ME-MarvinE in #14
- Add MonoGame Implementation by @ME-MarvinE in #15
Full Changelog: 0.5.3...0.6
0.5.3
- Added visualisation of self-referencing node connections in Neural Network Viewer.
0.5.2
- More info in Neural Network Viewer
- Fixed crashes in Neural Network Viewer
- Small fix for PercentMaxEnergy input
- Small tweak to how nodes are added when mutating.
When ran to generation 1839 (36 seconds per generation), most creatures got stuck on the left wall. However, the rest of the creatures (~10-20%) moved left and up/down to eat, after which they would move to the right until they found another bit of food they could eat to their left and repeated the process. These creatures averaged at ~26 food eaten per generation with ~40 connections between their 17 nodes (5 output, 4 process, 10 input). They may benefit most from an increase to the maximum process node amount (Currently 4).
I was convinced the creatures couldn't get that complex before this, and thought there were still problems with how nodes were calculated but it seems the implementation is good enough that more complex features can be added. The main concern currently, and as more complex processes are added, however, is speed. I think the main factor is not using multiple threads to perform calculations, but it may also be time to migrate to an actual graphics framework instead of using .Net's System.Drawing library.
Currently, the output of a single process node will be stored by the creature and used again in the same step if it has self-referencing connections. (Although a parameter can be changed to make it always reevaluate nodes as needed) but it may be worth changing this so that instead of outputing 0 the first time (to resolve the loop) and then storing the value to be used in future evaluations in the same step, it will always return 0 in that simulator step to indicate that it was never evaluated before the current step.
0.5.0 - Neural Network Viewer
Added a GUI to view a neural network's structure.
Select a creature to view its network.
Press the 'Track Best Creature' button to open another view with a network belonging to the creature that has eaten the most food in the current generation.
-
Blue circles are input nodes, grey circles are process nodes, orange circles are output nodes.
-
The more negative the connection is, the brighter red it will be. The more positive a connection is, the brighter green it will be.
-
The stronger the connection is (how far away is it from 0), the thicker the line is.
-
The smaller number at the top of each node is the id. The bigger number is the node's last output value.
-
The output node with the highest output value has a thin white border.
-
Click a node to select it. The selected node will have a thicker white border. Click and drag on the selected node to move it.
-
Optimised reproduction and mutation.
-
Added 'RandomInput' CreatureInput.
0.4.0
Creatures can now move in all directions (some directions more preferred than others) in order to get food. This should develop at around generation 50-150.
0.3.0
Full Changelog: 0.2.0...0.3.0