• You've discovered RedGuides 📕 an EverQuest multi-boxing community 🛡️🧙🗡️. We want you to play several EQ characters at once, come join us and say hello! 👋
  • IS THIS SITE UGLY? Change the look. To dismiss this notice, click the X --->

Request - MQ2Nav Beta by Brainiac and Donation Kick Starter. (2 Viewers)

Status
Not open for further replies.
Anyway I submitted a pull request on github for the rotation fix ('after' screenshot added to my last post).

I see a number of objects are missing from the zone (tall trees). Some other RCA for those I expect.

- - - Updated - - -

Figured out why so many trees weren't getting rendered... Updated results:
Improvements2.png

And close up of a previously problematic area:
Improvements3.png

I think there may end up being a problem because this is now drawing objects with no collision as well (ex: bushes/shrubs). I'm not familiar enough with the project to know if that would be an issue. It'd be kind of weird for a character to path around a shrub I guess.

I think tents are still missing also as far as I can tell.

EDIT: TL;DR of fixes:
rotation fix there was a missing degrees to radians conversion (n * PI / 180) for some rotation transforms; I didn't notice it until I had reimplemented it using quaternions for rotation & was getting the same results that way.

Code before ex:
Rich (BB code):
RotateVertex(v, obj->GetRotateX(), 0, 0);
RotateVertex(v, 0, -obj->GetRotateY(), 0);
RotateVertex(v, 0, 0, obj->GetRotateZ());

Code after ex:
Rich (BB code):
RotateVertex(v, obj->GetRotateX() * M_PI / 180, 0, 0);
RotateVertex(v, 0, -obj->GetRotateY() * M_PI / 180, 0);
RotateVertex(v, 0, 0, obj->GetRotateZ() * M_PI / 180);

Trees not getting drawn - they were being culled by this code:

Rich (BB code):
if (!poly.vis)
	continue;

I don't know how/why 'vis' is set (didn't dig deep enough)... but that's what was culling the trees that were missing previously.

- - - Updated - - -

Thinking out loud... it'd take some effort but you could probably maintain a list of model names that have no collision in game & cull just those.

More complex for trees since the base tree polys have collision but the surfaces used to render the leaves don't.

To do it really well you'd need to cull certain models whole hog & then cull some polys within other models somehow. Sounds like a giant PITA to create the codification of it unless there is a way to programatically tell what objects/polys have collision in game & which don't... again, I wonder if MQ2/EQEmu zone-utilities can determine that somehow... it has to be in the game memory somewhere b/c client-side is where collision detection happens.

- - - Updated - - -

Figured out how to remove non-collision faces from models & remove non-collision models all together.
I can confirm that the approach I took would be a huge & tedious PITA.

Basically I was able to:
  1. Export model data & create an .obj file from it.
  2. Import the .obj into blender.
  3. Manually remove all the faces & vertices that I knew didn't have collision.
  4. Export the modified model as another .obj file.

From there it would be "easy" (although a little tedious I expect) to check for an obj file & deserialize the model data from there first before loading the model from EQEmu data.

Another thought is using the trimmed model to build a super low res collision mesh & use that instead for the purposes of MQ2Nav.

Again, all of that would be excessively tedious unless someone thought of a way to automatically cull the non-collision faces. Somehow somewhere EQ knows what is collision bearing; I just have no idea how to find/extract that programatically.

I'd be happy to provide more detail if anyone is curious/interested.
 
Dude, nice work. I have no idea what you're talking about, but it sounds impressive.
 
Thanks a ton. I'll try to get this in tomorrow.

The polys should have a flag that indicates they represent non-collidable geometry. I'll take a look after I have it merge and check that stuff for correctness.
 
Thanks a ton. I'll try to get this in tomorrow.

The polys should have a flag that indicates they represent non-collidable geometry. I'll take a look after I have it merge and check that stuff for correctness.

