-
Bot communication?
Hi,
I was wondering if anyone had any of their own solutions (rough or polished) they would like to share code or discuss the concept and ideas behind their bot-communication strategy's they would like to share?
I am getting into writing team-bots for fun, such as a group bg bot that consist of a mage, rogue, and warrior with 2 holy paladins that run at the enemy FC in sycnh in flag maps all game every game.
Currently I use a really dumb event system that raises web-events my bots monitor to alert all the other team bots of things I want them to know. I did it this way so team-bots would be possible between friends easily or across multiple pcs. I've seen some really cool solicitations to communication between processes and other tings outside of the game hacking world, would love to see if anyone has messed with them inside the gaming world.
-
I think this really depends on how your bots will work, what they will do, and where they will run. Are you modifying the existing client? Going clientless? Will they all run on the same Windows user account on the same machine? Different accounts/machines? What will the bots do? Work together to perform quests? Raids? Separate individual grinding?
-
My first attempt was based on sockets. All toons of the group were connecting to the group leaders socket and then can send or recieve commands from it.
Was basically using it for group grind: Members notifying the master about that they need to regnerate / Master notifying the members that we have to wait etc.
I guess next time I would use named pipes but this stil leaves the problem open about what to do when running a party of bots from different PCs. Maybe use the ingame WoW AddOn channel (API SendAddonMessage - WoWWiki - Wikia) :P? Would be to easy to detect I guess ^^
Check my blog: https://zzuks.blogspot.com
-
Originally Posted by
namreeb
I think this really depends on how your bots will work, what they will do, and where they will run. Are you modifying the existing client? Going clientless? Will they all run on the same Windows user account on the same machine? Different accounts/machines? What will the bots do? Work together to perform quests? Raids? Separate individual grinding?
This sounds too specific to be too useful to most people, my current system uses. I created a simple website that allows connected applications raise digitally raised events or subscribe to digitally raised events. This also allows cross-platform support fairly easily.
Some major downsides come along with this, though. So for my learning purposes, in my specific case I want to be able to achieve a system that allows multiple bots to work together in synchronization on multiple pcs to accomplish commonly desired goals (healing a bg, farming old raid content, etc) more efficiently. I'd prefer the solution be usable across multiple programming routes as I enjoy coding so far in lots of languages. I also intend all of the bots to depend on a active, live game client running.
Last edited by lolp1; 12-15-2015 at 04:15 AM.
-
Microsoft have included some pretty wonderful classes to assist with IPC. I suggest using a shared object between each process (even the instance of a bot in it's entirety) by means of the ChannelServices class. It handles the protocols for you, which will make your life so much easier. It supports local IPC via. named pipes, or remote IPC via. HTTP or TCP, using the IpcChannel, HttpChannel, and TcpChannel classes respectively.
I won't delve into the details, there's a lot of information out there regarding these classes. So hopefully you're interested enough to look into it.
Last edited by Jadd; 12-15-2015 at 04:33 AM.
-
Post Thanks / Like - 3 Thanks
lolp1,
Sklug,
aeo (3 members gave Thanks to Jadd for this useful post)
-
Originally Posted by
Jadd
Microsoft have included some pretty wonderful classes to assist with IPC. I suggest using a shared object between each process (even the instance of a bot in it's entirety) by means of the ChannelServices class. It handles the protocols for you, which will make your life so much easier. It supports local IPC via. named pipes, or remote IPC via. HTTP or TCP, using the IpcChannel, HttpChannel, and TcpChannel classes respectively.
I won't delve into the details, there's a lot of information out there regarding these classes. So hopefully you're interested enough to look into it. 
Could not have hit the nail on the head any better.