I think you're really overstating the difficulties here.
Characters can be handled through collision objects, a ground point, and a few points we move / rotate in code. That's all that needs to be synced, and I don't think that's a major problem. A guy with a gun needs just one point defined for a basic simulation, and it probably doesn't need to move at all, because the "shooting" animation will always go to the same relative XYZ.
Stuff like tanks will remain driven through BOS, because that really is the best way to handle things like turrets.
In short, I think it can be done without being super-awful.
Can it be done with Lua/BOS, even? Yeah. We could have a Lua/BOS animated Unit that consisted of empty points, a standard Unit, and the rest of it would be callouts to a skeletal animation system- something like:
Code: Select all
isWalking()
{
(while !isShooting)
{
lua_CallAnimation(characterType,walk_animation,priority);
} else {
lua_CallAnimation(characterType,walkshoot_animation,priority);
}
}
And that whole animation would be unsynced. Timing would be up to the BOS/Lua script. If you want your gun to fire when the animation does, you'd adjust sleeps to create the illusion of synchronicity.
IOW, the idea that the animations would have to be synced or that they'd have to be a massively new system is largely a chimera, imo.
The only thing that would be a big pain in the ass is if people wanted stuff to be simulation-accurate but use skeletal animation. Then you'd need to do full IK and that would be expensive and a pain in the ass.
Even FPS games rarely do it for more than one bone (usually the bone upwards of the pelvis, to allow torso twists that match sim), and in most cases, we'd want to do zero, because a little bit of mismatch between character animations and gunfire start points is not a big deal- you just don't see that stuff all that much, when things are happening, and most of the character types this kind of animation is good for turn swiftly enough it wouldn't happen that much anyhow. That,
and we already have those issues with the current system, because guns need a certain amount of tolerance or they never line up to the required amount of decimal places.
Canned stuff called from gamecode, though? Not really. We just need a system to render the skeletal stuff and a way to call it that makes sense, and we're in business.