Due: Wednesday, November 27 at 23:59
In this assignment you will develop an agent that plays the game Arena. Follow the link to the game's page on GitHub. The README at that page will tell you about how to run the game and write an agent.
To submit your agent, send your source file(s) to
me by email at adam.dingle@mff.cuni.cz.
You will need to modify the file agent.gd
in your implementation. You may write and submit additional source
files if you like, but may not modify any source files provided with
the game.
I will test your agent by running it at least 10 times, using a different random seed for each game. To be fair, I will use the same random seeds when testing the agents submitted by all students.
To pass the assignment, you need to write an agent that scores at least 300 points on average in my testing games.
In your agent, you may use any Godot features you
like except A* and navigation classes (i.e. the classes
Astar2D
, NavigationServer2D
,
or other classes whose names begin with Astar
or Navigation
).
The game runs at 60 frames per second. Your agent must always return an action before the current frame ends, i.e. within about 17 ms. If your agent takes longer than that, it will cause visible lag and I will not accept it. I will test your agent on my notebook, a typical mid-range machine (specifically it's a Dell Latitude with an Intel i5-1235U processor running at 3.3 Ghz).
You may create background thread(s) and run code there if you like, as long as they do not lag the game.
I expect that most students will write all code in GDScript. However, there is a Godot build that also supports C#. If you want to write C# code and call it from your top-level GDScript code, that is OK with me (and could potentially give you a performance boost).
The students with the top 3 average scores over my testing games will receive a bonus point on the exam.
Additionally, I will publish a list (e.g. by email) of all students whose agents scored in the top 30%, along with their average scores.
Good luck with the assignment, and have fun!