Go Back   EQEmulator Home > EQEmulator Forums > Support > Support::Windows Servers

Support::Windows Servers Support forum for Windows EQEMu users.

Reply
 
Thread Tools Display Modes
  #1  
Old 09-18-2015, 01:41 PM
AdrianD
Discordant
 
Join Date: Dec 2013
Posts: 297
Default Grid Pathing: hopping and grid_entries

In this thread I will attempt to extract the knowledge of you, the community, on how npcs go about their business in their grids. Specifically, what causes hopping/disappearances and how to fix it. I know this isn't new.

I figure if I can get help to fix this zone then all or most of the other zones should be quite a bit easier. Hopefully, I will understand everything that goes into it much better allowing me to pay it forward.

I've searched google, this site and tested the various rule_values to get a bit of understanding before coming here. I'll try not to make general presumptions based on data specific to me; although making those presumptions begs correction from you.

I only tested in the worst zone. Lavastorm is the worst. Grid pathing seems fine any many other zones.

I've changed plenty of grids in other zones with no issues. I know how to use the two grid tables, `grid` and `grid_entries` and the grid tool within the game. I probably won't need quite the tutorial in using this tool like I did the #path tool.

Some of my notes. I use my own terminology which should be simple to follow.
Quote:
Pathing - grids
............
Testing many of the map pathing rule_values (for npcs who use grids) in lavastorm (old)

+ `rule_values` - `Map:FixPathingZWhenLoading`, and others like it
- set all but `Map:FixPathingZWhenLoading` to false and it seemed to improve quite a bit but it is still unacceptable
+ set `Map:FindBestZHeightAdjust` to 1 from 5 to 10 to 20
- no noticeable change
+ `Map:FixPathingZWhenMoving` turned on/off - this off (false) made pathing noticeably better from observations above
+ changed a few grid_entries to test a few things above
- vertices (waypoints) placed at different locations on the terrain
+ setting the other rules using datatype REAL to various values (ie. RULE_REAL(Map, FixPathingZMaxDeltaMoving, 20), etc)
- high values (~100) create a scenario where the actual Z (/loc) continues to increase along the npc grid path to a ceiling (+265 for this zone and npc tested on) - the grid_entries Z is about +25

I noticed, at least in lavastorm, the grid waypoints seem to connect by rigid poles(lines). When observing the npcs in their grid routine, their paths reflect this rigidity with little flexibility to the actual terrain. They hop. I can see the path they want to take while moving from one waypoint to the next. The distance they fall changes and can be traced from their waypoints. When the line from one waypoint to another is below the visual surface, the npcs disappear into the underworld and reappear when the line is above the surface again. I tried altering, enabling, disabling in various combinations to only gain a certain (small) amount of stability in this regard.
Source compiled from stable on 7/29/15. Titanium client.

I don't know why, exactly, one zone will be fine when another will be Lavastorm.

I would like feedback, please.
Reply With Quote
  #2  
Old 09-18-2015, 02:15 PM
Shendare
Dragon
 
Join Date: Apr 2009
Location: California
Posts: 814
Default

There are three rules that affect the frequency with which NPCs will scan for the best Z-coordinate (elevation) for their current position.

Map:FixPathingZWhenLoading set to true will determine the best Z for each spawn point, once for the zone (I think).

Map:FixPathingZAtWaypoints set to true will have the server check each waypoint along a grid for the best Z-coordinate to reach it. Uses slightly more CPU power than the previous one.

Map:FixPathingZWhenMoving set to true will cause NPCs to constantly check for the best Z coordinate for their current position as they traverse their grid or roaming boxes. I think it does its check each second or something. This uses the most CPU power, but computers running servers in 2015 are unlikely to see any kind of performance hit, really. It was more of an issue 10 years ago.
Reply With Quote
  #3  
Old 09-18-2015, 07:18 PM
N0ctrnl's Avatar
N0ctrnl
Discordant
 
Join Date: Jan 2007
Posts: 443
Default

Boy was it. Changing anything with pathing back then could knock the zones up to 100% CPU without even blinking.
Reply With Quote
  #4  
Old 09-19-2015, 08:39 AM
AdrianD
Discordant
 
Join Date: Dec 2013
Posts: 297
Default

I did some more testing and searching.

Quote:
Pathing - grids
............
Testing some of the map pathing rule_values in qeytoqrg
+ tested in irregular terrain (Z)
+ `Map:FixPathingZWhenMoving` turned off broke grid pathing
+ `Map:FixPathingZWhenMoving` turned on fixed it
+ doing anything else with the above rule off made no noticeable difference
- only tested a few settings

The conclusions I made about Lavastorm do not apply to qeytoqrg. `Map:FixPathingZWhenMoving` does what it's supposed to do.

Testing some of the map pathing rule_values in nektulos
+ the grid pathing behavior of npcs in nektulos is similar to lavastorm although the terrain is less varied
+ any changes made had similar effect to lavastorm or no noticeable effect

I think it's fair to assume the issues are with the zones.
I made this assumption long ago. I am revisiting this issue which has been on my ToDo list for quite some time. Understanding the process a little more is a byproduct of due diligence. I found a quote from this thread from about six years ago. http://www.eqemulator.org/forums/showthread.php?t=28306

Quote:
trevius
Developer

