From 2017 to 2021, I worked as a head TA for COMP30024 Artificial Intellience, an introductory AI class at the University of Melbourne.
Each year, I developed an original board game for the students to play. Well, it's for their computers to play, but, if I do say so myself, some of the games end up being fun for humans too!
Anyway, over a few weeks, the students work in pairs on the challenging and open-ended task of creating a Python program capable of playing the game as adeptly as possible. We typically run an official tournament at the end of the semester to find out which teams have achieved this goal most convincingly. Alongside the project, we also provide an online battleground server, enabling the students to compete during the semester without sharing code.
This repository documents these games, and the projects, and includes some of the associated code.
The games from my tenure as head TA, back to 2017, are more-or-less documented, with only a few missing pieces.
See TODO for more info.
- 2021 game: RoPaSci 360
- 2020 game: Expendibots
- 2019 game: Chexers
- 2018 game: Watch Your Back!
- 2017 game: Slider
- 2016 game: Hexifence
RoPaSci 360 is a simultaneous-play board game of chance and anticipation in the spirit of the storied hand-game known by many names throughout the world, including Roshambo, Jan-Ken, and, of course, Rock-Paper-Scissors. Throw down a team of tokens with which to crush, cover, and cut through your opponent. Attack them when and where they least expect it, but be quick to slip away or you won't escape their retaliation! Have you anticipated your opponent's next move, or are you thinking exactly what they want you to think? Rock, paper, scissors, throw!
In 2021, we played RoPaSci 360, a simultaneous-play board game inspired by the hand-game classic.
Contents:
- The rules of the Game of RoPaSci360 [rules pdf]
- A javascript implementation courtesy of Rowan Warneke [hosted version] [source repository]
- The warmup project, to solve a single-player variant using non-adversarial search algorithms [specification pdf] [template code] [test cases and test creator] [sample solution]
- My bonus lecture on extending adversarial search techniques to simultaneous-play games [slides pdf] [recording]
- The main project, to build a program to play the game [specification pdf] [driver and template code]
- The online RoPaSci 360 battleground implementing the Random Online Portable Adversary Server Connection Interface (ROPASCI) protocol [instructions pdf] [client and server code] [logs and CPU players on request]
- The class tournament where 128 programs competed in a single-elimination
showdown. Congratulations to the champion team,
FiveYang
! [results repository]
This year, over 33,200 games were played on the battleground server, comprising about 18,900 games against the greedy benchmark, 8,800 games against the random benchmark, and 5,500 games between students. Wow!
Expendibots is a fast paced action game where assembling and disassembling powerful stacks of bots will be the key to your survival. Sneak behind enemy lines and cause chain reactions to do huge damage, but watch out for friendly fire! Can you successfully fend off your opponent's attacks and emerge victorious?
In 2020, as I completed an exchange semester when I would normally be teaching COMP30024. Over summer, I teamed up with my replacement head TA Adam Kues to design and implement Expendibots, one of our most dynamic, challenging, and exciting AI games since my first semester.
Contents:
- The rules of the Game of Expendibots [rules pdf]
- The warmup project, to solve a single-player variant using non-adversarial search algorithms [specification pdf] [template code] [sample solution]
- The main project, to build a program to play the game [specification pdf] [driver and template code]
- The online Expendibots battleground implementing the Battle-Oriented Online Match (BOOM) protocol [client and server code]
- TODO: Add Expendibots concept art or animation.
Chexers is a three-player hexagonal turn-based race game. Test the loyalty of your band of two-faced checkerpieces as you charge them through a twisting and treacherous battleground. Will all your pieces stay true to your cause? Can you earn yourself some new followers in the chaos? To win this tumultuous chase, you must double-cross and triple-cross your way across the finish line before your opponents---three, two, one... go!
In 2019, we played Chexers, a three-player hexagonal board game where players can convert their opponent's pieces as they race across the board. The game turned out to be pretty playable, with the three-player dynamic making it especially fun.
Contents:
- The rules of the Game of Chexers [rules pdf]
- The warmup project, to solve a single-player variant using non-adversarial search algorithms [specification pdf] [template code] [test cases] [sample solution]
- My bonus lecture on extending adversarial search techniques to n-player games [slides pdf]
- The main project, to build a program to play the game [specification pdf] [driver and template code]
- The online Chexers battleground implementing the Centrally Connected Competitive Chexers Client Control (C-hex) protocol [client and server code]
- TODO: Add Chexers animation
Watch Your Back! is a fast-paced combat board game. You control a team of ruthless rogues engaged in a fight to the death against your enemies. Within the confines of a checkerboard there is no rulebook and no referee, and the easiest way to a cut down an enemy is to stab them in the back. Control your lawless warriors to jump and slash their way around the board surrounding and silencing your enemies until none remain. And, of course, watch your back!
In 2018, we played Watch Your Back!, a two-player board game based loosely on the ancient Ludus latruncolorum.
- The rules of the Game of Watch Your Back! [rules pdf]
- The warmup project, to solve a single-player variant using non-adversarial search algorithms [specification pdf] [test cases] [sample solution] [FAQ]
- The main project, to build a program to play the game [specification pdf] [driver program]
- The online battleground implementing the Watch yoUr Back! Player Protocol (wubpp) [client and server code]
- TODO: Add concept art
- TODO: Dig up tournament recording
In 2017, we played Slider, a two-player race and blocking game. I did not design this game (it was based on a much earlier 2003 project), but it served as an inspiration for Chexers of 2019.
- The rules of the Game of Slider [rules pdf]
- The warmup project, to analyse a static game state [specification pdf] [test cases and test creator] [sample solution]
- The main project, to build a (Java) program to play the game [specification pdf] [driver program]
- The proof-of-concept online playground for remote matchmaking and play [client and server code] [demo video]
- TODO: Dig up tournament recording
In 2016, I was not the TA for COMP30024, in fact I was one of its students. The game this year was Hexifence, a hexagonal variant of the pen-and-paper game Dots and Boxes, and the project was completed in Java.
I worked with my project partner Julian Tran to develop a program using basic adversarial search techniques, some specialised game tactics ('double boxing') and a high-level represetation of the board (chunking the board into tactically-relevant 'chains' rather than searching over individual edges). With our high-level representation, we were able to obtain excellent search depth and to out-perform our cohort.
Contents:
- Our project work is, somewhat cringingly, publicly available in another repository.
- That repository also includes the rules of the game and the project specification.
- TODO: Add animation of our program
- For some more files, check AI 2017 and 2018 files in archives.
- matomatical/ai-games-unsorted:
- some animations of WUB!
- 2017 and 2018 tournament finalists
- 2017/2018 lectures: tournament recordings
- matomatical/ai-games-unsorted:
- Compile a 'hall of fame' with information about the winners of each year's tournament.
- Search for public github repositories of students' work, and add them to a list here (with permission).