Research Article

Artificial Intelligence in Video Games: Towards a Unified Framework

Algorithm 5

DPS estimation of an ability chain. This function can be useful for creating optimal DPS plans.
double  calc_dps(AbilityChain & ac)
{
double  dmg = 0;
double  dur = 0;
AbilityChain::iterator a;
 //Add up the damage and duration of each ability in the chain
for  (a = ac.begin(); a != ac.end(); ++a)
 {
  dmg += (a)->damage();
  dur += (a)->usetime();
 }
 //DPS = total damage/total execution time
if  (zero(dmg))
  return  0;
if  (zero(dur))
  return  numeric_limits<double >::infinity();
return  dmg/dur;
}