Improved NPC Grid/AI pathing
This is actually 2 seperate requests, so i'll break them apart.
1.) On EQlive, when a mob spawns, it moves on a grid system, so that it appears to have realistic movement by not bumping into trees and walls and stuff. For an outdoor zone, when a player attacks a mob, the mob follows the player in no relation to the grid. It just goes straight for the player, through trees, etc, yet thats the way its done on Live so I see no problem there.. However, in a dungeon/City, when a player attacks a mob, the mob navigates the dungeon/city using ONLY the grid, otherwise it would be walking through a ton of walls and creating trains. Once the mob gets close to the player, it "branches out" off the grid at the closest point between the grid and the player. If the player dies, the mob returns to the grid using the same closest point method, and then uses the grid to navigate back to its spawn point.
Now, i've spoken with Rangerdown and he has informed me that EQemu does not work like this. Mobs simply follow players in dungeons, as they would in an outdoor zone. He mentioned that this would be a difficult fix because it would involve doing a ton of checks against the zone geometry using the MAP files, which would be very CPU intensive. However, I don't believe thats how EQlive does it. On Live, the mobs seem to be "locked" to a grid (but only in dungeons, cities and other indoor zones), and use the grid to navigate the zone, and at every waypoint they do a simple distance check between them and the player to determine which direction to take for the next waypoint. Only once they get very close to the player do they pop off the grid and move towards the player apart from the grid. This is the same way that Unreal uses its grid system for mob/bot AI, and its actually very easy on the CPU in comparisson to Quake3 bots which have to "know" the zone geometry to be able to move around. I could be wrong, but it doesn't seem very difficult to impliment. All that would be needed is some kind of flag associated with each zone in the database that would inform the server to do either outdoor mob AI or indoor mob AI for the zone (since outdoor zones don't use this special AI), and some simple distance checks to tell the mob which waypoint to move to depending on distance to the player. Let me know if i'm wrong on this.
2.) On EQlive, mobs seem to use a dual grid system. For example, take the bats that spawn in lower guk by the bedroom. They are stationary, so on EQemu, they would only need one waypoint, since they don't patrol or anything. But once a player attacks them on EQlive, they seem to have access to some kind of zone wide grid, which tells them how to navigate the zone (as described in #1). On EQemu, all they would have access to is that single waypoint, which would do nothing for helping them navigate the zone. I guess the way this should be done is to have 2 kinds of grids for each zone - (1) a mob grid used to tell mobs added to that specific grid how to patrol and move around when idle and (2) a zone wide grid which all mobs have access to, to show them how to move around the dungeon. This seems to be the way EQ does it, at least from what i've observed. This probably wouldn't be too difficult to impliment I don't think, and would need some database adjustments for each zone to specificy the number of the zonewide grid. The only problem I see is that currently grids are limited to 50 waypoints, which might not be enough for most zones.
Any comments if any of this is feasible? Cause it would certainly help to make EQemu a lot more realistic.
|