Evolution Aquerium
Check out Evolution Aquerium case study.
Check-out DevEnv Branch for Beta Optimization and Development which includes Refactored Code and EcoSystem.js Class to manage Creatures and Easy-to-use API for making new Agents.
How It Works?
Well that's an obvious question.
These Creatures are based on Craig Reynold's Steering Behaviors and Flocking System
It's also implements Genetic Algorithm and mutations.
You can learn more about them on Daniel Shiffman's YouTube Channel The Coding Train
How My Code Works?
My code is actually pretty simple.
Agent Class
I made a Agent
class which handles all the Basic behavior like
flock()
align()
separate()
cohesion()
And added some basic parameters like
this.radius = radius; //size of the agent
this.health = 1; // health
this.healthDecrease = 0.003; // how much health will decrease over time
this.goodFoodDie = 0.5; // food increase the health by that amount
this.badFoodDie = -0.4; // poison decrease the health by that amount
I also added a sex
variable for the agents and all of them also has unique names
this.sex = (Math.random() < 0.5) ? 'male' : 'female';
Fear Behavior
And for the most important part, i added a defineFear()
method which handles Fear behavior.
It's a robust function to define fear which can be also used inversly with negative values.
defineFear()
function allows Agents to add Steering Forces simultaneously on each other
// list, weight, perception, ?callback
creature.defineFear(predators, -4, 50);
Reproduction System
Reproduction System checks for male
and female
agents and if their radius
is greater than 8 and they are close enough to each other, then they can reproduce with their specific DNA
and creates a small Agent based on their DNA data and with some mutation.
Predator class
Predators are simple but deadly
they just has a sex
property set to 'predator'
and i used defineFear()
function inversely to attack the Creatures
And bigger they get slower they became.
Avoider Class
Avoiders are very very very fast but they are very agile too.
they just has a sex
property set to 'avoider'
and i used defineFear()
function to avoid every poison and Predator.
Have Fun Watching Them All Day
Try To Contact Me
I AM A PROUD INDIAN.
- [email protected]
Made with
❤️ and JavaScript