coping with map blocks
On 2-player maps, some games of Steamhammer against strong bio terrans, LetaBot and Tyr by Simon Prins, have gone like this: Steamhammer opens with mutalisks and, seeing defenses at the front and not knowing how to fly around them, falls into a standoff. Both sides build up for a while. The terran moves out with an infantry force. That’s a head-to-head fight that the zerg flyers understand, and they clean up the terrans before serious damage is done to zerg bases—not without losses, of course. Meanwhile, Steamhammer has long since sent out a drone to take a 3rd base, but the drone was confused by the blocking buildings on Benzene, or the blocking minerals on Destination or Heartbreak Ridge, and is still wandering back and forth looking for the way. Steamhammer has a mineral excess but does not make macro hatcheries because it is waiting for the new base to start. Zerg can’t keep up in production and loses to the next attack.
Map blocks are causing too many losses. I have to do something soon. Most bots stronger than Steamhammer already take measures (I think only Bereaver still suffers losses to map block issues). What are the options?
- Fix pathing: Go around the blocks.
- Goal monitoring: Detect units which seem stuck and reroute them.
- Detect that paths may go through blocks and (somehow) take extra care.
- Switch to BWEM. I want to, but maybe later?
- Clear the blocks.
- Clear blocks near our bases unconditionally. I think some bots do.
- Clear blocks which are adjacent to the main, or to an expansion we want.
- Goal monitoring: Clear blocks near stuck units. The units themselves can often do it.
- Hypothetical path analysis: Clear a block if it makes a path that we want to take shorter.
- Strategic analysis: Open paths which are more valuable to us than to the enemy.
- Work around it in some cheesy way.
- Take bases in an order that doesn’t run into map blocks.
- Hardcode, or add to the config file, a list of maps with blocks and what to do about them.
- Get vision of the base first, and then mineral walk to it, passing through blocks.
Obviously the ideal is to both fix pathing and clear the blocks, as in 1C plus 2E. Goal monitoring has some value, but not much value if the goals hardly fail.
To analyze from general principles whether it’s a good idea to clear a given block, you need hypothetical reasoning: If I clear this block, then that path opens, or that shorter route becomes available. I don’t notice direct support for hypothetical reasoning in either BWTA2 or BWEM. It doesn’t seem all too difficult to cobble something together if you can find out what choke each blocking mineral/building blocks and the choke-to-choke distances.
For now I don’t want an ideal solution, I want something simple that solves enough of the problem. I expect I’ll start with 2B and adjust as needed.
What do others do? Are there tricks or pitfalls?
Update: I should have talked about mineral walking. Quite a few competitive maps are designed with small mineral patches on one or both sides of a block. A worker at the block can see the minerals on the other side, right-click on them, and pass through the block, but another kind of unit cannot. Electric Circuit in the SSCAIT map pool has the feature, but the map is not used, because too many bots get units trapped behind the blocks. Of course, as long as the map is not used there is no incentive to fix the bugs....
And that suggests an idea for zerg bots: First send an overlord to any base that you want to take. With vision of the minerals, you can mineral walk the expansion drone to the base. Having vision also gives some assurance that the base is safe and worth taking, and it lets you deal with spider mines. I’ve added the idea to the post as 3C. I hadn’t thought of it before, but now I’m seriously considering it.
Comments
PurpleWave on :
krasi0 on :
Sq on :
Heuristics could be mixes of things like "always clear for workers" or "clear it when 100 paths are sent around the block" or "never clear stacked buildings without lurkers."
You could also run both path finders and weigh decisions based on the difference, but I don't think that's useful unless you're trying to expand the concept into anti-wall-off code, because the neutral blockers are placed by hand by humans trying to make big differences.
Jay Scott on :
Jay Scott on :
krasi0 on :
Jay Scott on :
MicroDK on :
Igor Dimitrijevic on :
Paths and ground distances take into consideration minerals and static buildings that block ChokePoints. With EnableAutomaticPathAnalysis() called at the initialization, Paths and ground distances will be updated accordingly each time you inform BWEM that any mineral or static building has been destroyed. So, in order to get the new shortest paths IF some blocking neutral got destroyed, you could just pretend this happened. But I don't recommend this, as it is not undoable, and it is better if BWEM's state reflects reality. Good news is that I may add a new feature, that support a more general "hypothetical reasoning" about paths : one will be able to set/unset any ChokePoint as "disabled", and BWEM will update its paths and ground distances. Any ChokePoint could be enabled/disabled, not only those actually blocked by Neutrals: this will help some tactics like: "give me a path from here to this enemy Base, but I don't want to go through this ChokePoint, because I know there are ten sieged tanks there". This feature could also help in the case where there are several good paths from A to B, and you want to secure both paths.
Jay Scott on :
Joseph Huang on :
Jay Scott on :