No problem. I only submitted a PR for the rot fix on your original code (i.e. - I didn't submit my full reimplementation - wasn't necessary); not the culling change. Culling change is literally removing those two lines. I figured I shouldn't PR the culling change w/o resolving the non-collidable geometry bit.

Also FWIW I noticed when I build a mesh with everything rendered it was putting squares of nav mesh on top of leaf polys. So that's probably not ideal.
 
Using latest MQ2Nav and have a few toons that keep crashing when they release their corpse / zone.

View attachment 10401
View attachment 10400

"The thread tried to read from or write to a virtual address for which it does not have the appropriate access...

Would be nice if it said which plugin / macro blew up... or if I knew how to read these dumps lmao


Hey tone, I took a look at your crash dumps, and both of them were from mq2spawnmaster. I don't have the source or debug symbols for that plugin so I can't really advise further.
 
So I'm basically just horsing around for kicks at this point because digging into this was fun for the moment.

In case you're interested I pushed a primitive implementation of the model to obj serialization code to a branch on my fork of your repo.

Fair warning that C++ hasn't been my primary language for at least 5 years. I might screw around with the branch a bit more to extend & clean from where it's at now. I doubt I'll submit a pull request unless you want me to for some reason. This is probably a superfluous feature that most people would never even want to use.
 
we will look into this mq2spawn crash hopefully early next week. eqmule is currently tied up with an important MQ2 core update.
 
There's a bug with MeshGenerator where zones with the same name won't open.

Example: filter zones by Decay
codecay and codecayb show up
only codecay will open, nothing happens when trying to open up codecayb. searching for the actualy zonename 'codecayb' allows it to open up though.
 
Just a general question. If I want a full mapping and I mean the whole thing and I don't care what the mesh file size is what is the ideal settings?
 
Just a general question. If I want a full mapping and I mean the whole thing and I don't care what the mesh file size is what is the ideal settings?

every zone has different settings. i move the tile size down as far as it can go before it goes red and i haven't had any issues with that.
 
Demiplane of life there is no door in the mayors office but it shows there is one in meshgenerator so mq2nav wont go through it no matter what you do.

door.png


The archways seem to be fixed though it now goes through them.
 
Cannot seem to get the plugin to show up in /plugin list. I have the DLL. I am on winblows 10, all good on updates and blah blah. I have it checked in the updater. /plugin mq2nav says could not load plugin. Any suggestions?
 
Cannot seem to get the plugin to show up in /plugin list. I have the DLL. I am on winblows 10, all good on updates and blah blah. I have it checked in the updater. /plugin mq2nav says could not load plugin. Any suggestions?

check that you have latest direct 3d 9 installed. I'm not sure if windows 10 comes with it installed anymore. It might not be that though.

- - - Updated - - -

Not in game but I think I marked it down as

mayor=-63.55 322.727 -4.20844

sorry, been busy with work again. I will try to take a look at this door this week.
 
MQ2Nav is having issues with the latest compile, please show brainiac some love so we can get it going again.

For those curious, we are now purely using brainiac's git repository for our compiles, his code is untouched in our version.

https://github.com/brainiac/MQ2Nav
 
Last edited:
Not sure if it is already possible or not, but it would be cool to be able to trace your own walls. I saw you have some volumes but my nav still tries to run through the objects I create. So maybe the object is not collision flagged? Anyways I would like to trace walls around objects and along walls that the mesh generator is not picking up.

I know that you can deselect whole tiles but sometimes that is too much, maybe be able to deselect cells?
 
You can place the volumes into the navmesh but you need to regenerate the tiles after you do that. In other words, the volumes are like cookie cutter cut outs that will remove walkable area.

convex volume tool to draw shapes, and then tile tool to regenerate tile. (I think). I don't have it in front of me right now so naming of things might be off, but thats the gist.
 
You can place the volumes into the navmesh but you need to regenerate the tiles after you do that. In other words, the volumes are like cookie cutter cut outs that will remove walkable area.

