anuraghazra / EvolutionAquerium

:fish: :bug: Small Inteli Creatures Based On Steering Behaviours

Home Page:https://anuraghazra.github.io/EvolutionAquerium

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Evolution Aquerium

Check out Evolution Aquerium case study.

Try Out The demo

Craig Reynold's

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.

About

:fish: :bug: Small Inteli Creatures Based On Steering Behaviours

https://anuraghazra.github.io/EvolutionAquerium

License:MIT License


Languages

Language:JavaScript 83.1%Language:HTML 9.3%Language:CSS 7.7%