So I handled this year very similar to one would chess.
So I had opening, mid game and end game.
Im also adding this year so everyone can see how I broke down the actual problems
Opening:
My opening assumed nobody would mess in my own territory game start, and claimed 20 x 20 tiles
My first event entry slowly built a border around my 25 x 25 quadrent. And id have 25% of the map around tick 250.
I did however build a new bot varient that took 20 x 20 and it generally managed to infultrate my older varient before it completed. So I changed my start.
Midgame:
I had a life and death calculation
How long before I can die (Assuming enemies on my borders)
And how long till I can get back into my own life.
This also helped when i integrated powerups, Because I could just increment my life with the amount of freeze I had left. Or Unprunable.
My largest discovery here happened a week before the final deadline,
I tweaked my life function to ignore the possibility of an enemy “inside” the outer bounds.
Because as you move down from an edge, your vision of possible enemies “Holds” a few moves longer (enemies cant attack from inside the border),
This made me favour the borders more as I could claim a bit more.
The main issue I ran into is if I left this too wild I sometimes flanked myself ending in death.
So I set a perimeter variable and assigned scores to the board according to that value.
loosely I had two variables for this:
Closest unclaimed tile to my quadrent corner.
And
Map percentage owned / 2
This was also because I assumed that no enemy would be able to attack me from within the heart of my own territory.
And as I lost territory on one side my perimiter will drop and eventually my bot would circle back to its other side to “Look” whats going on.
Endgame:
For me the biggest nightmare was the Territory Immunity.
Quite frankly if someone hit you with that you were dead.
So if I had more than 10% of a score lead, and my score was over 33%,
I only allowed claims where I had an immediate exit **IE, Territory immunity was useless.
Powerups.
Freeze:
Offense: If I could kill an enemy I did
Score: I added it to my life variable so claimed larger blocks
Defense: If an enemy existed and a freeze existed in view on their land, I prohibited claims
Super Fertilizer:
If i had one Id use it to just eat away at my closest borders.
Trial Protection:
I saw no use in this powerup. Hitting my own tail was always 3 moves away,
In hindsight id rather have had this be a “emergency evacuation trigger”
That could teleport you to safety on instant use.
I tried to use it to get out of a Territory immunity but as I couldnt turn around while grabed, I couldnt use it,
Unprunable:
Basically just used it for large riskier grabs.
Territory Immunity:
This was in my opinion the powerup that I was most cautious of.
Defense:
Like with freeze, if an enemy existed and there was a Unprunable in their territory in view.
I prohibited takeover.
Defence:
I tracked the last known location of an enemy for 10 ticks.
If I got a territory immunity, Id actually go and look for enemies I saw recently.
20 ticks is a long time for an enemy to be frozen.
Theres some other weird things,
But thats the just of it all.
**Possible Upgrades.
**I can really ease my restrictions and allow my bot to eat away larger chunks of enemy lands next to the borders,
**I can use Unprunable the same way I do the borders and know that no enemy can attack from inside my own territory
Some of these have negatives as well.
Anyways,
Was an amazing year,
First year I feel like I handed in a “complete” entry.
This might help some other newer users break down the problems down the line,
As for method:
I use heuristics, simulated every possible move sequence over 7 futures.
Trimmed nonsense (Like, you cant move back, you shouldnt be on your own trial ect).
Then if a sequence completes I give it a score.
There’s probably some textbook description of the method but its a line of reasoning I built for the Entelect challenge that works very well.
And as we only had the 4 move directions, It was easier to handle than if you added other non movements in there.
Hope you all rest well,
Looking forward to seeing you all at the next one.