Jump to content

MMaps Redux


Guest auntieMangos

Recommended Posts

  • Replies 1.2k
  • Created
  • Last Reply

Top Posters In This Topic

I'll test it on one as soon as possible (but hard week at work so not before week end I'm afraid :( )

edit: tested both patches right now, patch 2 give strange movements, but patch 1 works like a charm ! Really great job, thank you very much, I'll try to install that on a realm with player to test it in deep, but once again, great job with this project !

Link to comment
Share on other sites

http://pastebin.com/w4gtA7YD

Appears only once in 1 week.

Mtmaps.UpdateThreads = 4

Pretty strange dump.

Some things just don't make sense, like "mapId = 3901870289" which suggest invalid source object, but the strange thing is that it still tries to build the path while it should have failed right there.

Can't say much without more crash dumps.

Feel free posting those if them repeat.

What about system statistics w/out mmaps? Thanks in advance.

sorry for double post...

I don't think adding vmap checks will solve the falling-underground problem, because vmaps don't perform tests on terrain terrain. I can see the corner cases where the random destination is on the other side of a wall, so our path takes us through 10 rooms. This is a problem with the naive random destination selection - it only cares about euclidean distance, not walking distance.

There are some detour-provided things we can leverage to solve this problem. dtNavMeshQuery::findLocalNeighbourhood will give us reachable polygons within a certain range, which can confine our 'random' destination to an area that is reasonably within the walking distance we specify.

From my experience, people fell underground mostly in places like arena's ramparts/pillars - LoS covers those. For general terrain (which is not covered by vmaps) the Z value is checked from maps, so this falling doesn't occur there (mostly).

Sure, we can use navmesh to implement those, won't be too pretty. We'll have to teach PathInfo couple new tricks, or make different class.

Which reminds me, it can be good idea to encapsulate all direct recast calls, so we wont be tied to it directly in code.

The only place we use it directly, is in debug commands, if I remember right.

Link to comment
Share on other sites

Tested with 3000+ players online in *nix and mtmaps environment

Uptime: 18 hours

Mtmaps.UpdateThreads = 3

RAM used after 17 hours = 12,7 GB de RAM

Crashes or issues reported: None for now

CPU: Intel Bi Xeon X5650 2 x 6 x 2 x 2.66+GHz

RAM: 48 GB DDR3 ECC

Still testing... stay tuned!

I test hunter on Undergarun's server and found some issue/bug:

1. Pet always stand on the terrene or ground under water when following hunter who is floating in the water. So it's easy to aggo the mobs under water. At this time, pet can not attack the target floating in the water near my hunter. So if hunter attack the mobs floating in water near by, pet just stand below and can not find the way to my target and watching me to die. I think it's bug according to my retail experience.

2. Sometimes( about 30 percent especially on the hill ground ) pet can get to run very slowly when close to my target, the more it get close to the mob, the more its speed get slow. Sometimes no such speed issure especially on the plane ground.

3. Pet and mob choose different moving path and form a circle path which means pet can not catch up the mobs when hunter attack mob firstly. Pet should intercept the mob on the way mob coming. This issue can happen when the mob stand behind obstacle like fence, carriage etc.

4. The hunter skill " Eyes of the beast " can only use in close range( about 45 yard) and cancel automaticly when controled pet go out of this range. I don't know if relate to the Movemap system( Pets disappearing range/zone). While I have 1 mins to go more far distance on my retail to aggo mobs in the mountain.

5. When hunter jump down from the cliff, the pet just stand there above me becouse of no path found and can not follow me. So I can only use " Eyes of the beast " to make pet jump or reload my char. I think whether we can set pet to follow hunter without MMap when no path found to become more smart as retail.

6. Sometimes pet suddenly disappear when following hunter and need to sommon out. Especially in some complicated area like in a construction/building/tower with many stairs and passages in Stormwind City, the pet become very easy to get lost when following hunter and disappear suddenly and never come out again no matter how many times I pressed the follow button. Even my hunter move a few steps on the stair, I still can not see my pet follow me. When I come back to the position where pet disappear, some time it will come out nearby. I feel pet is not smart enough to find the right path or shortcut or even can not find path to hunter in this complicated area.

