close

Вход

Забыли?

вход по аккаунту

?

HOW TO WIN AT BATTLECODE - Spenser Skates

код для вставки
HOW TO WIN AT BATTLECODE
A guide to winning
By gtg ice skating lessons
It's Monday, January 5th. You've been up for the last 24 hours. You're jacked up on
caffeine, and there's plenty more where that came from. You've read up on BugNav, Tangent
Bug, Dijsktra's, Astar, and tore through every java crash course you could get your hands on. It's
past noon and you're finger starts to hurt from hitting refresh (grrr... damn devs always late).
Yep, all of the tell-tale signs are there, you are a Battlecoder! Finally, the page loads and you
shout out in dismay: Workers? Blocks? Movement penalties? Channelers? SNIPERS THAT
ATTACK GROUND AND AIR? Don't even know where to start? Don't worry. We'll let you in
on a few secrets and you'll be dining at the finalist's celebration in no time.
Rule #1: This is not Starcraft. It doesn’t matter how high your apm is or if you’re from Korea. Now on to our player.
One of the main themes throughout our player is adaptability. We respond to the enemy’s
strategy, unit composition, and strength.
We identified two major types of overarching strategies: swarm teams and flux teams. A
swarm team travels together and relies on destroying the enemy through overwhelming force. A
flux team splits up early on to take deposits and tries to win by points. In order to counter our
opponent properly, it is first necessary to identify them.
Below is a sampling of flux over time from replays from the scrimmage server of flux
teams and swarm teams. We classified the opposing team on the basis of their flux gained as a
function of round count.
Identifying a Flux Team
Flux Gained
16000
14000
Flux Team
12000
Swarm Team
10000
8000
6000
4000
2000
0
0
200
400
600
800
1000
1200
Round Count
A comparison of flux gathered by top swarm teams to flux gathered by top gather teams. We classify teams in above
the solid lines as flux teams and teams below as swarm teams in real-time during a match.
Against swarm teams, we stick together until we win a fight, whereas against flux teams,
our main focus is to capture enemy deposits and gather flux from them. We also use archon
memory to save this information for the next match.
Against flux teams we send a group of four archons (red) across the map to disrupt enemy flux gathering while
gathering ourselves. [replay #3455, versus JIT In My Pants (#70) on Corners]
While swarming, we travel to the nearest unowned flux deposit until we’ve reached the
enemy. After our first battle, we begin to mine flux deposits because as the most important fight
of the game is over, we can now focus on gathering enough points to win. We also begin to
gather if we realize the enemy is a flux team. To counter never-ending fights and teams that
turtle in the corner we also begin gathering flux after being in fight mode for 1,000 rounds or
after half of the estimated round limit.
Estimating Round Limit Using
getMapMinPoints()
7000
Round Limit
6000
5000
4000
3000
Round Limit = 0.1893 * getMapMinPoints() + 1738
2000
1000
0
0
5000
10000
15000
20000
25000
30000
getMapMinPoints()
Our estimation of the round limit on the basis of 13 available maps.
A key element of our combat strategy is to assess the situation in order to spawn units
that will give us an edge. We use soldiers while exploring and chasing enemy archons because of
their high speed and low upkeep. We use cannons while in combat and in defense because of
their range and relatively low spawn cost for their damage output. Finally, we use channelers to
protect our archons against soldier swarms.
Communication between allied units is crucial to our success. Our archons identify
targets for cannons to attack to increase their effective attack range beyond their sensor range. To
create a cohesive swarm in combat, our units broadcast and update the farthest seen enemy so
our swarm can move towards it. Workers share information about where to find blocks to build
with. Finally, our archons update and broadcast enemy channeler locations. This way, our
soldiers are not limited by their short sensor range and can evade map locations within drain
range of enemy channelers.
On the attack, our forces (blue) spot an enemy channeler. [replay #3546, versus BCCXTAL (#23) on Stronghold]
Our soldiers navigate around the enemy channeler, surround the enemy, and wait for cannon support to arrive.
Cannons eliminate the enemy channeler, allowing our soldiers to move in for the kill.
While many teams are of the mindset “there’s no need to create retreat code, because if
we’re retreating we’ve already lost. Might as well set our retreat move function to be
rc.suicide()” However, it’s not possible to guarantee winning any fight, so we give our player as
many chances to come back as possible.
Our archon retreat system is designed with this in mind. We place a high priority on
keeping archons alive and out of fire of enemy units. In situations where our archon needs to run
from the enemy force, we calculate an optimal direction for an archon to move based on a
potential map of enemy units.
Pincered by enemy units and losing a fight, our archons (red) calculate a retreat direction. [replay #3255, versus The
Suckers (#290) on Adobe]
Our Archons begin to retreat to avoid getting destroyed by the enemy.
Our method for determining when to retreat is based on the idea that it is important to
make in-game decisions based on the best criteria possible. Each archon constantly calculates the
size of the enemy force and the size of its own force. Whenever any archon decides it is
outnumbered, it sends a vote to retreat to all allied archons. When at least 50% of the fighting
archons vote to retreat, the archons will simultaneously run from the fight as a group to rebuild.
This allows for inter-archon variation in force size data while still allowing coordination in
decision making as a group.
The staircases that we build on flux deposits are dynamic and adaptable to the terrain
situation. When we map out the path that our staircase should take, the heuristics we use include
surrounding terrain height, the distribution of nearby blocks, distance from the flux deposit, and
the presence void squares. This makes our staircases highly versatile and able to adapt to specific
maps and situations, including taking over enemy staircases.
An enemy archon builds to gather flux. [replay #3255, versus When You Wish Upon Astar (#249) on Adobe]
Our forces (red) relieve the enemy archon of his command of the flux deposit.
We successfully increase the staircase in size without the need to reconstruct it because of our dynamic building
algorithm.
So there you have it: adaptability, countering the enemy, communication, giving yourself
more chances to win, and creating dynamic staircases. We hope this steers you in the right
direction. Tune in next week for our upcoming installment: How to Win at Battlecode Strategy
Guide Writing Contests.
Look at that, the time is gone, and now we have got to go for some ice skating lessons.
-GTG Ice Skating Lessons
Документ
Категория
Без категории
Просмотров
17
Размер файла
2 345 Кб
Теги
1/--страниц
Пожаловаться на содержимое документа