Author: Mark 'mSparks' Parker, 2K4
Those how have browsed the developers section of the site will have seen the skeletal physics technology demo, this brief is intended to further enhance the technology to include general animation into the feature set.
Whilst many different forms of animation techology exist, the one that undoubtably features most prominantly is that of server controlled animation frames which decide what position to place the model depending on how the server perceives a player to be moving. While this is more than suitable for good looking effects, it does present several problems;
- 1. How to transition between this form of animation and free-fall 'ragdol style' physics.
- 2. Animations have to be defined at the model level, on a model by model basis, this is time consuming, and does not necesserily produce the best results.
- 3. Many animation frames need defining for multiple combinations of moves. for example, most implimentations use a standing-run/jump/attack and a crouching-run/jump/attack series of frames. resulting in unrealistic motion for combinations of these actions (e.g. moving+turning whilst crouched and attacking.
Several enhancements to this standard technology, such as splitting a model in two have improved this situation, but only serve to further complicate matters, and can still result in strange looking animations in some circumstances.
skeletons, animation and skeletal physics:
It is probably worth pointing out, there is a vast difference between a skeleton, skeletal animation and skeletal physics.
Skeletal animation is still principly a frame based technology, only instead of manipulating the entire model, each frame denotes a series of bone locations and rotations, wheras skeletal physics manipuilates these positions depending on environmental conditions. The aim of this breif is to blend the two almost seemlessly with the result of removing the above problems and producing a model and animation system that is almost entirely modular.
enter Impulse Powered Skeletal Animation:
This technology (an idea I've been toying with since well before the release of that skel physics demo) aims to seperate the server frame and model animation. This allows for the animation to be handled entirely clientside in a client-server environment.
Server side transmit data:
player position, player rotation, player 'frame' based on current combinations of player actions (stance/run/jump/various attacks etc).
The clientside skeletal physics engine then takes this frame, or state as it will now be known, along with the position, player rotation and interacts with the environment to decide where to move each individual bone.
stand = state 1.
crouch = state 2.
run = state 4.
walk = state 8.
jump = state 16.
kick1 = state 32.
kick2 = state 64.
punch = state 128.
shoot = state 256.
freefall = state 512
so if, for example a player is running and shooting, the server will send one piece of state info, state 260 (256+4).