Realm set realmlist logon.at-wow.org
AT-Inspiration:Online

Article about movement

2019-20-02 @ 11:29 by kvipka
I think it's time to talk a little about the features of the movement systems. Motion generators, what it is, how, why, and so on.
All movement : position in XYZ and etc for spells destinations, path of NPC for movement and etc - All this information is calculated by the server, based on the texture state data.

Technical aspect:
  • Server have a 3D map of texture (without polygons and graphics, like player in client-game), named as vmaps. Official TrinityCore wiki-website give a really little comment about this system: 
VMaps: VMaps are optional, but highly recommended. VMaps ("Virtual Maps") calculate the possibility of line-of-sight, as an example. Based on their content, the server can (for example) calculate if spell casts are possible (e.g. if a wall is in between the target and caster or not).
  • In addition, the server has a so-called "grid". In which a network is built of sections on which the server can build a path for movement, and which need to be "run around". It's "Navmesh", or Mmaps. From official TrinityCore wiki-website
MMaps: MMaps are optional, but recommended. To further physical boundaries, MMaps ("Movement Maps") enforce physical boundaries on non-player characters, e.g. NPCs, as their collision is not handled by the client. They also improve path generation.

As you see, FAQ of TrinityCore give not correct information, just this 3D map of texture network and grids give to server information in coords XYZ, where will next texture and where need to calculate a corrections for path.

And now, we have a knowledge of coords and should to calculate collision vectors for check, can we blink in new XYZ, or should we “face” some kind of texture before. And can pathgenerator to calculate path for NPC, or our Charge, or it's impossible here.

Wow mechanics have a some behaviour : Fleeing - for example Fear, Confuse - for example Blind, Scatter Shot and etc, Chasing - for NPC, when they have aggro and attacking targets, Random - when NPC haven't aggro, but they imitate life, their affairs, and Point movement - when unit just moveing at some XYZ position.

For right handle this behaviour server using next movement generators :
  • ConfusedMovementGenerator
  • FleeingMovementGenerator
  • FlightPathMovementGenerator
  • FollowMovementGenerator
  • FormationMovementGenerator
  • GenericMovementGenerator
  • HomeMovementGenerator
  • IdleMovementGenerator
  • PointMovementGenerator
  • RandomMovementGenerator
  • SplineChainMovementGenerator
  • WaypointMovementGenerator
But we have founded, that it's not full for correct game, and we have wrote the next.
We have implemented own next 2 movement generators :
  • Jump Movement Generator - related with movement for jump spells - Death Grip, some Leap, Feral Charge-Cat and etc, and all knockback effects for npc, for example Thunderstorm.
  • Charge Movement Generator - i think all understand, what it's mean. We can provide improved path handle, Charge on Transport, improved Charge on Arenas and etc.
For example Charge on this Blade Edge Arena:

video link