Need-based AI in JavaScript
Warning: this is a work in progress! Do not read until finished.
This article describes an implementation of a need-based AI system in JavaScript. It is somewhat similar to Need driven AI.
Basics
We are going to build the AI logic based on the famous Hierarchy of needs (minus Wifi). To keep the code clean, all stuff related to AI will be put into a separate (pluggable) JavaScript object "AI". Mixing this AI with a Being will be shown later.
First of all, let's define some "needs" our beings shall consider:
this._needs = {
survival: 1,
health: 1,
satiation: 1,
revenge: 1
};
"Survival" is the basic need to survive, i.e. to maintain at least a minimal amount of hitpoints. "Health" is a need to be healthy, to regenerate as many hitpoints as possible. "Satiation" represents the need to fight hunger. Finally, "Revenge" is a need avenge any damage that was done to us.
These needs are initially set to 1, meaning "satisfied". This article will only use 1 and 0 values (0 meaning unsatisfied), but for more complex scenarios, float values can be used to represent partially satisfied/unsatisfied needs.