I was in the process of updating this for Cataclysm when I basically ran out of steam for interest in Warcraft. See my other thread here on KillBots for the bot this PathServer was connected to. This ONLY works currently on WOTLK data – so this PathServer posting is for instructive purposes only. However, the interprocess code and the A-Star updated code could be instructive for some beginners.
PathServer
Features:
This is a rewrite, major upgrade, and FIX of this:
- Listens to interprocess topic based publish/subscribe.
- Works on any computer in the local net for serving (assuming firewalls are open to it).
- Will "send" data if you want bots to go to a given place (button on GUI).
- Will "listen" to bot commands that request for information to be sent to other bots in party (try to understand the KillBot code for how that worked). Basically used for MT to "call" other bots to its position if they go out of LOS, or to "tell" other bots to go places. Such commands are usually driven by KillBots-based context/task routines.
- Ability to click on displayed mesh to add NO GO loci and "Preferred" paths. Makes sure the pathfinder does not use those. KillBot also had the ability to send any current location to the PathServer to be marked as NO GO or preferred through the interprocess server (see killbot code for details).
- Needs to be upgraded to Cata MPQ structures which I was in the process of doing with wowmapper (see next post below).
http://www.mmowned.com/forums/world-of-warcraft/bots-programs/251315-source-pathing-3d-viewer.html
as previously posted 1.5 years ago by DarrenSmith. I had fixed the M2 positioning (the quaternions were wrong), I added the interprocess Publish/Subscribe system (originally posted on codeproject.com but strangely now missing), and the other features noted above.
Sorry to say the UI has DevExpress elements in it, so you will either have to download a “trial” package of DevExpress or replace the UI elements with standard Microsoft UI buttons and pulldowns. For a C# programmer with reasonable experience that should not be too hard.
---------- Post added at 03:22 PM ---------- Previous post was at 03:20 PM ----------
The original Publish/Subscribe package I used is posted below. The server in this package can be run on any computer on the local network and can "talk" to any others on the network and "serve" pathdata as long as they are subscribed to a given data stream. The local bot would decode the path and run it alongside other tasks it was doing. There are a lot of other interprocess packages out there that can be adapted similarly-- I provide this one just for completeness since I set it up for my KillBots and Pathserver Projects:
TopicBasedPublishSubscribe
Need to change in Subscribe and Publish, respectively, MYCOMPUTERNAME to the name of your computer if the pathserver is on a different computer:
_endpoint = "net.tcp://MYCOMPUTERNAME:7002/Sub";
const string endpointAddressInString = "net.tcp://MYCOMPUTERNAME:7001/Pub";
if you are doing everything just on one computer and different processes, you can just use “localhost” (without the quotes) in place of MYCOMPUTERNAME.
---------- Post added at 03:23 PM ---------- Previous post was at 03:22 PM ----------
My beginning of a C# wrapper to read the MPQs. Wraps the AMAZING work of Pferdone (who got a lot of help from people at this site, including Ryns, namreeb, & FenixTX2 ). Could be useful for people who want to learn wrapping-- kid's play for many people on this site, but for me was a great learning experience. This was my first real foray into C++ code, and I was delighted to have gotten it to the point of working.
Basically, all that is needed to be done to fully integrate to KillBot is to add the interprocess server and the A-star and I'd be good to go again (given the limited instances or regions I played in, I did not feel I needed recast/detour as A* is fast enough on most computers. Plus, with the smoothing I did for pathing my paths looked more natural and not "jerky" as they did when I used Detour).
To use this you will have to change the paths to a lot of the includes, as well as download all kinds of libraries that the projects reference. Not for the feint of heart... don’t ask me to figure it out for you. I had to figure it out myself, and I am a better person for it.
MapperWrapper
rep always appreciated.