7. Other issue not relate to mmap system: pet always follow hunter's step so always keep about 8 yard distance behind the hunter in moving straightly. While on retail pet have speed up function (or advance movement algorithm) to keep position with hunter. So you can see that when hunter suddenly stopped, pet will go forward few steps and turn back to hunter's position. At present without this algorithm, the distance will become larger and lager when hunter running in complicated area where pet need more time to pass by. This is another reason why pet disappear after too long distance behind hunter.

I hope these tests can be usefull for the development of this awesome work!

Best regards,

AMING51

Link to comment
Share on other sites

1. Pet always stand on the terrene or ground under water when following hunter who is floating in the water. So it's easy to aggo the mobs under water.  At this time, pet can not attack the target floating in the water near my hunter. So if hunter attack the mobs floating in water near by, pet just stand below and can not find the way to my target and watching me to die.  I think it's bug according to my retail experience. 

Tried setting InhabitType to ground and water?

Link to comment
Share on other sites

What about system statistics w/out mmaps? Thanks in advance.

I'll post it as soon as possible, currently i'm very busy at work.

No rush, as long as it isn't forgotten completely :)

Qsa or faramir118,

Can you please add the MaNGOS copyright in the python file I gave you to generate mmaps (contrib/mmap/mmap_extract.py)? I did forgot to add it.

Thanks,

Neo2003

Added.

Personally, I find this kind of copyrighting silly, but, its a strange world we live in :)

1. Pet always stand on the terrene or ground under water when following hunter who is floating in the water. So it's easy to aggo the mobs under water.  At this time, pet can not attack the target floating in the water near my hunter. So if hunter attack the mobs floating in water near by, pet just stand below and can not find the way to my target and watching me to die.  I think it's bug according to my retail experience. 

Tried setting InhabitType to ground and water?

That's the reason.

Furthermore, I removed to hack that allowed pets who "cannot swim" to enter the water in the first place.

This have to be solved somewhere else in the core. Maybe some special case for pets in canSwim function, or overload in pet class.

I can't recall if on retail, all pets can swim in the first place.

2. Sometimes( about 30 percent especially on the hill ground ) pet can get to run very slowly when close to my target, the more it get close to the mob, the more its speed get slow. Sometimes no such speed issure especially on the plane ground.

Added faramir's old patch into repo, it should solve this issue.

3. Pet and mob choose different moving path and form a circle path which means pet can not catch up the mobs when hunter attack mob firstly. Pet should intercept the mob on the way mob coming. This issue can happen when the mob stand behind obstacle like fence, carriage etc.

Not sure if we can, or should do something in this case.

This sort of things can happen regardless of path generation logic used.

4. The hunter skill " Eyes of the beast " can only use in close range( about 45 yard) and cancel automaticly when controled pet go out of this range. I don't know if relate to the Movemap system( Pets disappearing range/zone). While I have 1 mins to go more far distance on my retail to aggo mobs in the mountain.

Pretty sure that it isn't move map related.

The only range limitation we currently have, is around 300yards paths at any given time - this clearly is not this issue.

5. When hunter jump down from the cliff, the pet just stand there above me becouse of no path found and can not follow me. So I can only use " Eyes of the beast " to make pet jump or reload my char. I think whether we can set pet to follow hunter without MMap when no path found to become more smart as retail.

Added patch to allow pets follow their owners even if there's no real path.

If by "smart" you mean jumping off the cliffs like on retail, than it is "smarter" now.

6. Sometimes pet suddenly disappear when following hunter and need to sommon out. Especially in some complicated area like in a construction/building/tower with many stairs and passages in Stormwind City, the pet become very easy to get lost when following hunter and disappear suddenly and never come out again no matter how many times I pressed the follow button. Even my hunter move a few steps on the stair, I still can not see my pet follow me. When I come back to the position where pet disappear, some time it will come out nearby. I feel pet is not smart enough to find the right path or shortcut or even can not find path to hunter in this complicated area.

Same as above.

In general, if path cannot be found, creature will evade.

Every such place should be handled separately.