Nektulos is a bit of a unique situation. There are like 3 versions of that zone. If you are using a different version than the spawns in that zone were created in, you will have weird issues like NPCs falling/jumping a lot and other stuff like that. I think the .map file for that that zone are for the original Nektulos only. I know they don't have .map files for the newest version, and I don't think anyone cares about the 2nd version enough to bother with it for anything (it sucks). So, if you want to use the old version, I think you have to do some file name changes so that it stops using the newer one(s). I think the PEQ forums describe the exact changes that you need to make somewhere in their play/setup guide.
I am using the old zones, if that wasn't clear. I have read many threads here and elsewhere at different points in my knowledge to refresh my understanding.

I have tested the client files by logging into P99 and going to these zones, just out of due diligence, again. I'm thinking I need different .map files.

I reverted the .map (linker address map) files for lavastorm and nektulos from the `EQEmuServer` I saved prior to updating on 7/29/15. The hopping issue all but went away. Much improved at first glance. Still could be better.

I'm not sure what happened during the update or if the newer files are for different zone versions. I'm disappointed noone suggested this very simple fix. This has been an issue for years and it is "common knowledge" that it exists.

On the other hand, I am pleased this was simple and greatly improved grid pathing. If other similar issues are found I could try the same fix. I would still like to know how to go about creating the files which had such varying effects on npc behavior.

Good day.
Reply With Quote
  #5  
Old 09-19-2015, 04:29 PM
image
Demi-God
 
Join Date: Jan 2002
Posts: 1,290
Default

I have the FixPathingZWhenMoving check turned on in my server as well. One note is there were some zones such as skyfire we had to rebuild the .map file because mobs were warping up in the air if you are using the public .map lists.


These are my server settings for Map/Pathing(if it isn't here its default):
Map:FixPathingZWhenMoving set to true
Map:FixPathingZAtWaypoints set to true

Map:FixPathingZMaxDeltaMoving = 30
Map:FixPathingZMaxDeltaWaypoint = 30
Map:FixPathingZMaxDeltaSendTo = 30
Map:FixPathingZMaxDeltaLoading = 55


Pathing:

Pathing:MinNodesTraversedForLOSCheck = 5
Pathing:CandidateNodeRangeXY = 50


Also increased these so people can't use levitate and other stuff in zones like mistmoore to make mobs run back and forth.

Pathing:CandidateNodeRangeZ = 25
__________________
www.eq2emu.com
EQ2Emu Developer
Former EQEMu Developer / GuildWars / Zek Seasons Servers
Member of the "I hate devn00b" club.
Reply With Quote
  #6  
Old 09-19-2015, 11:37 PM
provocating's Avatar
provocating
Demi-God
 
Join Date: Nov 2007
Posts: 2,175
Default

Thanks image, I may have to try your settings on my server to see the difference. This does help with people exploiting pathing nodes?
Reply With Quote
  #7  
Old 09-20-2015, 12:06 AM
AdrianD
Discordant
 
Join Date: Dec 2013
Posts: 297
Default

Thanks! I'll give it a shot as well.
Reply With Quote
  #8  
Old 09-20-2015, 08:43 AM
provocating's Avatar
provocating
Demi-God
 
Join Date: Nov 2007
Posts: 2,175
Default

Quote:
Originally Posted by image View Post
IOne note is there were some zones such as skyfire we had to rebuild the .map file because mobs were warping up in the air if you are using the public .map lists.
Yeah I think I looked at skyfire and it was one of those zones that had a gazillion path nodes, I normally do not do path nodes in outdoor zones.
Reply With Quote
  #9  
Old 09-20-2015, 09:32 AM
image
Demi-God
 
Join Date: Jan 2002
Posts: 1,290
Default

Quote:
Originally Posted by provocating View Post
Thanks image, I may have to try your settings on my server to see the difference. This does help with people exploiting pathing nodes?
Changing the Z values helped the most in that respect to stop levitating exploits. Now having said that it didn't eliminate it completely, in situations where the NPC did loop even with the increased Z I manually added a new node under the players levitation spot which addressed the issue. It just seems sometimes you got weird pockets that the NPC gets stuck in a loop.

The NodeXY value I reduced and the min nodes increased because I wanted to make sure the NPC's kept "pathing" until they truly saw the target in Line of Sight. With the default settings I find NPC's like to come directly at you as soon as they see Line of Sight so they would cut corners rather specifically once the LoS check was met.

Yea for skyfire doing #path shownodes locks up the zone pretty good for me, there are a ton of nodes. That zone is kind of necessary though -- I agree open zones I typically wouldn't add pathing points, but there are so many rocky formations that shoot up way high and the NPC's don't know any better so without the pathing they would just go right through them.
__________________
www.eq2emu.com
EQ2Emu Developer
Former EQEMu Developer / GuildWars / Zek Seasons Servers
Member of the "I hate devn00b" club.
Reply With Quote
Reply


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump

   

All times are GMT -4. The time now is 07:42 PM.


 

Everquest is a registered trademark of Daybreak Game Company LLC.
EQEmulator is not associated or affiliated in any way with Daybreak Game Company LLC.
Except where otherwise noted, this site is licensed under a Creative Commons License.
       
Powered by vBulletin®, Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Template by Bluepearl Design and vBulletin Templates - Ver3.3