react to more of the future
Watching games today, I’m struck by how little bots still predict and how much they rely solely on what they see right now. See react to the future for my earliest post on the topic, over 2 years ago: It says that you want to react to what you expect, not to what you see. Today, it seems to me that top bots mostly predict at the lowest and highest levels: They predict individual unit movements for micro, and they may choose their own initial strategy by predicting the enemy strategy. Other than that, it seems to me that play is reactive: What have I seen, what do I see right now?
When Steamhammer is chasing an enemy unit and the enemy goes up a ramp—oops, I don’t see it any more, choose another target. That’s not so bad, since Steamhammer chases too much anyway. But when Iron has done its vulture runby and slow hydras are trying to fend them off, it’s a problem. Each time the vultures swoop out of sight around the edge of the base, the hydras think “Whew, mission accomplished, no need to defend the base any more.” Or when Bereaver’s shuttle with the deadly reaver slides away for another approach, “Ha! We win! Let’s head for the front lines.”
When you’ve seen a unit recently, you can predict that it is probably near the same location (theoretically it could have been recalled or gone through a nydus canal). I’m sure some bots do this (Steamhammer development version does it for purposes of clustering). When you’ve seen a ground unit in a region and you have watch over the exits, you can predict that the unit is still in the region (there’s a small chance that it may have been lifted away by a transport, and maybe a minuscule chance that it somehow died out of sight, or even that it was escorted out under cloak by an arbiter). Do any bots do that? In the general case, you can reason about how far the unit can have moved by what time, and what places you had vision over at each time. I doubt it’s worth it, though.
Predicting the enemy army size and composition is valuable. Many protoss bots get observers only after they discover an urgent need to fight lurkers or dark templar. Pros don’t play that way. A pro can tell when the enemy is teching in the early game from the army size: Press to force the enemy to defend, and if there are not enough units, then the income is going somewhere else. It amounts to partly predicting the enemy army composition (“enemy is probably getting dark templar or reavers”) from its size. It’s a complex skill; you have to factor in early scouting information and bases taken. But it doesn’t take a data-hungry deep learning algorithm to solve it; it’s within reach. (In practice, I would treat this as a tech prediction problem: What enemy tech will we see? For each tech, estimate the probability of seeing it at a given future time. Since we’re predicting when we will see it (not when the opponent first gets it), the game itself provides the necessary training data and it it isn’t necessary to go through replays.)
Predicting the enemy army size is also valuable. This post was partly inspired by watching Proxy build sunkens to match the number of enemy zealots seen. (Steamhammer does the same thing.) Top protoss bots are careful to deny scouting and take advantage of the fact that opponents react only to units seen. In a forge expand, early in the game part of the protoss army tends to be out of sight behind the cannons. Later in the game, the protoss army size grows rapidly, and zerg doesn’t adjust its drone-to-army ratio until the new units are seen, which may be too late. It is a major strength of Locutus.
Plan recognition at the tactical level means predicting the enemy’s tactical movements. When an enemy army moves out, what is it doing? Is it coming out to fight your army, to attack a base of yours, to defend its own bases, maybe just to clear some mines or to see what’s up? It might be maneuvering to set up a drop, but bots aren’t strong enough to worry about that yet! Humans continually evaluate the enemy plan and react to what they expect. Bots do too, in a way, at a more primitive level. I’m thinking of Arrakhammer morphing its creep colonies into sunkens because the enemy is out on the map.
Some bots try to do proper tactical analysis, starting with MaasCraft. As I’ve mentioned before, I have an idea for tactical analysis that I hope will produce good results with less work than MaasCraft’s expensive search. There’s a chance I could get it done in time for AIIDE.
Comments
McRave on :
Jay Scott on :
McRave on :
Tully Elliston on :
eg. We know that enemy only has small force while they are teching --> accept heavier losses/worse success ratio than normal, on basis that enemy can't replace forces and we can/ or else we need to force the matter now.
or
We know that enemy must have a larger force than us, even though the visible force is smaller ---> engage in tactical or agent level retreating-kiting type behaviour with ranged units, prioritise survival of army over dealing damage. --> do not engage with melee units unless we can see using LOS that there is no other enemy units with x distance of the target cluster (to avoid suicidal dives with lings into unscouted territory)
Dan on :