7. Other issue not relate to mmap system: pet always follow hunter's step so always keep about 8 yard distance behind the hunter in moving straightly. While on retail pet have speed up function (or advance movement algorithm) to keep position with hunter. So you can see that when hunter suddenly stopped, pet will go forward few steps and turn back to hunter's position. At present without this algorithm, the distance will become larger and lager when hunter running in complicated area where pet need more time to pass by. This is another reason why pet disappear after too long distance behind hunter.

Just like you said, not related to movemaps.

Updated the repository with mentioned above, feel free testing.

Cheers.

Link to comment
Share on other sites

Updated the repository with mentioned above, feel free testing.

Cheers.

I found a very strange situation in Stormwind City and Stranglethorn Vale. Pets can not follow master but just run along the riverbank or cliff and disappear after long distance when hunter pass the bridge/ hanging bridge. This can happen when the bridge/ hanging bridge is very long and narrow which means hunter can easily stand on the edge or side.

Another case is an old fallen tree as a bridge between two hills on the northest map of Stranglethorn Vale. Pets just can not follow hunter to pass the tree but run along the cliff no matter where hunter stand on( edge/middle).

Hunter will be in danger if aggo mobs/PVP on the bridge/hanging bridge without pets help.

Regards,

AMING51

Link to comment
Share on other sites

/home/MaNGOS/source/src/game/TargetedMovementGenerator.cpp: In member function 'void TargetedMovementGeneratorMedium<T, D>::_setTargetLocation(T&)':
/home/MaNGOS/source/src/game/TargetedMovementGenerator.cpp:84: error: there are no arguments to 'GetMovementGeneratorType' that depend on a template parameter, so a declaration of 'GetMovementGeneratorType' must be available
compilation terminated due to -Wfatal-errors.
make[2]: *** [src/game/CMakeFiles/game.dir/TargetedMovementGenerator.cpp.o] Bł±d 1
make[2]: *** Oczekiwanie na niezakończone zadania....

compilation error with cmake, in visual studio on win7 goes without errors

Link to comment
Share on other sites

/home/MaNGOS/source/src/game/TargetedMovementGenerator.cpp: In member function 'void TargetedMovementGeneratorMedium<T, D>::_setTargetLocation(T&)':
/home/MaNGOS/source/src/game/TargetedMovementGenerator.cpp:84: error: there are no arguments to 'GetMovementGeneratorType' that depend on a template parameter, so a declaration of 'GetMovementGeneratorType' must be available
compilation terminated due to -Wfatal-errors.
make[2]: *** [src/game/CMakeFiles/game.dir/TargetedMovementGenerator.cpp.o] Bł±d 1
make[2]: *** Oczekiwanie na niezakończone zadania....

compilation error with cmake, in visual studio on win7 goes without errors

Please try this one :

diff --git a/src/game/TargetedMovementGenerator.cpp b/src/game/TargetedMovementGenerator.cpp
index cd2d372..45d5048 100644
--- a/src/game/TargetedMovementGenerator.cpp
+++ b/src/game/TargetedMovementGenerator.cpp
@@ -81,7 +81,7 @@ void TargetedMovementGeneratorMedium<T,D>::_setTargetLocation(T &owner)
    bool forceDest = false;
    // allow pets following their master to cheat while generating paths
    if(owner.GetTypeId() == TYPEID_UNIT && ((Creature*)&owner)->IsPet()
-        && GetMovementGeneratorType() == FOLLOW_MOTION_TYPE)
+        && owner.hasUnitState(UNIT_STAT_FOLLOW))
        forceDest = true;

    bool newPathCalculated = true;

Link to comment
Share on other sites

/home/MaNGOS/source/src/game/TargetedMovementGenerator.cpp: In member function 'void TargetedMovementGeneratorMedium<T, D>::_setTargetLocation(T&)':
/home/MaNGOS/source/src/game/TargetedMovementGenerator.cpp:84: error: there are no arguments to 'GetMovementGeneratorType' that depend on a template parameter, so a declaration of 'GetMovementGeneratorType' must be available
compilation terminated due to -Wfatal-errors.
make[2]: *** [src/game/CMakeFiles/game.dir/TargetedMovementGenerator.cpp.o] Bł±d 1
make[2]: *** Oczekiwanie na niezakończone zadania....

compilation error with cmake, in visual studio on win7 goes without errors