convex volume tool to draw shapes, and then tile tool to regenerate tile. (I think). I don't have it in front of me right now so naming of things might be off, but thats the gist.

I wanted to use this to kill some namers in Katta a while back. This exact thing would have been invaluable as I looked for ways to ensure my puller wasn't dropping into the water around my camp.
 
You can place the volumes into the navmesh but you need to regenerate the tiles after you do that. In other words, the volumes are like cookie cutter cut outs that will remove walkable area.

convex volume tool to draw shapes, and then tile tool to regenerate tile. (I think). I don't have it in front of me right now so naming of things might be off, but thats the gist.

Like I mentioned above I tried this and the nav path would go directly through the area. Yes I did regenerate the tiles after I messed with volume shapes. It was around the brazers around the center of tosk ground floor.

I messed around with volumes for a while, even making the much bigger than the brazers themselves. The Yellow path would still go directly through them. Being a dwarf somehow the char would get stuck under them and I would have to kill him, or coh him.

I have moved past Tosk. The next troublesome area is erudin burning, lots of half broken walls (still unclimbable) and other rubble to get stuck on. I have figured out how to adjust settings to wall around a lot of this better, but would still be cool to manually wall stuff out.
 
Like I mentioned above I tried this and the nav path would go directly through the area. Yes I did regenerate the tiles after I messed with volume shapes. It was around the brazers around the center of tosk ground floor.

I messed around with volumes for a while, even making the much bigger than the brazers themselves. The Yellow path would still go directly through them. Being a dwarf somehow the char would get stuck under them and I would have to kill him, or coh him.

I have moved past Tosk. The next troublesome area is erudin burning, lots of half broken walls (still unclimbable) and other rubble to get stuck on. I have figured out how to adjust settings to wall around a lot of this better, but would still be cool to manually wall stuff out.

There are only a few zones I'd imagine to be worse to bot in than erudin's burning. Why are you doing that to yourself when there's like 20 expansions worth of content you could do instead?
 
I got suspended in grounds. Sadly I think the person petitioning me was afk with a group of 3 merc and 3 casters, and because I got to his spot after a server crash before he did. I was not AFK for more than a few mins at a time, received no tells or OOC, just strait up nothing to ban. So I'm done with Grounds, or other populated zones, even if by afk'ers. Lvl 92-93 pally tank. Can you think of better zones than T1-T2 HoT? I tried T4 (the beach) and proved to tough for the group. So not much variance.

Nobody goes to EB and Library and they are around the ideal con for my group.

I was going to try tougher SoD maybe.
 
Can you maybe take a screenshot of the problem area with the navmesh turned on or in the navmesh editor? It shouldn't generate paths through non-pathable geometry so either its not properly flagged as non pathable or something else is up. The visuals provided by the tools should help me.
 
Here is some library:

Debug while he is on the wall (outside the mesh). This is in HoT Library.

