Evolpedal 3D: Walking Evolution Simulation
A downloadable game for Windows and Linux
Evolpedal 3D is a walking evolution simulator where human-like lifeforms learn to walk by any means necessary. This is based on my other game, Evolpedal, but differs in that this uses a humanoid model to animate and is 3D.
The structure of the human does not change by default, so it must learn to walk by evolving its movement patterns. This includes timers on up to 100 movements for its head, spine, pelvis, thighs, calves, and feet. In addition to the timers, the direction, force, and even restrictions of individual joints can evolve. Over time, the lifeform will refine its movements to *hopefully* look more lifelike. However, its only objective is distance.
Evolution is random and the amount of chance can be adjusted. Different variations of the parent lifeform will be tried until one of them traverses farther. This is based on displacement, so they must get farther in any direction from their origin. This record is displayed in the top-left. If the mutated offspring doesn't do better than its parent, it's discarded. Then, another mutation based off the parent is tried. Once an offspring beats the record of best displacement, it becomes the new parent and all future offspring are based off of it. This is, in a nutshell, how natural selection works in nature.
But, what about non-human models? Well, I figured why not allow weird evolutions too? So there is a setting that can turn on non-human joint evolutions. This means the lifeform can evolve to have knees that bend backwards and a twisted up spine, and more horrific sights. This makes for interesting results! You'll soon see how a random evolution decides to move the human body when the limitations are next to none.
So you can adjust the gravity of the world and also allow nodes (legs, arms, head, etc) to evolve different sizes. Check out the gif to the right and you'll see what I mean. Do lifeforms walk better with tiny tyrannosaurus rex arms? Who knows!
The game comes with a variety of settings sliders. The user can play around with Node Control (how strong each part is), Mass Control (how heavy each part is), among plenty of other adjustments. The camera automatically follows your lifeform, though you can toggle that with C and fly around with the mouse and WASD.
Keep in mind this is actively being worked on and will receive updates and bug fixes. Simulations, especially this kind, are extremely sensitive. After all, we took millions of years to evolve to our highly specialized and complex walking patterns. Also, this is not AI. This is decisionless evolution, meaning different movements are generated randomly. No AI is deciding on the next moves, so you should expect many rounds to pass before you get something "cool." I have yet to evolve a perfect human walk with this, but it is theoretically possible. It's all about finding the perfect settings adjustment to increase the chance of a better evolution.
You can adjust the Minimum Head Height to force the lifeform to keep its head above an arbitrary point. If it doesn't, the round ends. However, if it did beat the record for displacement, it is not discarded. This way, falling over is not completely penalized, because every lifeform is going to eventually fall over. Over time, with this setting on, lifeforms will evolve to stay upright longer so that they can traverse farther to beat the displacement record.
If you have any questions, suggestions, want to share a video or screenshot (press 9 to take one), or especially if you have found more optimal settings, please make a discussion post below.
Joint rigidity is essentially a measure of the strength of the constraint. A value of 0 means a perfectly rigid constraint, while increasing values make the constraint more spring like, up to a value of 10 where it has no effect at all.
ERP represents the fraction of how much joint error will be used in the next simulation step. Many constraints could be working in unison to create a complex interaction (imagine a rope bridge, which can be simulated by a attaching a bunch of springs connected together) and ERP is used to determine how much of the previous data will affect the calculation of future data. This is a difficult concept to explain in such a short space, but imagine that we have multiple constraints acting on the same object, each forcing the others into breaking their own rules. ERP is then the priority of this constraint relative to the others, and helps determine who has higher importance during these types of complex constraint scenarios.
Check out my other games here.
Click download now to get access to the following files: