Skill/Animation Loading Across Units(XML)

Started by
1 comment, last by AoS 10 years, 11 months ago

I was wondering if anyone had any advice about how to load skills/animations that are used by multiple units using XML.

I have a couple mechanics that really need me to be able to load a skill not defined in the XML of the unit. Basically some things like traits and schools of magic and other things that define special skills and can be gained by more than one unit.

Generally each skill has its own animation or set of animations. And obviously you can only use the animation of the given unit. Basically I was thinking I could set the animation path as:

<animation path="models/first_spell_attack.g3d"/>

Each unit already comes with a basic attack animation if its intended to be a combat. So if I name the basic one that then I can have any reasonable unit inherit the skill without an issue.

So the animation would be a generic spell casting type animation, handwaiving type stuff, and the differentiation would be the particle system that represents the effect. Particles are not restricted to the individual model like attack animations obviously so that wouldn't be a problem. Multiple skills could use the same cast animation and maybe units that could get stronger spells have a second animation but whatever the animation is its just called:

<animation path="models/second_spell_attack.g3d"/>

I would probably have more of an issue with melee or crafting type skills though, a spin attack really needs to be separate from an over the head blow.

My other thought is that I could just add an animation to a model folder for the trait and each unit would be passed the appropriate one to use. This would make it easier to add new skills that need individual animations. Some skills could use a less ostentatious particle system compared to magical spells to indicate different skills. Like instead of a whole new animation for a power strike you could just add some light particles or something and this would save memory and labor making custom animations, but some skills would still need a totally new thing.

Aside from these options, does anyone have a better method for this problem?

Advertisement

I'm kind of confused - you seem to be asking both about loading data from XML as well as how to implement a generalized casting system.

Anyway, as for the implementation details, if I remember correctly. warcraft 3 used to have standardised names for different things. Spell animations were given names such as Spell1, Spell2, etc. Attack animations had names such as Attack1, AttackCrit and AttackSpin. The game engine would pick an animation out of a "list" of animations that you allowed. So for example, an attack might have two animations enabled by it - Attack1 and Attack2. Whereas a specialized spell might only have one animation attached, such as SpellSummon. you only needed to supply the animation names. The animations were build into the models (the animations could be baked into the models using 3dSMax. I'm not sure about how it was done, as I've never ventured into the modelling side of things, but I'm pretty sure there was a plugin provided by blizzard for animation.)

As for particle effects and particle systems, the were known as "buffs". Buffs had no gameplay impact at all. They were used to attached particles and trails to "attachment points" on the model. these attachment points were also baked into the model. common attachment points included (hand,left), (hand,right), and chest. There were also other, more specialzed attachment points that only worked on a few models such as (mount). Anyway, these buffs could have a duration associated with them, and the particles expired after the duration.

When the particles were created, they played their "created" animation. and then they looped an intermediate animation. on being destroyed, they played their "destroyed" animation. Like I said, particles were controlled indirectly through buffs.

As for storage, blizzard has it's own format (.MPQ I think), with it's custom method for storing objects. I don't remember the details, but the wikipedia page has some decent information.

Hope this helps :)

Well it helps that Blizzard went with the same method I was going to use if no on responded to the thread.

This topic is closed to new replies.

Advertisement