[2016/11/15 00:41:21] [MQ2] Looking for Close Range Mobs
[2016/11/15 00:41:22] [MQ2] PULLING-> a wayward visitor <- ID:8503 at 18 feet.
[2016/11/15 00:41:40] [MQ2] DEBUGAll
[2016/11/15 00:41:42] [MQ2] DEBUG ALL On
[2016/11/15 00:41:43] [MQ2] DEBUGPULL Pull Loop Count: 4 Line#: 5431
[2016/11/15 00:41:48] [MQ2] DEBUGPULL Pull Loop Count: 5 Line#: 5431
[2016/11/15 00:41:49] MQ2Log :: Logging is ON
[2016/11/15 00:41:53] [MQ2] DEBUGPULL Pull Loop Count: 6 Line#: 5431
[2016/11/15 00:41:57] [MQ2] DEBUGPULL Pull PullDist: 96.00*.6 - PullLoops: 7 Line#: 5410
[2016/11/15 00:41:57] [MQ2] Pulling 1.2 PullTimer: 45 Distance: 40.31 MaxRadius: 225.00 PullAttempts: 7 MyTargetID: 8503 Line#: 5295
[2016/11/15 00:41:57] [MQ2] DEBUGPULL Pull: /echo Adding a wayward visitor ID: 8503 to temp ignore list Line#: 5298
[2016/11/15 00:41:57] [MQ2] DEBUGPULL PullReset Enter Line#: 5708
[2016/11/15 00:41:57] [MQ2Nav] Stopping navigation
[2016/11/15 00:41:57] [MQ2] DEBUGPULL PullReset Leave Line#: 5721
[2016/11/15 00:41:57] [MQ2] DEBUGPULL Pull: Done Pulling-Timer expired, Mob unreachable or exceeded max pull radius. Line#: 5300
[2016/11/15 00:41:57] [MQ2] DEBUGPULL Pull Done Pulling Line#: 5622
[2016/11/15 00:41:57] [MQ2] DEBUGPULL Pull Leave Mob ID:NULL Line#: 5627
[2016/11/15 00:41:57] [MQ2] DEBUG CheckForCombat Enter SkipCombat: 0 ChainPull: 0 Role: PullerTank MainLoop Line#: 984
[2016/11/15 00:41:57] [MQ2] DEBUG MobRadar 75 Enter (CheckForCombat) Line#: 3876
[2016/11/15 00:41:57] [MQ2] DEBUG AddToArray 6571 Enter Line#: 3933
[2016/11/15 00:41:57] [MQ2] ARRAY Assign >> an obsessed scholar << to AddsArray1. Line#: 3940
[2016/11/15 00:41:57] [MQ2] DEBUG MobRadar Leave 1 Line#: 3892
[2016/11/15 00:41:58] [MQ2] DEBUG CheckForCombat: Assist/Combat Begin Normal Line#: 991
[2016/11/15 00:41:58] [MQ2] DEBUGCOMBAT Assist Enter Line#: 1018
[2016/11/15 00:41:58] [MQ2] DEBUG MobRadar 75 Enter (Assist) Line#: 3876
[2016/11/15 00:41:58] [MQ2] DEBUG MobRadar Leave 1 Line#: 3892
[2016/11/15 00:41:58] [MQ2] DEBUGCOMBAT Assist0: MePally MePally 0.00 1 0 NULL 0 TRUE FALSE 0 WAITING Line#: 1029
[2016/11/15 00:41:58] [MQ2] DEBUGCOMBAT Assist2: MainAssist.Equal[MePally] is TRUE OR my role is PullerTank MobCount = 1 Line#: 1057
[2016/11/15 00:41:58] [MQ2] DEBUGCOMBAT Assist3: 0 1 0 Line#: 1101
[2016/11/15 00:41:58] [MQ2] DEBUGCOMBAT Assist: validatetarget ID:NULL Line#: 1123
[2016/11/15 00:41:58] [MQ2] DEBUGCOMBAT Assist: Validate Target - No target return Line#: 1125
[2016/11/15 00:41:58] [MQ2] DEBUG CheckForCombat: Assist/Combat End Normal Line#: 994
[2016/11/15 00:41:58] [MQ2] DEBUG CheckForAdds: Enter from CheckForCombat Line#: 1768
[2016/11/15 00:41:58] [MQ2] DEBUG MobRadar 75 Enter (CheckForAdds) Line#: 3876
[2016/11/15 00:41:58] [MQ2] DEBUG MobRadar Leave 1 Line#: 3892
[2016/11/15 00:41:58] [MQ2] DEBUG MobCount:1 Line#: 1770
[2016/11/15 00:41:58] [MQ2] DEBUG CheckForCombat MobCount: 1 AggroTargetID: 0 ChainPull: 0 Line#: 1004
[2016/11/15 00:41:58] [MQ2] DEBUG CheckForCombat Exit. Line#: 1011
[2016/11/15 00:41:58] [MQ2] DEBUG CheckForCombat Enter SkipCombat: 1 ChainPull: 0 Role: PullerTank MainLoop Line#: 984
[2016/11/15 00:41:58] [MQ2] DEBUG CheckForAdds: Enter from CheckForCombat Line#: 1768
[2016/11/15 00:41:58] [MQ2] DEBUG MobRadar 75 Enter (CheckForAdds) Line#: 3876
[2016/11/15 00:41:58] [MQ2] DEBUG MobRadar Leave 1 Line#: 3892
[2016/11/15 00:41:58] [MQ2] DEBUG MobCount:1 Line#: 1770
[2016/11/15 00:41:58] [MQ2] DEBUG CheckForCombat MobCount: 1 AggroTargetID: 0 ChainPull: 0 Line#: 1004
[2016/11/15 00:41:58] [MQ2] DEBUG CheckForCombat Exit. Line#: 1011
[2016/11/15 00:41:58] [MQ2] DEBUGHEALS CheckHealth Enter Line#: 3491
[2016/11/15 00:41:58] [MQ2] DEBUGHEALS CheckHealth: -- Most Hurt:0 0 0 100 Line#: 3529
[2016/11/15 00:41:58] [MQ2] DEBUGHEALS CheckHealth: -- Most Hurt:1 0 0 100 Line#: 3529
[2016/11/15 00:41:58] [MQ2] DEBUGHEALS CheckHealth: -- Most Hurt:2 0 0 100 Line#: 3529
[2016/11/15 00:41:58] [MQ2] DEBUGHEALS CheckHealth: -- Most Hurt:3 0 0 100 Line#: 3529
[2016/11/15 00:41:58] [MQ2] DEBUGHEALS CheckHealth: -- Most Hurt:4 0 0 100 Line#: 3529
[2016/11/15 00:41:58] [MQ2] DEBUGHEALS CheckHealth: -- Most Hurt:5 0 0 100 Line#: 3529
[2016/11/15 00:41:58] [MQ2] DEBUGHEALS CheckHealth: (100 < 100) /call SingleHeal "" "" 100 0 Line#: 3547
[2016/11/15 00:41:58] [MQ2] DEBUGHEALS GroupHealthCheck Enter Line#: 3701
[2016/11/15 00:41:58] [MQ2] DEBUGHEALS GroupHealthCheck Group Health: GM:0 Health:100 Line#: 3710
[2016/11/15 00:41:58] [MQ2] DEBUGHEALS GroupHealthCheck Group Health: GM:1 Health:100 Line#: 3710
[2016/11/15 00:41:58] [MQ2] DEBUGHEALS GroupHealthCheck Group Health: GM:2 Health:100 Line#: 3710
[2016/11/15 00:41:58] [MQ2] DEBUGHEALS GroupHealthCheck Group Health: GM:3 Health:100 Line#: 3710
[2016/11/15 00:41:58] [MQ2] DEBUGHEALS GroupHealthCheck Group Health: GM:4 Health:100 Line#: 3710
[2016/11/15 00:41:58] [MQ2] DEBUGHEALS GroupHealthCheck Group Health: GM:5 Health:100 Line#: 3710
[2016/11/15 00:41:58] [MQ2] DEBUGHEALS GroupHealthCheck Leave 100.02 Line#: 3724
[2016/11/15 00:41:58] [MQ2] DEBUGHEALS CheckHealth: Group Health Average 100.02 Line#: 3555
[2016/11/15 00:41:58] [MQ2] DEBUGHEALS RezCheck Enter Line#: 3785
[2016/11/15 00:41:58] [MQ2] DEBUGHEALS RezCheck 0==0 && NULL<150 NULL || !TRUE Line#: 3805
[2016/11/15 00:41:58] [MQ2] DEBUGHEALS RezCheck 0==0 && NULL<150 NULL || !TRUE Line#: 3805
[2016/11/15 00:41:58] [MQ2] DEBUGHEALS RezCheck 0==0 && NULL<150 NULL || !TRUE Line#: 3805
[2016/11/15 00:41:58] [MQ2] DEBUGHEALS RezCheck 0==0 && NULL<150 NULL || !TRUE Line#: 3805
[2016/11/15 00:41:58] [MQ2] DEBUGHEALS RezCheck 0==0 && NULL<150 NULL || !TRUE Line#: 3805
[2016/11/15 00:41:58] [MQ2] DEBUGHEALS RezCheck Leave Line#: 3849
[2016/11/15 00:41:58] [MQ2] DEBUGHEALS CheckHealth leave Line#: 3575
[2016/11/15 00:41:58] [MQ2] DEBUG EndMacroIf: Enter Line#: 3385
[2016/11/15 00:41:58] [MQ2] DEBUG EndMacroIf: Leave Line#: 3400
[2016/11/15 00:41:58] [MQ2] DEBUG DoWeMove: Enter Line#: 2059
[2016/11/15 00:41:58] [MQ2] DEBUG DoWeMove:(ReturnToCamp) My distance from camp is: (40.31). Line#: 2062
[2016/11/15 00:41:58] [MQ2] DEBUG DoWeMove:(ReturnToCamp) Distance to camp > 10 and no adds in camp. 40.31 15 0 Line#: 2070
[2016/11/15 00:41:58] [MQ2] DEBUG DoWeMove:(ReturnToCamp) Distance to camp > 15, MQ2Navigation return to camp. Line#: 2075
[2016/11/15 00:42:17] The current macro has ended.
[2016/11/15 00:42:17] [MQ2Nav] Stopping navigation

