Be able to rotate and/or flip your creatures. Because I built a creature that went backwards better than forwards and I wish I could just rotate it.
As many already have asked for, a "head."
Evolution tends to favor those that don't die, but in the simulator there is no death or risk, causing many "species" to move using methods that should kill any.
This could also give the obstacle jump a boost in evolution, forcing creatures to learn to jump earlier/faster.
Hi Keiwan, just getting back into the game after a little break. It would be nice to see the current speed of the creature being viewed. I have a creature that starts slow and then goes really fast, so I would like to know the max speed that the creature reaches. In fact, maybe there could be a max speed achieved and current speed added into the game? Thanks
Another suggestion:
When stopping a simulation at the nth generation, it would be cool to be able to move some joints while keeping the neurones weights and so resume the simulation from this nth generation. In other words, neurones weights are erased in case joints, bones or muscles are deleted or added, but not in case of just moving the joints around.
I would like to grow my creature using different "learning rates", and by that I mean mutation rate. For that it would be very useful to have a dashboard, similar to tensorflow dashboard. I'm sure you know exactly what I'm referring to.
Keeping track of the settings and fitness would be very helpful in growing a successful creature.
Support for adaptive learning rate mutation rate based on the fitness would be too much to ask, but would be amazing.
Thank you!
Great "game" !
Some features that would interest me :
- non mobile joints (to make fixed angles with bones)
- to be able to edit (add or delete or move joints, bones, or muscles) after several steps (generations). This could be useful to first learn "basic" behavior (like walking) to a quite simple but secured pile of bones, joints and muscles (secured in the sense they cannot fall easily), and then remove or add components so they are more efficient.
- to record data in a csv file, data like the best scores over time, or all scores over time ...
- and would it be possible to have a look to the configuration of the "neural net" of best creatures (as a list of parameters for example)
Simple dark mode that just toggles a final `1-x` line in an existing shader for minimal impact.
Network input for if any joint within a group is touching the ground, rather than simply how many are. I imagine it's useful to know which foot is touching the ground rather than only how many are. For backwards compatibility all unspecified joints are in the same group.
Activation functions for the networks. I tried to find if there's already some form of nonlinearity in the network but I can't parse Unity code and didn't see any in the brain code. Simple choices include ReLU for just clamping the minimum value to zero; Leaky ReLU which is just ReLU but lerp the original value in a little; Sine; GeLU as approximated with `0.5 * x * (1 + tanh(sqrt(2 / pi) * (x + 0.044715 * x^3)))` which allows for some negative values but fades to zero as it becomes more negative. The final outputs shouldn't have these on them.
Biases to go along with weights in the network s. Simple values to add to the output of each fully connected layer (before activation function if added).
There are more complicated things that might be interesting, like gated units where the output of one layer is put through an activation function and then multiplied with the output of another layer in order to block off an output in certain situations, but at a certain point a line has to be drawn for simplicity.
This "game" is awesome, Two requests here please:
01- the possibility to use multiples cpu and cpu threads.
When simulation in BATCHES is active you can run more simulations BATCHES per cpu core or using cpu mult threads to improve speed of simulation. my cpu has 16 threads and the current version is using only one.
the next one I don't know if is possible:
02- global online simulation, maybe this one is a little to much and it needs be a paid service
we can use a online server or another way to allow multiples computers or cell phones to improve and simulate the same creature, for example, I create a monster, upload this monster online or active a button "global online simulation" and any one can make a online simulation and continue the same evolution, not start another simulation but improve the same creature and the best fitness version will be selected, imagine 10000 simulations at once running in the world, could be a very nice addition, very complex I know...
BYE I love this "game"!!!
Surely duplicates, but I'll list just in case anything's not covered:
Really, the first two would be enough to make a huge improvement, I think.
It's of course unofficial, but upon seeing this; I went ahead and just made one: https://discord.gg/zG4zXCmFa9
I don't know if you are still performing updates or if you will see this, but one idea I have would be to be able to change the neural network of an evolution.
With this, it would be possible to teach the basics of body movement with a simple neural structure and further on leaving the neural network more complex and taking advantage of the previous knowledge used
When performing an evolution with many entities, the time per generation is wrong because of the slowdown due to the amount of entities. And to solve this problem it is necessary to optimize or separate the tasks to be carried out, which can be done with the cpu cores. Instead of a single core having to perform the calculations for 100 entities, let the task be divided equally among the other available cores. My computer contains 14 cores, each core could be performing the calculations of approximately 7 entities instead of 100. When performing the evolution with the quoted amount, the game only uses:
CPU - 10%-15% -- 65% available
GPU - 4%-8% -- 86% available
MEM - 2%-3% -- 93% available
it is visible when you have around 100 entities and quote 5 seconds per generation, which in the end takes 12 seconds to switch to the next generation.
I would recommend relying on the computer's internal time for the time to work properly.
if (startTime - currentTime >= GenerationTime) nextGeneration()