Halite Home

Early, Mid, and Late Game


#1

I think of matches as happening in 3 phases:

  • early game
  • mid game
  • late game

The goals of each phase are different and it's important to think about all 3 in order to have a strong bot.

Early Game

I consider the early game to be from the start of the game until your bot makes contact with another player. Single Player Mode is basically early game all the time.

The goal of the early game is to capture neutral territory. You capture neutral territory for 2 main reasons:

  • fuel your growth with production
  • deprive other players of valuable neutral territory

In the early game, you don't need to defend your territory from other players so quick expansion into the most valuable (and preferably uncontested) areas is vital. However, you do want to keep an eye towards the rest of the game and try to avoid capturing low value territory that will be hard to defend.

Efficiency

It isn't always a good idea to take as much territory as possible. Some maps have low strength and high production (or a particular part of the map like that) - it's almost always a good idea to take that territory. Some maps have high strength and low production - it's important to pick and choose what territory to take.

How do you measure efficiency? Strength / Production and Production / Territory.

You want to have as much strength and as little territory as possible compared to your production. Even if you have less production than your enemies, if you can deplete their strength faster than they can produce more, you'll win.

Mid Game

I consider the mid game to be from when you first make contact with another player until there is very little remaining valuable neutral territory. Many games end before exiting the mid game (there is lots of neutral territory remaining).

As you approach the mid game, it is important to set yourself up for success. Before making contact with another player, you should be prepared to defend valuable areas of your territory and capture valuable areas of territory from other players.

Taking Territory in the Mid Game

In the mid game, you have the option to either attack other players or attack neutral territory. When you attack neutral territory, you expend strength in order to take territory. When you attack other players, you expend strength to decrease enemy strength, take territory, and deprive enemies of territory.

Generally, it is more efficient to take territory from another player than it is to continue to take neutral territory.

So why not stop taking neutral territory altogether and just go into all-out attack mode?

If we don't want to take any more neutral territory, we may have limited "throughput" when it comes to moving our pieces into enemy territory. Due to the 255 strength cap, if you have a single "lane" into enemy territory, you can move at most 255 strength into enemy territory per turn. If you have more than 255 production, you're going to end up with lots of unused strength. If your enemy has more than 255 production, you will both be at a standstill.

If your enemy uses their excess strength to keep expanding their territory, they'll capture more and more of the map until their production advantage is too big for you to overcome.

So how can you defeat your opponent? You can either expand into neutral territory faster than them and enter the late game, or you can increase the throughput and begin the race towards 0 strength.

Usually you want to pursue a combination of these approaches. If you spend too much strength capturing less valuable neutral territory but increasing throughput, your lower production and spending might cause you to run out of strength first. If you spend too much strength capturing valuable neutral territory, you run the risk of your opponent stockpiling their strength, increasing the throughput, and overpowering you - taking that valuable territory cheaply.

This becomes even more complicated when multiple players are involved. Defending the right areas, capturing the right neutral territory, attacking the right areas, managing your throughput, and managing your strength are all critical.

Late Game

I consider the late game to last from when most valuable neutral territory has been captured until the end of the game. Not all games reach the late game.

At this point there is nothing left to do except take territory from other players. Realized production and combat performance are critical in the late game.

  • You don't want to take too long moving strength or lose strength to the 255 strength cap
  • You don't want to move pieces too often and lose production on those turns
  • You want to take advantage of overkill
  • You want to attack your enemies' high production areas

This can be the most chaotic part of the game and it can be difficult to see why some players pull ahead and others fall behind.

The right strength at the right place at the right time makes all the difference.


#2

Nice article, My bot personally uses different conditions for each strategy. A focus on expanding one tile at a time for example should be disabled way before the midgame reaches.

On the all-in attack part, It is programmed to be one of the strategies that my bot ended up never using. I've not found a single condition on where it is worth activating this strategy with my internal simulator, it all ended in a lower win ratio. nmalagutl is right that only a combination of the approaches (attack AND expand) works.

In theory there is room however for a coordinated all in early game attack, where you build up some extra strength and attack in spear formation with the goal to migrate to the high production starting area of a neighbour and form a cluster around it afterwards. Have you experimented with this?


#3

When the early game is very short (like on small maps with many players) the players that survive the initial encounter are often the players that expanded less and had strength in reserve. This is usually a matter of luck, rather than design.

My current bot is very strength heavy and there are times when I happen to take a neutral piece (or the piece between my bot and another player) that allows an enemy to invade and destroy most of my production.

As you can see, @erdman generally gets the better of our encounters.

My high strength bot generally has success in maps where expanding into neutral territory is expensive and there are lots of little tunnels between players. I go on the attack and can often overpower other players with less strength.

In maps with lots of easy to capture production, I often fair worse because other players expand more quickly in the early game and will continue to expand faster than I can damage them in the mid game.


#4

@nmalaguti Thanks for the detailed reply! I had a blast studying those games!