If you have any features you would like to see in a future version of this simulator you can post your suggestions here or just upvote the ones you like the most.
lol yes I just found it. I came here to retract my suggestion :P Thanks for your reply though!
Ok another idea then: maybe you could have an option to let bones slowly evolve in length especially when most creatures are within a few percent fitness from each other.
also it would be fun if you could move the joints design around between generations :P
do not exist a way to change the total population per generation, some times is better start with a huge population, and star to lowing the number of population, for exmaple, i started a spider with 1000 population per generation, using 40 per batch. now after 500 generations i would like low the population and speed up my simulation, becoune now the spider is close of the best way to run.
haven't played it (saw it on YouTube) it's a cool idea. One thing I'd like to see is the creatures have a chance to evolve their structure as well. Like mutate to add or remove joints bones or muscles across generations. Having an immutable body structure doesn't make for interesting evolution over the countless generations
Edit: sorry I kinda misspoke. It's for sure interesting and evolving neural nets are awesome... But it's only half half of the evolutionary process
morbid :o but such a negative mutation would be pretty detrimental so I doubt it would persist. that and the others of the population would be selected. unless they all magically develop the same mutation? Maybe if the creator allows us to set our own fitness variables...
This might be a strange suggestion, but hear me out... Do not count the first 2-3 seconds in each generation. The reason why? Because each creature is slightly slower because they have to get into position to move, since creature design that the creature spawns in isn't exactly the optimal starting position. For example, who would be faster? A human who started in a running stance, or a human who is started in a sitting position? The reason why I think this should be implemented is because you can basically make any creature faster by a large amount just by increasing the evolution time, and by not counting the first 2-3 seconds of prep time, we would have a more accurate view of the creature's actual speed.
SUGGESTION TO IMPROVE THE A.I. to be a better runner
Like in real life, babies don't start trying to run, they
try first be stand up.
The program should divide the learn moves into 3 steps to lear how to run:
1- STAND UP : this is important to software knowing what is the correct creature position, to kwnon what is theyer foot, legs, head etc.
in this process at some moment we should to able to use a drag force using the mouse cursor, to try desestabilish the creature, or thrown heavy objects in it direction to test and see how creature try stand up with "stranges" forces on it body.
2- WALK: After learned how stay on foot, should now learn how to walk, becouse have a huge diference between walk and run, some animals (like a cat) when they are running, some times (mileseconds) they dont touch the ground and walking have slower moves and software should try to find the best way to consuming less energy in muscles (becouse walking is the most eficient way to move, differently of running, becouse is more explosive moves and higt energy musscle consuption..
3- finally using all the informations from step 1 and 2 to learn how to run, tryng to be the faster as can,
thats it THANKS.
Add the ability to save and load neuron strings. Of course the net has to be the same size, and have the same number of muscles, but the body itself can be edited freely. Additionally the muscles could be visibly numbered so you can make sure the network connects roughly the same way.
When i think of an "overview of current generation", i mean that you can zoom out with the camera and also move the camera with the arrow keys. And like i said in the post of the walking human (https://itch.io/t/228740/did-anyone-get-a-good-running-humanoid-creature), i "train" my creatures in a special way and for this would a timer be very practicle.
This seems quite ambitious, but this game simulates just only the half of the evolution process, so how about add a way that evolves any creature, without only evolving its brain, but also evolving its nodes, where they're placed, and possibly mutates a random new bone and muscle even?
Great game! As a begginer in machine learning / deep neural networks, I have a suggestion that I am sure you considered but it's hard to implement in Unity api. It would be nice if you could somehow implement a gpu acceleration method and let it run in the background, without the need to render it ( and obviously scale up the speed of the game to be more efficient ). This would let us train the creatures faster and see the result afterwards. Good luck in the future!
A possibility to let your computer (especially the gpu) simulate a bunch of generations in just a few seconds/ much less time. For example i have a gpu that just calculates at the beginning of a generation and that even with only about 40-50 % of its capabilities. However i have to wait till the simulations are over.
Edit: Upss... this was already posted by someone else.
I would like two have more control over how to determine fitness. I am not exactly sure of a great way to handle this, but here are 2 scenarios.
1) I was trying to evolve bipedal motion, but the thing keeps following over, then the one that can squirm the best is selected for. I would like to be able to maybe pick a Joint in the creature and stipulate something along the lines of, if this joint drops below a certain vertical height then drastically decrease the fitness of the creature. Hence creating a pressure to select for the creature to stay upright. Also, there are creature that stand upright initially, but they get selected against because following over moves the creature further.
2) When my creature all start hitting 100% fitness, then evolution no longer selects for improvement. For instance I can get 45.63 m/s on Generation 9 and then 12.7 m/s on Generation 57 for the Running Simulation because both produce a fitness of 100%.
Another thing I think may be cool would be to change the fitness equation. For instance, train something to stand upright, then train it to walk, then train it to walk and jump. Instead of having to start at square 1 for each task.
here are some things i would like to see maybe if you like the idea and if it's possible it would be nice if bones were able to curve and bend and if it were possible to place more than one muscle between two bones also place the muscle freely anywhere on the bone and even muscles that begin and end on the same bone i think that could fix creatures not working
i love your Evolution simulator it's super awesome
I think it would be really cool if you could rate the creatures one by one instead of the simulation rating them by a certain thing. Then you could evolve your creature to do more specific things instead of having a few monetary options. Also, there should be a option to make sure that the crautures never just stop moving, because some of them do that and it is really annoying when they evolve to just fall forward and do nothing.
I love the Idea of having stamina and having to find the most efficient way to run. If that ever gets added I think that if you also put in the option to let the creatures get hurt, then they would have to run with slamming any limbs into the ground because that would hurt their stamina. That would be really cool.
I'm not sure if this has been suggested or not but i think it would be great if we could manually pick which AI we wanted to continue to the next generation. this way if there's something the person is aiming for that isn't apart of the already established rules they'll still be able to do it.
Add an option during the generation simulations to create a "target speed", basically a speed that the creature has to reach, and can't go higher or lower than it. This might make for more interesting creatures since you can basically simulate the running, walking, and standing versions of the same creature, without having to add anything else. I got this idea from this video, the "target speed" shows up at the bottom at the 1:30 mark.
So i have been thinking of a way to implement the "choose the best creatures" idea and i think it would be cool if you just got to give the creature a score. The score could be any number, but the higher the score, the better. You could use the same programming as deciding who was best in running, but just plug in the users score instead of distance. The creatures will still try to evolve to get a higher score even though the goal could change. It would be amazing if you put that in. By the way this is probably the coolest simulator i
An alternative type of bone/joint that when it touches the ground greatly reduces the fitness and so lets you get the type of movement you want (for example not dragging on the ground or lunging) more reliably without having to mess with Mutation rate/keeping the best creatures.
Making getting the type of movement you want less time intensive.
I like this, Whitefox2, but I'm thinking a slight variation of it would be better, so I'm going to post my variation in a separate reply and credit you with the original idea. I already upvoted this suggestion. Please look for my "SENSITIVE JOINTS" suggestion (which I will write after I post this reply to you) and consider upvoting it as well. :) Thanks.
A way to delete current generations for older ones in saves, for example, in generation 4, I get the movement that I want, but in gen 5, everything goes bad and glitchy and stays that way for a long time, but I only have the save file for gen 5. So I can delete gen 5 and go back to 4 and hope that it continues like that.
I'd like to see some way to manually place a kind of 'sensor' object that would essentially capture the rotation of a specific bone to add as an input to the neural network. This way, the creature can know the rotation of certain key parts of its structure, such as limbs.
Hi Keiwan. I really did NOT want to create an account here, but I see no other way to make suggestions. I have several of them. I'm easy to find on YouTube or Twitter (@DonaldKronos) if you wish to talk. I don't know if you will see this, but upvotes are not a good way to judge how well an idea is liked, because those posted later will have been seen by fewer people and had less time to accumulate upvotes. Even so, I'll post a few, each in their own reply in this thread, so that people can upvote them if they choose to, as you have suggested... and I will also look through the HUGE list of replies and try to find some to upvote as well. I don't know if links are allowed here, so I won't link to my YouTube channel, but I have featured your Evolution program in a few videos already.
Suggestion: ALLOW USER TO EDIT A NEURAL NETWORK --- First, I would like to suggest that a way be added to edit the neural net of the "best creature" (the one with the highest fitness score) and inject that edited neural-net genome into the population (perhaps replacing the member with the lowest fitness score. Even if what they're given the option to edit is nothing more than the binary representation to edit, with no explanation of what any bit or group of bits might represent, at least they could try stuff and see what happens.
Suggestion: START WITH OBSTACLE VERY SMALL AND SLOWLY INCREASE ITS SIZE --- For the obstacle exercise, I would suggest in the first generation that the obstacle (or ball rolling on the floor) should be about the size of a joint object. After that, it would increase in size slightly in future generations until reaching its maximum size, which should probably be the size currently used. When to increase the size could be every generation, or every 10th generation, or when a large enough percentage of the population manages to avoid it completely. My suggestion would be to first try increasing it every 10th generation. That way, early success will come more easily and can be improved upon by those members of the population that inherit it.
Suggestion: START WITH A LOW OR ZERO INCLINE AND SLOWLY INCREASE IT --- For the climbing exercise, I would suggest in the first generation that the floor should have the jagged edge that will be needed later on, but should be level or a very shallow slope. I think completely level would be better if fitness it rated based on left-right movement, but if the fitness score is actually based on altitude then small incline would be needed in order to measure fitness at all. For later generations the slope would increase a little at a time until it reached its maximum, which should probably be the slope currently in use. When to increase the slope could be every generation, or every 10th generation, or when a large enough percentage of the population manages to make some reasonable progress. If increased every generation, the increase in slope should be almost imperceptible. My suggestion would be to first try increasing it every 10th generation. That way, early success will come more easily and can be improved upon by those members of the population that inherit it.
Suggestion: ADD RUN TO THE LEFT (AND RUN EITHER WAY) --- I would like to suggest changing the name of the "RUNNING" exercise to "RUN TO THE RIGHT", and then adding in a "RUN TO THE LEFT" which would score fitness based on how far to the left a creature managed to get and "RUN EITHER WAY" which would score fitness based on maximum absolute distance from the starting point. I think this would be great for illustrating that it is the evolving neural network which ultimately achieves the specified task and not the specifics of the body design (although the body does have to at least have the potential).
Suggestion: ADD OPTION TO UNDO LAST CHANGE --- Sometimes it's difficult to get delete or adjust something placed or connected differently than intended, especially when a muscle gets misplaced among other muscles... so it would be nice to have the option to undo something like that directly.
Suggestion: ADD MUSCLE ON/OFF TO NEURAL NETWORK --- I don't know whether the muscles are simply set to push r pull at full strength or have different levels of push and pull (which I think would be much better, though more computationally intensive), but they do seem to be always either pushing or pulling. I would like to suggest that the neural network should be able to opt to turn a muscle off completely, so it would still have it's passive springy tendency toward its original length but would neither actively push nor actively pull. When set to show "EXPANDING" in blue and "CONTRACTING" in red, neutral or turned off could be shown in purple.
Suggestion: UNBENDALBE JOINTS --- I would like to see a way to give specific joints an "UNBENDABLE" attribute, so that it would effectively allow the user to fuze two or more bones into one "bony structure" with a specific shape and more than one place that muscles can be attached. As an example of how some people might use this, I've seen several YouTube videos in which a person tries to give their creature a "head" which immediately collapses and flops around. LOL! This way they could make a head that at least doesn't collapse. Flopping around is a separate issue. :)
Suggestion: EXTRA SOLID BONES --- I would like to see a way to give bones an "EXTRA SOLID" attribute, to reduce the tendency of bones to apparently change length under pressure. This would offer a way of making structures with more predictable behavior. What I mean by this is easier to explain by example. I've seen YouTube videos in which people talk about using "triangles" as if they are immutable shapes. This way, they could be... without messing with the usual behavior of ordinary "bones" in the program.
Suggestion: STRETCHY/SPRINGY BONES --- I would like to see a way to give bones a "STRETCHY" or "SPRINGY" attribute which would make those specific bones less solid than the way they normally are in the Evolution program. Such an attribute would allow a user to tweak the physics a bit with regard to certain parts of their creature.
Suggestion: SENSITIVE JOINTS --- I would like to see a way to set joints to be sensitive to touching the ground, such that touching the ground would decrease the creature's fitness score. This is based on a suggestion by Whitefox2 about being able to place a ground sensor in bones, and is also an extension of my own idea of being able to set attributes such as flexible bones, extra solid bones, unbendable joints, and so on, which would allow the user to tweak specific details about a creature other than the starting arrangement of how its parts are arranged. This feature would offer a way of discouraging a creature from collapsing onto the ground when asked to climb, or and discouraging certain parts (such as an intended "head") from being used as feet.
Suggestion: COMPETING CREATURES --- I would like to see a way that a user could clone a creature and modify its clone and then test the fitness of both at the same time, with a way to switch back and forth or cycle through the creatures intended to compete in the same activity. Offspring would generally be of one or the other, usually avoiding breeding of neural networks between different body types, but if enough of the parts could be matched up to consider them structurally compatible with each other, their bodies could even be occasionally be included in the process of breeding, producing offspring with, potentially, physical and mental features from both parents. Perhaps the most fit of such hybrids could even be made available in the creature building area.
Suggestion: BODY EVOLUTION --- Okay, so technically the body of a creature in this evolution engine evolves as its designer adds changes to it, but I would also like to see an option to turn on (or off) the inclusion of body mutations in the breeding process which might move a joint a little bit in some direction, switch an attribute on or off such as EXTRA SOLID on a bone, or "UNBENDABLE" on a joint. One such change should not make the resulting offspring structurally incompatible with other offspring of sufficiently similar creatures, so the body could then be included in what's inherited and perhaps exchange "genes" when reproducing in a similar way to what's currently done with the neural networks.
Suggestion: GROSS MUTATIONS --- This is mainly meant as an extension to my BODY EVOLUTION suggestion, but could be implemented with or without it... although it wouldn't make nearly as much sense without it. The idea is that is bodies were inherited rather than only the neural networks, once in a while a body could have a mutation that connects a muscle between two bones (preferably which are connected to each other by a joint, though they wouldn't have to be) or could have a muscle deleted, or perhaps even have a short bone added dangling from an existing joint, or a bone added between two existing joints. Most such mutations would be detrimental, so such "GROSS MUTATIONS" would be turned off by default, but if switched on they would be allowed to happen, the detrimental ones would likely be quickly weeded out. Neutral ones might end up with a few offspring, and the rare beneficial mutations might even end up dominating the population. :) This might actually be very beneficial in terms of autonomously eliminating useless extra weight (such as an unneeded "head" which the brains are not stored in anyway) or muscles which do more harm than good with regard to a specified fitness task.
I'm suggesting the use of the term "evolation", as an extension of the family of words including "simulation" and "emulation". The word "evolation" is formed from "evo" used as a prefix and "lation" meaning local motion or local disturbance and indicating a local system of change. Indicating a system of evolutionary relation as conforming to, generated by, or viewed from the perspective of local conditions.
Environment viscosity, to enable flight or swimming. That is, add optional simulation of air or water or whatever "substance" one might consider the creatures to be moving inside of. A viscosity setting could allow adjustment of such simulated substance to act as air or water or perhaps even something like tar or quicksand.
Allow selection of fitness environment and fitness criteria in various combinations. For example, running criteria (movement to the right) in the climbing environment. (Which might just already be measuring movement to the right, but it what the only example I could think of while making a video and thinking about other things and reading what I'm writing at the same time so that my video will hopefully be more interesting.)
Hey, Keiwan... How about a feature to ignore the first second or the first n seconds of the simulation with regard to the fitness criteria?
In other words, the recorded starting position or other condition with which to compare for fitness calculations would be reset for each member of a batch (or generation) after the chosen number of seconds, one time, to reflect the creature's position or state at that time rather than what it was set to at the beginning of the simulation. This would eliminate (or at least partially eliminate) things like scoring an immediate fall to the right as good running skills, since the fall would generally happen in the first second or two. The setting could default to 1 except when the time per batch is set to 1 second (or less) in which case it would be turned off (set to zero). It could be changed from the Pause screen to any non-negative number which is smaller than the number of seconds per batch.
How about negative fitness scores? For example, if a movement of +x counts as 100% fitness, then a movement of -x would count at -100% fitness. It appears this is already being done internally, but simply not displayed. This would allow creatures which move in the wrong direction to still be compared, so that badly wrong could be distinguished from slightly wrong.
Can we get joints with a custom range of motion? 360, 270, 180, 90, 45, etc., as well as the ability to rotate them before placing. Shoulders, knees, elbows, hips, etc. all have this limitation in nature. I think it would add interesting dynamics to this simulation.
Also, It's probably been suggested before, but can we have stats on how far the best creature jumped, walked, climbed, etc.?