Documentation Home

Appendix: Fuzzy Matching

The animation system uses a semantic based system to request the best animation for a given situation. Animation Tokens are put together to form Animation Names, and when an animation is requested in game, the Fuzzy Match system will use a model's animation that is the closest match for the given request. This allows an animator to incrementally refine the animation quality for an in-game model by providing more and more specific animations, or allows a model with relatively few animations to still function in game.

Rules

Examples

Below are examples, where the header item is the animation requested from the game, and the subsequent animations are those provided by the model. The emphasized Animation Name indicates the best match according to the Fuzzy Match system.

Stand Cover Ready

Here, both animations are good matches, but Stand Cover Ready is a more exact match.

Stand Cover Ready

The shorter animation name is favored here, because the Talk token is a mismatch.

Stand Talk Ready

Talk is earlier in the query, and therefore more important than Ready, so the animation that provides Talk is used.

Stand Angry Talk

Because the first token, Stand is required, the system will not use the seemingly good match, Angry Talk, even though the only other option has fewer matching tokens and more mismatching tokens

Stand Talk Cover Ready Fidget

Even though the first animation has a higher number of matches, Talk is still a more important token than any of them. As such, the animation that provides it will be used.

Stand Cover Ready

Both animations score equally, because Stand Cover implicitly has the variation token 00. Because the two animations are equivalent except for the variation tokens, the engine will choose one at random every time it needs to play an animation.

Stand Talk

In this case, both animations satisfy the query equally. One will be chosen arbitrarily, though it will be consistently chosen.