Steamhammer progress so far
Steamhammer is coming along steadily for AIIDE. It is already noticeably stronger than the release version now playing on SSCAIT.
Defiler skills may never be as good as I want; defilers are difficult. But the skills are there, and zerg can lay down the law in the late game. I can’t always predict whether Steamhammer will swarm or plague in a given situation. It’s satisfying to see a carrier plagued, and there is a bonus in the scoring function to favor exploiting plague-on-interceptor. XIMP has no hope.
Next I made some micro changes. After playing games against several opponents at very slow speed to watch the fast decisions, I’m convinced that Steamhammer is making fewer wasted movements and fighting more efficiently. I want to make further improvements, but it’s enough for the moment. I’ll see how the time works out.
I’m thinking through a more detailed plan for the tactical analyzer. While that is crystallizing, today I am working on the retreat problem which has left the current Steamhammer weaker than the previous version. Once retreat is ironed out, I should have the strongest Steamhammer yet and a good foundation for the next changes.
Meanwhile, I notice that PurpleWave has learned how to delay the zerg natural in the early game with its scouting probe by denying the hatchery from starting. It’s the classical reason usually cited for why zergs switched from 12 hatchery to overpool against protoss. I deliberately chose 12 hatchery for many of Steamhammer’s openings because no protoss bots had the hatchery denial skill, and now that has changed. Besides opening pool first, other standard reactions are to make the second hatchery elsewhere (at what would otherwise be the third base) or to fight a little micro war of drone versus probe—or both at once. Hmm, so many choices....
Comments
MicroDK on :
Jay Scott on :
Joseph S Huang on :
Jay Scott on :
Tully Elliston on :
Jay Scott on :
Jay Scott on :
Dan on :
Jay Scott on :
McRave on :
Jay Scott on :
jtolmar on :
A full squad grouping is still needed to get units into the right part of the map and to decide if it's time to go all in on an attack, but that choice can afford to be more timid if smaller groups are still accomplishing things.
McRave on :
Dan on :
Tully Elliston on :
If combat sim shows its worth attacking, that attack should be locked in for a period, and the threshold for retreating should be much lower than just "will we win?" Eg. SH may attack if the combat sim shows it will win with 10% remaining. If the combat sim then reports 2 seconds in actually it will lose, with opponent having 10% remaining, because marines killed some zergling on the way in - that is not a sufficient cause to retreat, even though it would not have been sufficient cause to attack. Moreover, with such tight odds SH should not be attacking at all. SH needs to be accepting greater or worse than 1:1 losses based on the macro situation, and it should be ready to trade forces to the death if it has resources and larva - zerg can rebuild fast.
Combat sim can provide the info needed, the info just needs to be interpreted correctly rather than treated as binary signal to dive or flee.
Jay Scott on :
Dan on :
It helps but doesn't fix the problem. There are no values that produce good behavior in all circumstances. Some fights need tiny hysteresis (zealots vs. zealots) and some need massive hysteresis (Big Protoss army vs. Big Terran army). And it's hard to know which.
But even with well-tuned parameters, the fluctuations in sim output are *still* of high enough variance (and inaccuracy) that this is insufficient for combat decisions approaching those of a decent human player. Pick any hysteresis threshold or duration, and you will see different flavors of stupidity.
There are multiple sources of instability in combat simulation. They largely boil down to the inability of simulations to accurately simulate collisions or to give units intelligent behaviors, both for performance reasons. So if you had 4 Zealots vs. 4 Zealots in nearly-symmetrical positions, in one simulation you might wind up with emergent focus-firing by one side, and in the next simulation by the other, producing radically different outcomes in consecutive frames for what's obviously an equal fight.
Beyond that, an even bigger problem with combat sim is that it fails to consider contextual factors. Maybe you're at 0.5 and ready to fight, but if you wait two seconds for more units to catch up, you'll be at 0.8.
Or say you're parked outside a Terran base loaded up with tanks that you have no hope of beating. A human thinks "Okay, I'll just sit outside until they move out". A bot thinks "LET'S RUN COMBAT SIM EVERY FRAME" and it only takes a few bad sim results over the 2,000+ you run in that time to momentarily decide to suicide your whole army.
Marian on :
Whole thing is very fast so can be ran many times per frame.
Obvious drawbacks are that positioning, shape of map, range advantage(for not to retreat) are not well accounted for.. although I have some ideas for improvement.
I have also created a bunch of UMS test maps where various combat features are tested like melee vs melee, melee vs ranged, melee + static vs attacker ... I can only recommend to use something like this.