Thanks to all the people who have given me corrections, including Greg Pugliese, Craig Reynolds, Xiaoyuan Tu and Ian Wright.

Page 2, Line 20
  • Most of techniques in this book therefore apply ...
    Should read:
    Most of the techniques in this book therefore apply ...
Page 3, Line 23
  • ... even the the player's expectations
    Should read:
    ... even the player's expectations
Page 18, Line 24
  • ... is they have different types of controller.
    Should read:
    ... is that they have a different type of controller.
Page 20, Line 7
  • inline tgController* getConstroller();
    Should read:
    inline tgController* getController();
Page 22, Line 33
  • Citation should include:

    [Tu00] Xiaoyuan Tu. Artificial Animals for Computer Animation: Biomechanics, Locomotion, Perception and Behavior. Springer-Verlag, New York, NY, 2000.

Page 23, Lines 17-21
  • The code snippet would be clearer if it read (see related correction on Page 55):
    // calculate character c's required acceleration from the desired velocity
    tgRealVec acceleration(c->getAction().getDesiredVeclocity());
    acceleration.subtract(c->getVelocity());
    // calculate required force from the acceleration
    tgRealVec force = acceleration.scale(c->getMass());
    // force can't be greater than the maximum possible force
    force.clampMaxLength(c->getMaxForce());
    // re-calculate acceleration for new (possibly) clamped force
    acceleration = force.scale(1.0/c->getMass());
Page 24, Line 21
  • frame rate is to avoid missing collisions, or numerically solve stiff ...
    Should read:
    frame rate are to avoid missing collisions, or to numerically solve stiff ...
Page 25, Line 32-35 (also applies to Page 27, Lines 4-7)
  • Should add:

    Instead of all the controllers using the most recent up-to-date game-state, another simple solution to the problem is to just make all the controllers use the same previous game-state.

Page 41, Lines 16-18
  • ... involves calculating its dependents. For example, calcMyDistanceToNearestCharacter depends on calcMyDistanceToCharacter which in turn depends on calcMyDistanceToCharacter. If some of a percept's dependent's have ...
    Should read:
    ... involves calculating its dependents. If some of a percept's dependent's have ...
Page 43, Line 24
  • ... hearing radius and so is visible (or at least audible).
    Should read:
    ... hearing radius and so is audible but not visible.
Page 45, Line 21-22
  • ... percept is calcPositionTagged Future that predicts ...
    Should read:
    ... percept is calcPositionTaggedFuture that predicts ...
Page 49, Lines 6 and 20
  • tgRealVec tgPerception::calcTaggedPositionFuture() const
    Should read:
    // Prediction is for one tick into the future
    tgRealVec tgPerception::calcPositionTaggedFuture() const
  • calcTaggedPosition Future is particularly ...
    Should read:
    calcTaggedPositionFuture is particularly ...
Page 50, Line 1
  • Similarily, as mentioned ...
    Should read:
    Similarly, as mentioned ...
Page 52, Line 31
  • ... a label, a set of label, a string, ...
    Should read:
    ... a label, a set of labels, a string, ...
Page 53, Line 22
  • ... from the distribtion
    Should read:
    ... from the distribution
Page 55, Lines 9-11 and 24
  • void tgControllerNPC::calcAction(int whoami)
    {
    perception->setMyIndex(whoami);
    Would be more consistent as:
    void tgControllerNPC::calcAction(int myIndex)
    {
    perception->setMyIndex(myIndex);
  • v.subtract(perception->getMyVelocity());
    Should be deleted altogether (see related correction on Page 23).
Page 57, Line 22 - 23
  • ... percept calcIsCollisionsImmininent
    Should read:
    ... percept calcIsCollisionImminent
Page 58, Line 16
  • ... returns a Boolean.
    Should read:
    ... returns an enumerated type.
Page 59, Line 10
  • ... reason they are suitable representation is ...
    Should read:
    ... reason they are an appealing representation is ...
Page 62, Line 16
  • ... use an enormous amounts of memory
    Should read:
    ... use an enormous amount of memory
Page 67, Line 36
  • The lastTaggedbyList ...
    Should read:
    The lastTaggedByList ...
Page 68, Lines 8, 18 and 28-29
  • lastTagged ByList had better be ...
    Should read:
    lastTaggedByList had better be ...
  • // Note: lastTaggedIndex is a class varaible
    Should read:
    // Note: lastTaggedIndex is a class variable
  • ... suppose character i was tagged by character j
    who then tagged character k all before the
    updateLastTagged was called.
    Should read:
    ... suppose character i tagged character j, who then tagged character k, all before updateLastTagged was called.
Page 70, Lines 4 and 12
  • perception->getTaggedCharacter();
    Should read:
    perception->getWhoLastTaggedMe();
  • perception->calcMyDistanceToTaggedCharacter();
    Should read:
    perception->calcMyDistanceToWhoLastTaggedMe();
Page 71, Line 4
  • ... the memory percept taggedLastKnownPosition is ...
    Should read:
    ... the memory percept taggedLastKnownPosn is ...
Page 72, Line 35
  • ... maintenance abilites ...
    Should read:
    ... maintenance abilities ...
Page 73, Line 8
  • ... game-state, humans players ...
    Should read:
    ... game-state, human players
Page 75, Line 8
  • ... that there has to a be a separate ...
    Should read:
    ... that there has to be a separate
Page 85, Line 5
  • ... branching facto is five ...
    Should read:
    ... branching factor is five ...
Page 89, Lines 12-14
  • However, longer cycles are not removed ...
    Might be clearer as:
    However, cycles longer than one move are not removed ...
Page 91, Line 7
  • ... discrete representation, of the ...
    Should read:
    ... discrete representation of the ...
Page 92, Line 6
  • ... path planing ...
    Should read:
    ... path planning ...
Page 93, Lines 6-8
  • For example, the path ...
    Should read:
    For example, the path b, c, f, i, j, m, n is clearly shorter than the path b, d, e, k, j, m, n even though it contains the same number of steps.
Page 99, Figure 6.7
  • On the S, W path, the "NP_" dot is missing the "C"; on the W, U path, the "_PC" is missing the "N"
Page 110, Line 32
  • ... will come to dominante game ...
    Should read:
    ... will come to dominate game ...
Page 111, Line 12 and 32
  • ... have even a chance success ...
    Should read:
    ... have even a chance of success ...
  • ... reverts to a being regular ...
    Should read:
    ... reverts to being a regular ...
Page 141, Line 24
  • Ian Wright. Emotional Agents. Master's Thesis, University of Birmingham, 1997.
    Should read:
    Ian Wright. Emotional Agents. PhD Thesis, University of Birmingham, 1997.

Last edited Sun Jul 22 22:25:56 2007 by John Funge.