Ok I am bad at managing screenshots so here is a badly ordered explanation. First is a path through a volume (he starts out in the center of tosk (see 3rd pic). Second is HoT library with increased radius, still gets stuck on walls (off mesh). 3rd is my edited mesh of tosk with volumes. 4th is Library stuck on wall, with smaller radius. 5th is the same as 4th but with larger radius. The last two are some of the library area I was trying to pull.

I have gotten erad burning to mostly work as it is slightly more open. But he will still try to venture off the mesh, just not get stuck there. He also tries to pull non visible mobs from outside the mesh area (unsuccessfully) in erad burning, but I figure that is more Kissassist than mq2nav. I just added those mobs to the "do not pull" list until he quit doing that.
 

Attachments

  • EQ000049.jpg
    EQ000049.jpg
    301.8 KB · Views: 4
  • Library_mesh1.jpg
    Library_mesh1.jpg
    399.6 KB · Views: 5
  • Library_mesh_camp.png
    Library_mesh_camp.png
    839.8 KB · Views: 5
  • EQ000053.jpg
    EQ000053.jpg
    360.4 KB · Views: 5
  • ir_stuck.jpg
    ir_stuck.jpg
    254.7 KB · Views: 3
  • Tosk_with_volumes.jpg
    Tosk_with_volumes.jpg
    526.8 KB · Views: 3
  • EQ000056.jpg
    EQ000056.jpg
    317.8 KB · Views: 4
I can't seem to get MeshGenerator to load Empire of Kunark zones. Probably doing something wrong on my end, it lists all the expansions except EoK and none of the zones for EoK are available when I do a search.
 
You are not doing anything wrong. We need to update the mesh generator for EoK. Look for it in the next release. Sorry about the dleay
 
Brainiac here are the updated zones for EoK
Rich (BB code):
[Empires of Kunark]
Chardok=chardoktwo
Frontier Mountains=frontiermtnsb
Gates of Kor-Sha=korshaext
Kor-Sha Laboratory=korshaint
Lceanium=lceanium
Scorched Woods=scorchedwoods
Temple of Droga=drogab
 
Last edited:
Request - MQ2Nav Beta by Brainiac and Donation Kick Starter.
Status
Not open for further replies.

Users who are viewing this thread

Back
Top