Final project - SuperTuxKart ice hockey

starter code

The final project is open-ended. The task is to program a SuperTuxKart ice-hockey player.

In agent/, implement the class HockeyPlayer. This class provides an act function, which takes an image (in numpy format) and the state of the player (ground truth position and camera parameters). You should return an action (steering, acceleration, …). random_agent contains an example of a random hockey player than just drives straight with minor random perturbations.

We also provide you with a hockey tournament script. Run it with

python -m player1 player2 ...

where playeri is any agent you code up (e.g. agent) or AI to use the game AI to play. The teams of the agents alternate. For example

python -m random_agent AI random_agent AI

sets up a match between two random agents and two AI agents.

Use the --save flag to store your agent’s output.

The rules

This project is completely open-ended, however, there are a few ground rules:

  1. You may work in a team of up to 4 students.
  2. Teams may share data, but not code.
  3. You may organize test races between each other. However, make sure to delete your agents from the shared filesystem after the tournament (no sharing of code).
  4. In our grader, your agent will run in complete isolation from the rest of the system. Any attempt to circumvent this will result in your team failing.
  5. You may use pystk and all its state during training, but not during gameplay in the tournament.
  6. Your code must be efficient (< 50ms / step for a single agent; you will have access to a GPU).

The tournament

We will play an ice hockey tournament between all submissions. Two of your agents will play an opponent. Your agents will run in the same process and may communicate with each other. Each game will play up to 3 goals, or a maximum of 1200 steps (2 minutes). The team with more goals wins. Should one of the teams violate the above rules, it will lose the game. Should both teams violate the rules, the game is tied.

Depending on the number of submissions, we will let all submissions play against each other, or we will first have a group stage and then have the top 8 submissions play against each other. The submission with the most victories wins the tournament. The goal difference breaks ties. Additional, matches further break ties.

Sanity checks

We provide a grader on canvas for you to sanity-test your codes. Submit your codes under the ‘Final Project’ assignment and the sanity-check grader will automatically trigger like the rest of your assignments. Please note that the grades posted by this grader will not not be your final grade on the project.




Once you finished the project, create a submission bundle using

python agent [YOUR UT ID]

and submit it under the ‘Final Project’ assignment. Submit your writeup as a pdf under the ‘Final Project report’ assignment.