Fear Pathing Once Again
ok, well after thinking about this and people talking at me about it.. here is a solution I propose to implement fear pathing.
99% of the work in this will be in an external program, so I dont give a shit about runtime.. it can take 5 hours a zone for all I care, it only needs to run once. The emu code to implement it will be trivial once we have the pre-calculated path files. anyway, here goes, in nice cant-sleep-writting-down-ideas notation: (sorry for the code block, its pre-formatted) Code:
** Load up our data in raw format: |
[font=Arial][size=2][font=Arial][size=2]Would it be worthwhile to include all the spawn points when initially connecting all the waypoints into a big grid? I only suggest this as will take care of all of the spawn points that have LOS to a waypoint, any remaining spawn points (those that don
|
EQLive seems to use a big grid of geometrically-aware waypoints. And in the fashion of a fire drill floor plan diagram, it seems to have logic that "if you're in THIS area, you'll use THIS route for fearing; if you're in THAT area, you'll use THAT route for fearing..." If you fight multiple mobs in the same general area of the zone, you'll observe them using the same routes on their fleeing path.
|
Fathernitwit, I am keen to get started on this and am wondering how its going happen, i.e. a new project on Sourceforge, a new console app and directory in the existing EQEmu project (post code in this thread)?
*edit* (I had no idea there were so many grids in each zone, have a look at the freportw grids http://members.dodo.net.au/~mollymil...ortw_grids.jpg) |
ah well I guess I will give a status update.
Path file generation is going very well. It is in a standalone console application, just like map building. If the zone has good pathing, or lots of mobs close together, then it is getting great results. On the other hand, sparsely populated zones are gunna need some manual tweaking, through the use of in game commands to add new hint points. It is still generating minorly invalid paths, and the only way we are gunna get away from that is to give it incentive to generate the right graph instead by providing more hint points. Some of the biggest obstacles I have come across: - Invalid data in the database... how to identify it. (not great yet) - Newbie fields and high-pathing zones needed a HUGE reduction algorithm run on them. - Eliminating small, disconnected subgraphs from the whole mess The only real challenge I have remaining is supporting multiple disjoint fear grids in a single zone, like will be the case in ToFS. Need to identify them, and process them seperately. Here are some example zones and their paths. Grey is the source data, and red/orange is the final fear paths, colored by z height. Good dungeons: http://www.projecteq.net/fathernitwi...one-mstree.png http://www.projecteq.net/fathernitwi...der-mstree.png Good Cities: http://www.projecteq.net/fathernitwi...nos-mstree.png http://www.projecteq.net/fathernitwi...os2-mstree.png http://www.projecteq.net/fathernitwi...ark-mstree.png Needs help examples: http://www.projecteq.net/fathernitwi...her-mstree.png http://www.projecteq.net/fathernitwi...per-mstree.png These grids get put into a path file, which includes a quadtree for fast searches. The format is very similar to that of the map files. On the emu side of things, I have code written to read in the path files at zone bootup. I can them locate the closest path to me, and run to it. Then once I reach that node, I can select the next node, etc.. so essentially it works. This is just raw testing, I dont actually have mobs running on the path, but that is trivial with the WP code. I have an issue where my code to decide where to go next is getting into a small loop and running between just a few nodes, but im working on a fix for that. One thing im trying to decide on is what to do when I cannot locate a closest fear node. Like if we are in a place where there was no pathing/mobs anywhere near us, etc... Or in a small room that cannot see any of the nearby points. it seems like the only solution is to use what we do now, since nothing else is really reliable in emu. Theres more possibilities in the processor, but that will rely on LOS, which is not 100% perfect. Basically, the code will be done soon, its just a matter of hand-tuning all the zones so we can get good path files. processor is about 3500 lines right now. emu code is about 1000 |
If you have no node near you, the best thing you can do for fear is just pick a node and, even if it's halfway across the zone, take a direct route to it. Through walls, through trees, it doesn't matter. Part of the danger of using fear is you can't be 100% certain where a mob may choose to run. IMO, the worst thing you can do is either have the mob stand still, stunned. Doing so will only encourage players to pull mobs to that spot and fear them from there.
If you're really up to a challenge, generate fear pathing in Kedge Keep and see what it did. Don't beat yourself up if it fails miserably in that zone -- all Kedge mobs EQLive are unfearable for that very reason. So if it can generate even halfway decent fear paths for that zone, you're already doing better than Verant ever could :) |
[size=2]OK, I feel pretty foolish for posting now, I assumed this was sitting on the back burner as it has been for a long time, although it was only last night that I started researching (and coding) and found how much discussion had occurred in the past. I guess I should cruise my couch some more and wait for it to be finished.
There isnt much actual EQEmu development discussed in this development forum? I feel I should be working on something but don |
All times are GMT -4. The time now is 11:59 AM. |
Powered by vBulletin®, Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.