I got this one too, because of C++ limitation. I solved it by replacing GetMovementGeneratorType() by this->GetMovementGeneratorType() (C++ need precisions here). But maybe it's not the way the author intended to do it, so maybe qsa solution is better !

Link to comment
Share on other sites

/home/MaNGOS/source/src/game/TargetedMovementGenerator.cpp: In member function 'void TargetedMovementGeneratorMedium<T, D>::_setTargetLocation(T&)':
/home/MaNGOS/source/src/game/TargetedMovementGenerator.cpp:84: error: there are no arguments to 'GetMovementGeneratorType' that depend on a template parameter, so a declaration of 'GetMovementGeneratorType' must be available
compilation terminated due to -Wfatal-errors.
make[2]: *** [src/game/CMakeFiles/game.dir/TargetedMovementGenerator.cpp.o] Bł±d 1
make[2]: *** Oczekiwanie na niezakończone zadania....

compilation error with cmake, in visual studio on win7 goes without errors

Please try this one :

diff --git a/src/game/TargetedMovementGenerator.cpp b/src/game/TargetedMovementGenerator.cpp
index cd2d372..45d5048 100644
--- a/src/game/TargetedMovementGenerator.cpp
+++ b/src/game/TargetedMovementGenerator.cpp
@@ -81,7 +81,7 @@ void TargetedMovementGeneratorMedium<T,D>::_setTargetLocation(T &owner)
    bool forceDest = false;
    // allow pets following their master to cheat while generating paths
    if(owner.GetTypeId() == TYPEID_UNIT && ((Creature*)&owner)->IsPet()
-        && GetMovementGeneratorType() == FOLLOW_MOTION_TYPE)
+        && owner.hasUnitState(UNIT_STAT_FOLLOW))
        forceDest = true;

    bool newPathCalculated = true;

Confirmed that this solves the problem.

Link to comment
Share on other sites

I got this one too, because of C++ limitation. I solved it by replacing GetMovementGeneratorType() by this->GetMovementGeneratorType() (C++ need precisions here). But maybe it's not the way the author intended to do it, so maybe qsa solution is better !

It should be exactly the same thing, I didn't use the "this->" thingy, since it should be implicit as in C++ standard, so I wasn't sure it will compile on *nix systems. Good old cpp and its corner cases.

EDIT: pushed the change into repo.

Link to comment
Share on other sites

Don't know as in MOne and LK,

But in MZero i have bug.

Mobs can't find way to player in this location:

Map(0) Eastern Kingdoms

Zone 40 - Westfall

Area 109 (Furlbrows pumpking farm)

x ( -9872) Y (1315)

0002950 mtile

Sorry, can't check on zero - but it works just fine on master using the default parameters.

Maybe someone with zero can extract that tile with debug info and upload or post a screen.

Link to comment
Share on other sites

Maybe it's vmap bug?

On zero exist bug with vmap v3

After backport v3 we have issues with wmo.

Especially considerably in instances as like Zul Gurub on Hakkari boss, and mob's near him. Falling under textures of building..

Does it possible, that mmaps include this bug on build process.

Several revision ago i modify src to use MOne vmap's but mmaps build on MZero vmaps

Link to comment
Share on other sites

Hi.

Some time ago there was charge movement generator pushed to Your repository and I used it for a while. I remember that it worked well for situations where target was in a place up high with no path to it - the charging unit was stopping below that high place.

I've just restored that patch and now it does not work this way. Now I can charge through the air to the target position.

So my question is, what parts of code have changed since that time that now I can charge through the air (up) and could not back then.

Link to comment
Share on other sites

I found another bug on Undergarun's server : if hunter stands on edge of floor/stage(e.g. the towers in north Western Plaguelands and stage of Lethtendris in Dire Maul East) which connects to ground with stairs/slope, the aggo mobs will not go up stairs/slope but go directly to the position on the ground under hunter and just watch hunter without any motion(except range spell). In this case, hunter can easily kill the boss or mobs and even hunter moved back to floor/stage center from edge, the mobs still can not go up stairs/slope but follow postion on the ground under the floor where hunter is and evade after few seconds.

Regards,

AMING51

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. Privacy Policy Terms of Use