OK, I got everything running, wrote a simple bot that’s better than the default ones—I had the most trouble figuring out how to get crash callstacks.
My next step is using a high-level grid to control the behavior of my ants (have big cells, keep track of how many ants are in each cell, use this to redirect ants to empty cells and to attract ants to cells with combat. I already did similar things in the past, shouldn’t be too complicated).
I may also experiment a bit with coordinating ant movement during fight—if I’m in a cell with a fight, get all my ants to move forward simultaneously or something.
I had thoughts along these lines, but I was thinking that in order to be effective the cells would need to be dynamically sized, and I didn’t see an obviously good way to do it (although I since ran across http://en.wikipedia.org/wiki/Local_outlier_factor—may be of some interest). I’ll be curious to know how this turns out for you.
My bot with cell wasn’t very effective, and was getting complicated to modify, so I started anew with a clean, modular architecture and a way of combining different strategies, each of which is pretty simple. That gets me an effecctiv enough bot with room for improvement—most of the ants just scatter by avoiding walking on frequently-visited squares, and those that are near food and hives attack.
Now that I have that, I can start adding some more complicated pathfinding strategies, some optimisation, etc. - macro cells will probably be useful again, for optimisation and high-level pathfinding. But now I can fit them into my framework without my code getting all ugly and unwieldy.
(I’m still somewhat annoyed about how my first bot, which just goes straight and turns 5% of the time or when it hits a wall, keeps outperforming smarter attempts. Well, at least now I’m regularly beating it.)
OK, I got everything running, wrote a simple bot that’s better than the default ones—I had the most trouble figuring out how to get crash callstacks.
My next step is using a high-level grid to control the behavior of my ants (have big cells, keep track of how many ants are in each cell, use this to redirect ants to empty cells and to attract ants to cells with combat. I already did similar things in the past, shouldn’t be too complicated).
I may also experiment a bit with coordinating ant movement during fight—if I’m in a cell with a fight, get all my ants to move forward simultaneously or something.
I had thoughts along these lines, but I was thinking that in order to be effective the cells would need to be dynamically sized, and I didn’t see an obviously good way to do it (although I since ran across http://en.wikipedia.org/wiki/Local_outlier_factor—may be of some interest). I’ll be curious to know how this turns out for you.
My bot with cell wasn’t very effective, and was getting complicated to modify, so I started anew with a clean, modular architecture and a way of combining different strategies, each of which is pretty simple. That gets me an effecctiv enough bot with room for improvement—most of the ants just scatter by avoiding walking on frequently-visited squares, and those that are near food and hives attack.
Now that I have that, I can start adding some more complicated pathfinding strategies, some optimisation, etc. - macro cells will probably be useful again, for optimisation and high-level pathfinding. But now I can fit them into my framework without my code getting all ugly and unwieldy.
(I’m still somewhat annoyed about how my first bot, which just goes straight and turns 5% of the time or when it hits a wall, keeps outperforming smarter attempts. Well, at least now I’m regularly beating it.)