Final project - SuperTuxKart ice hockey
The final project is open-ended. The task is to program a SuperTuxKart ice-hockey player.
agent/player.py, implement the class
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 tournament.play player1 player2 ...
playeri is any agent you code up (e.g.
AI to use the game AI to play.
The teams of the agents alternate. For example
python -m tournament.play random_agent AI random_agent AI
sets up a match between two random agents and two AI agents.
--save flag to store your agent’s output.
This project is completely open-ended, however, there are a few ground rules:
- You may work in a team of up to 4 students.
- Teams may share data, but not code.
- 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).
- 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.
- You may use
pystkand all its state during training, but not during gameplay in the tournament.
- Your code must be efficient (< 50ms / step for a single agent; you will have access to a GPU).
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.
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.
- 40pts originality of the idea. How many things did you try? Do you understand how your strategy works?
- 30pts average number of goals scored per game. Linearly from 0 to 1. We will compute the average against the game AI or the rest of the class and use the better of the two.
- 30pts writeup. Structure of the writeup, exposition, how well is the idea motivated and explained.
- 15 pts extra credit for the top 3 teams in the competition (15pts winner, 10pts second, 5pts third).
- Test your code on a Linux machine (either CS lab or colab).
- We will organize several mock tournaments before the final tournament. Make use of them.
Once you finished the project, create a submission bundle using
python bundle.py agent [YOUR UT ID]
and submit it under the ‘Final Project’ assignment. Submit your writeup as a pdf under the ‘Final Project report’ assignment.