SSCAIT semifinals and third place playoff, part 2
Today is the second and more interesting part of the SSCAIT 2016 round of 4. Krasi0 fought XIMP, with the winner to move on to the final. The loser went to a 3rd/4th place playoff match against Iron.
Krasi0 vs XIMP
Game 1 was on Empire of the Sun. XIMP is the carrier bot. Terran Krasi0 saw what was coming and chose to attack with tanks and early goliaths before the carriers had all their interceptors. The tanks were somewhat inefficient in sieging down the cannons (most bots are), but they were fast enough. XIMP was in trouble regardless, but losing too many probes sealed it.
Game 2 was on Heartbreak Ridge, a 2-player map. It has many cliffs which favor carriers, but it also has low-ground bases and a short ground distance between the mains, which favors mech attacks. Krasi0 attacked with the same timing as the previous game. Krasi0 again killed the natural, but terran reinforcements chose a path through the center which took them next to the protoss base, distracting XIMP into playing correctly against the reinforcements instead of the main terran force. Krasi0 could have sent fresh units the other way around the center of the map, where carriers could not have engaged them until they arrived. Then the mech army would have stayed compact.
But as it happened, the diversion toward reinforcements and Krasi0’s difficulty in attacking the protoss main through the very narrow entrance meant that the carriers were able to build up interceptor numbers. XIMP defeated the goliaths and started chasing the terrans away. Krasi0 sent goliaths piecemeal toward the front and lost them a few at a time.
While one carrier group fought terran units around the center, another group departed on XIMP’s trademark edge crawl to survey the bases around the map and attack from the rear, a slow but dangerous plan. Both players were in some trouble. XIMP had only its main left and no long future unless it could take and hold another base, while Krasi0 had 2 bases but not enough anti-air to stop the carriers. What would happen?
XIMP’s front carriers played poorly and lost numbers. They could have returned through the center to cover while XIMP retook its natural, or they could have joined the attack on the main where cluttered buildings made goliaths awkward, or they could have circled the terran natural and attacked it from above the cliff, but they insisted on attacking from the front without the advantage of a cliff. With that decision, Krasi0 had the lead. Terran should have sent its ground army, minus air defense, to the protoss base, which would either cause a base race or bring the carriers back home to defend. Instead Krasi0 left tanks and vultures idling around the center of the map. Krasi0 did not use its lead.
Neither side was making the most incisive moves, and the outcome was unforeseeable. Fun game!
Krasi0 got a third base up. XIMP had no money but destroyed the terran main, slowly. Krasi0 did not try to float its factories, but rebuilt from scratch instead. Finally Krasi0 built up enough stuff to start hitting carriers, and that was enough.
Both players fought like lions. After mistakes all around, the victory was narrow. Krasi0 won and went to the finals.
Lesson: You never know what little thing will make the difference. A small improvement by XIMP (try to attack from above cliffs, or destroy bases more efficiently) or a minor weakness in Krasi0 (build the 3rd too late, be unable to recover from losing all tech) could have given us a different result.
Iron vs XIMP
Iron is far more aggressive than Krasi0. Iron attacked with infantry and tanks, sieged down the cannons, held off carriers with marines and turrets, finally added valkyries almost as an insult, and won easily. The second game went about the same way. A group of carriers escaped and caused damage, but only until the undefended protoss base died.
It’s not easy to beat XIMP, or more bots would do it, but Iron made it look easy.
Comments
krasi0 on :
"Terran should have sent its ground army, minus air defense, to the protoss base, which would either cause a base race or bring the carriers back home to defend. Instead Krasi0 left tanks and vultures idling around the center of the map." - yeah, but none of my units are tempted to go on a suicide mission (even for the greater good). The siege tanks and vultures would rather wait for the anti-air reinforcements instead of marching naked to their certain death. I agree with you of course, that strategically that decision almost cost me the whole game. :)
Iron's aggressive play is remarkable and I have a lot to learn from it. It's not my style of play (even as a human player) though, so I am uncertain whether I will be able to implement any successful "import" of aggression into my bot's behaviour. The status quo dictates that Iron >> krasi0. We'll see if that changes during 2017 :)
Jay Scott on :
Igor Dimitrijevic on :
If you encounter performance issues with the calculation of ground distances and paths, try BWEM. You can use BWEM's paths and ground distances features only, while still relying on BWTA2 for regions and choke points. This way, the impact in your code would minimal. Migrating the whole library may not be trivial, since they don't represent regions the same way, so some user algorithms may differ quite a lot. And they don't compute the same set of regions, so the migration may bring some subtle side effects (either good or bad).
krasi0 on :
You seem to have done a great job.