The Entelect Challenge, is as explained on the Entelect Challenge website:
The Entelect Challenge is an annual coding competition where students, professional developers, and enthusiasts develop an intelligent bot to play a game.
Each year, the intelligent bots developed by competitors in the Entelect Challenge play a simplified version of some classic video game.
The game for this year is Entelect's take on the classic 2D 'artillery tactical' video game by the legendary Team17... Worms!
Cover art for Worms (Windows edition).
Image is © 1994 Team17 Software
The full rules are explained in depth on the Entelect Challenge Github page, but in summary:
Each of two players, start with three worms each.
Every turn one of each players' worms can make one move - 'Move', 'Dig', 'Shoot' or 'Do Nothing'.
The map is a 33 by 33 cell grid, consisting of three different types of cell - 'Air', 'Dirt' and 'Deep Space'
I won't go into the rules in more detail here as I'll probably get into the various parts a little later in the series.
If you run the starter pack provided on the Challenge website, you can actually observe one of the starter bots play a match against the reference bot.
The output however, is a series of JSON or TXT files, representing the game state at the end of each round.
This makes for a pretty slow process of figuring out what happened during a match.
The thing we need that will allow us to read this information at a glance to understand the match flow is, you guessed it... A Visualizer!
Depending on your toolset and preference, you'd be parsing either the JSON or the text files each round, and reacting to the game state, to make a decision and issue your command for the round.
The visualizer is simply a tool to construct a visual representation of the changing game state. This is of course particularly important for the Challenge's final tournament hosted at Comic Con Africa. No crowd is going to enjoy looking at a text dump in a terminal window...
For building the visualizer, I chose Unreal Engine for a few reasons.
First, in 2018 I started building a visualizer for that year's Challenge, so I have some idea of the steps involved. Second, I really enjoy Unreal Engine want to use any chance I can to practice using the engine. Last, but not least, I like C++ so Unreal Engine would be the natural choice.
So far not much has been completed, other than choosing the engine and the approach.
In the next post, I will summarise the high level outline of what I will be doing over the course of this project, as well as taking a look at parsing the text map files needed to read the game state.