18.8AdvancedTopics 325
input for its validation check. Compare those values against the actor’s expected
behavior to help identify cheaters.
WhoHitWho?
Imagine player A (local) shoots a pistol at player B (remote, slow update). If im-
plemented poorly, player A has to “lead” the shot ahead or behind player B based
on the ping time to the server. A good dead reckoning algorithm can really help
here. As an example, client A can use the current dead-reckoned location to de-
termine that player B was hit and then send a hit request over to the server. In
turn, the server can use the dead-reckoned information for both players, along
with ping times, to validate that client A’s hit request is valid from client A’s per-
spective. This technique can be combined with server validation to prevent
abuse. For player A, the game feels responsive, seems dependent on skill, and
plays well regardless of server lag.
Articulations
Complex actors often have articulations, which are attached objects that have
their own independent range of motion and rotation. Articulations can generally
be lumped into one of two groups: real or fake. Real articulations are objects
whose state has significant meaning, such as the turret that’s pointing directly at
you! For real articulations, use the same techniques as if it were a full actor. For-
tunately, many articulations, such as turrets, can only rotate, which removes the
overhead of positional blending and ground clamping. Fake articulations are
things like tires and steering wheels, where the state is either less precise or
changes to match the dead-reckoned state. For those, you may need to implement
custom behaviors, such as for turning the front tires to approximate the velocity
calculated by the dead reckoning.
Path‐BasedDeadReckoning
Some actors just need to follow a specified path, such as a road, a predefined
route, or the results of an artificial intelligence plan. In essence, this is not much
different from the techniques described above. Except, instead of curving be-
tween two points, the actor is moving between the beginning and end of a speci-
fied path. If the client knows how to recreate the path, then the actor just needs to
publish how far along the path it is,
ˆ
, as well as how fast time is changing,
v
.
When applicable, this technique can significantly reduce bandwidth. Moyer and
Speicher [2005] have a detailed exploration of this topic.