Hooke
08-04-2003, 07:50 PM
Before I start, let me just say that I'm not a programmer, so try to be kind.
As it stands now, dungeons are pretty much unplayable in the emulator due to the fact that the server doesn't see zone geometry such as walls, and only calculates whether or not a mob aggroes on the player based on their respective xyz coords. This causes mobs to jump players through walls, making it nearly impossible to play through a dungeon, especially a layered one.
I was thinking about a possible solution that didn't involve the server actually using a 3d model of the zone and collision detection, as that would for sure be too costly resource-wise. What I came up with is this:
Why not have a grid (or series of grids) of waypoints that covers the entire (indoor) zone, separate from the grids currently used to do pathing now. Unlike the grids used now, which cover a limited area and are just meant for a single npc, these grids would cover all the area in an indoor zone that a mob could move over. These waypoints could be stored in the db.
When a zone boots, the server could "snap" all mobs to the nearest waypoint on the Big Grid (tm) for all aggro check purposes. As a client moves through the zone, the server could also "snap" him/her to the nearest waypoint on the Big Grid. When checking for aggro, the server wouldn't just do it based on xyz coords, but rather on the amount of PATH on the Big Grid between them, based on their respective nearest waypoints, which the server has snapped them to.
Once aggro has occurred, the mob would follow the Big Grid to the waypoint nearest the player and then proceed towards them in a straight line from there. The Big Grid could also be used to easily implement fleeing mobs, which is another aspect the emu currently lacks. Other checks, such as whether to have a mob buff another mob, could also be done through the Big Grid, so that a level 6 mob standing next to a wall that happens to have a level 30 mob on the other side of it won't get level 30 buffs and rip apart the surprised level 6 player who attacks it.
Waypoints for the Big Grid could be added the same way pathing is currently done: by a GM character in game. Yes, it would be relatively labor-intensive, but really no more than pathing is now, considering it only needs to be done for indoor zones.
So devs, let me know what you think. Could this be done, or would it be too difficult to implement? Or use too many resources on the server side? Obviously I'm just throwing out a very rough idea that I came up with in about 20 minutes and if it were ever used it would probably have to be refined to some extent, but is the principle behind it, using a path to check aggro, feasible?
Anyhow, like I said, I'm no programmer, so if this is totally unworkable for some reason, that's why :wink:. Just something I wanted to throw out there for consideration.
As it stands now, dungeons are pretty much unplayable in the emulator due to the fact that the server doesn't see zone geometry such as walls, and only calculates whether or not a mob aggroes on the player based on their respective xyz coords. This causes mobs to jump players through walls, making it nearly impossible to play through a dungeon, especially a layered one.
I was thinking about a possible solution that didn't involve the server actually using a 3d model of the zone and collision detection, as that would for sure be too costly resource-wise. What I came up with is this:
Why not have a grid (or series of grids) of waypoints that covers the entire (indoor) zone, separate from the grids currently used to do pathing now. Unlike the grids used now, which cover a limited area and are just meant for a single npc, these grids would cover all the area in an indoor zone that a mob could move over. These waypoints could be stored in the db.
When a zone boots, the server could "snap" all mobs to the nearest waypoint on the Big Grid (tm) for all aggro check purposes. As a client moves through the zone, the server could also "snap" him/her to the nearest waypoint on the Big Grid. When checking for aggro, the server wouldn't just do it based on xyz coords, but rather on the amount of PATH on the Big Grid between them, based on their respective nearest waypoints, which the server has snapped them to.
Once aggro has occurred, the mob would follow the Big Grid to the waypoint nearest the player and then proceed towards them in a straight line from there. The Big Grid could also be used to easily implement fleeing mobs, which is another aspect the emu currently lacks. Other checks, such as whether to have a mob buff another mob, could also be done through the Big Grid, so that a level 6 mob standing next to a wall that happens to have a level 30 mob on the other side of it won't get level 30 buffs and rip apart the surprised level 6 player who attacks it.
Waypoints for the Big Grid could be added the same way pathing is currently done: by a GM character in game. Yes, it would be relatively labor-intensive, but really no more than pathing is now, considering it only needs to be done for indoor zones.
So devs, let me know what you think. Could this be done, or would it be too difficult to implement? Or use too many resources on the server side? Obviously I'm just throwing out a very rough idea that I came up with in about 20 minutes and if it were ever used it would probably have to be refined to some extent, but is the principle behind it, using a path to check aggro, feasible?
Anyhow, like I said, I'm no programmer, so if this is totally unworkable for some reason, that's why :wink:. Just something I wanted to throw out there for consideration.