Finals! Done and dusted

I want to take a moment to thank the Entelect team for hosting yet another amazing Challenge this year. I had an absolute blast coding my bot, and the finals at Comic Con was an great experience!

A special shoutout to @deefstes and the entire engine team for all the hard work behind the scenes. You put in countless hours to give us a smooth, stable platform to compete on, and it showed. Dewald, I really hope we see you back again next year!

To my fellow finalists: thank you for pushing me all the way. Huge congratulations to @WillieTheron on taking the win again — back-to-back titles is an incredible achievement!

Congrats also to all the new faces in the top 8 — I hope each of you sticks around, because the community is stronger with you in it.

If possible, I’d love to ask the Entelect team to share a few things from the finals:

  • The full finals leaderboard with scores

  • Any photos or videos captured at Comic Con

  • The visualizer used in creating the finals highlights

I honestly can’t wait for next year’s challenge. Until then — thanks to everyone who made this year unforgettable. Rest up, reset, and then we go again! :rocket:

@3INX @natash @lijani_vwdv

5 Likes

Congradulations for making the finals ! Was my first competition this year (after a few failed entries), and although i joined fairly late, i enjoyed the experience and the community.

Would you perhaps be interested in sharing your strategy? I’m curious to see how others approached this challenge.

No troubles with Strategy on my end:

I assigned every tile with a score and then simulated all moves ahead for 20 rounds,
I will go a bit deeper into how I approach the actual game state data beforE the next event.

The quick version is:
I store all information in a 2 Dimentional array,
Say m[y][x ]and this contains map state,

And I can go example:
m[y+1][x ] to look below.
Use for loops to scout ranges.

Then for actual strategy for 2025.
Zookeepers:
This was my highest priority, Avoiding getting caught,
I had a score offset based on my moves to a tile vs the zookeeper move to a tile if it was closer than 5,

And I also offset all tiles based on if they were closer to the zookeeper than another animal,
Seemingly staying in the zookeeper blindspot,

Which allowed me to move towards powerups without needing to navigate Zookeepers as badly.
I also adjusted points slightly based on distance from the zookeepers, So I tended to draw away from them completely.

Scavenger:
Min Maxed, If it existed I chased it down with my everything,
When i had it I looked at every possible position in the next 10 moves and calculated the best tile to set off the scavenger and moved towards it.

If I was on the best (or the best - 3 threshold) accounting for moves made (as you move you eat pellets)
Id set it off, and then while its active, set my moves according to the pellets I could eat.

Sometimes hitting 70+ pellets for the first round,
Typically getting between 70000 and 80000 points per scavenge fired.
Also only used it with momentum, That was a pretty hard rule on my end, dont ever stop to use powerups.

Power Pellet,
Treated as a normal pellet x 10,

Boostjuice
Min Maxed
Treated as pellet x 15, if i could use it, had max point gain, momentum and next tile was a pellet id use it,

Cloak,
I had a somewhat accurite function that tracked what zookeepers was chasing based on their moves,
So when i though I was being chased by a zookeeper id use the cloak to divert them,

Id use a powerup if Id run into another powerup,
Though id only use a scavenger this way if I could pick another one up,

For the best part I recycled powerups as soon as I got them, Powerups repeled powerup spawns so it was best to try and take them if they were in your territory,

I tried to not miss smaller pellets either,

The Psychology was pretty minor,
I did assume that players will not get caught too much,

After T2 I thought about the powerup aggression and scavenger availability,

But concluded that everyone was in the same environment and I got most scavengers so I should have a placement and aggression advantage going into the finals.

I also ask what will perfect bots do.
But for the best part perfect bots will avoid zookeepers, pick up scavengers, Use them well, and try and keep their score streaks going.

So I did look at minmax,

In 2019 I wrote a suicide function, Because I though another player would leave worms alive,
Thats more psycology, when you try and use what other players will do (or how the top 8 Bots will play) against them,

Sometimes strong bots have weaknesses because they are strong.

Last year is a good case study on this.
A very strong top 8 bot will never over extend early on,

So a safe bot would have claimed a 15 x 15 territory game start,
Cause you can almost assume that the top 8 bots will not be wreckless enough to jump into your territory,

So I did a 20x 20 claim gamestart,

I took more land round start assuming how safe other bots would play,

Thats also a aspect to consider,
If its rock paper scissors,

If you you need rock to beat scissors cause thats majority,
Then switching to paper in the finals can be an edge after rock took out all the scissors.

Theres always a degree of this in the challenge,
”Dont just play the AI, play the mind behind it”

Like with Battleship, where perfect probability becomes the weakest strategy.

Thats generally the levels to my approach,
I look at every individual aspect, try and minmax it,
Weigh them by priority,

And try and counter both Human and Machine nature.

As for method,
I use my own JS functions, Most years I just write everything from the ground up.
A single JS file, No external dependencies,

**Part of my goals are: How small can I make the file (Efficiency above all),

And then I use for loops, ifs, arrays,
I dont think i do anything strange, but I have been developing my own style over the last 10 years.

1 Like

Good Morning,

Very well done on that visualiser by the way… It was pretty nice,
I do feel like a lot of the challenge was solid this year.

What id like to request from my side,
The format worked really well at comic Con,
But itd be cool if everyone had access to all matches afterwards to see what they could have done differently.

Know we are outside the Challenge season and look forward to seeing what you guys throw our way next year,
With the exception of my Round 1 mishap, I had a pretty good year,

But as with all things in life,
Would I have taken first place if I didnt get tossed around in the friendlies? Probably not.

Looking forward to next year,
This year was a good year for me to improve my general approach to Game AI,

Going to help me a lot with the game world im building.

1 Like