Toroid Wars Logo

The Toroid Wars Project

5pm on Friday 1st of May.

This is a reminder of the submission deadline for all Game Programming Competition entries.

Please submit all entries by email to before 5pm on Friday 1st of May. Submissions must include both the compiled JAR and source java files.

The Final Lecture, where the league will be played out live and the winner announced, will take place on Wednesday 6th May at 3pm in Harrison room 209.


What is the Toroid Wars project?

The Toroid Wars project is aimed at getting first and second year students involved in programming outside of the workshop/lecture theatre environment. Students are invited to create "players" to take part in a game called Toroid Wars. The "players" will have to make decisions and try to use the best strategy to win the game using any technique you may want to program - such as AI. Once the "player" has been programmed, it will be put into a competition with other "players". The student who programs the winning "player" will receive a prize.

Why would you want to take part in the Toroid Wars Project?

Programming is a vital skill for computing students and this is the ideal way to hone that skill. In addition, taking part will give you an idea of what it is like to program alongside other developers - working with interfaces and programming classes that will interact with a wider encompassing application. Just to repeat this point: the student who programs the winning "player" will receive a prize. Also, as if there needs to be more incentive, it gives you the chance to program in a games environment - not only do you program but you face the same challenge many games programmers do each day. What do you think will be the best strategy? How would you program it? Will you be able to program your player to respond within the time limit?

Who can get involved?

The project is aimed at first and second year Computing students, although the competition is open to all first and second year SECAM students. Others may enter players, but you may not be eligible for the competition prize - please contact us if you are unsure.

How do I get involved?

We will be sending out a school wide email to advertise the opening of the competition and confirming the closing date. Simply reply to that email, or if you're unsure, contact us directly through the department page (contact details below).

What languages can I program my player in?

To keep things simple, and because you're taught it, all entries must be programmed in Java. You player must extend our "BasePlayer" abstract class and implement all the functions declared in the "Player" interface. We suggest you use the Emacs editor available on all Blue Room computers. Alternatively, you can use Netbeans or a similar programming IDE.

Where do I start? How do I know if I am programming my player correctly?

There is no "right" strategy but there are some functions from the interface you must implement. We will be providing an introductory lecture and weekly workshops to help you. As long as you have a basic understanding of Java, or programming in general, you should be able to make a player pretty easily. We have endeavoured to create as simple and interface as possible and offer you as many useful functions and classes as we can. We want you to enjoy making and testing you player as well as learn some extra programming skills.

Lectures and Workshops - that sounds a lot like work?

No! You're not examined and we don't expect anything from you (other than your player). This project is aimed at showing how programming can be rewarding and, dare we say, fun. You are not required to take part, though we would like it if you did, and what you get back from getting involved is entirely up to you.

How will the competition work?

All entries will be placed into a league and played against every other entry in a series of games. The number of players in each game will very much depend on the number of entries - we're hoping for 4 players per game. In addition, we (along with some other postgrads) have programmed our own players. These will be entered into the league as control players. You will get to play against our players and see if you can beat us as well as other students. Sadly, as the creators of the game, we can't win - only entrants can win the prize.

Hold Up! What is "Toroid Wars"?

Toroid Wars is an abstract game of war based on countries and units. Each player occupies a number of countries on the board. The countries are arranged in a toroidal (doughnut) shape, with each country neighbouring two other countries. A country can attack only the countries that neighbour it. It can also build units, with which it can attack, scout neighbouring countries and even transfer units from one friendly country to another neighbouring country. The aim of the game is to conquer, through attacking, all countries on the board. A player can also win, but receive fewer points, by occupying the most countries at the end of the turn limit.


Toroid Wars: The Rules - these pages explain the rules to playing Toroid Wars.

Using the User Test Suite - these pages explain how to use the test suite supplied in the Engine Distribution JAR.

Getting Started on Your Player - these pages explain the basic principles behind creating a player


Engine Javadoc (html) - html javadoc files explaining how to use the Engine interface.

Example User Player Javadoc (html) - html javadoc files explaining how to use the User Player interface and example player class.


Application Distribution (rar) - this file contains the application (distribution) JAR. This is the application and GUI for testing your player.

Engine Distribution (rar) - this file contains the engine (distribution) JAR. This is necessary for building your player.

Engine Javadoc (rar) - this file contains the javadoc files explaining how to use the Engine interface.

Example User Player Distribution (rar) - this file contains the distribution JAR for an example user player. You can load this user directly into the Application to test your player.

Example User Player Source (rar) - this file contains the source for an example user player. Use this as a example framework for your player.

Example User Player Javadoc (rar) - this file contains the javadoc files explaining how to use the User Player interface and example player class.

Alternatively, you can download them all in one RAR, here.

Resources (zip)

Application Distribution (zip)

Engine Distribution (zip)

Engine Javadoc (zip)

Example User Player Distribution (zip)

Example User Player Source (zip)

Example User Player Javadoc (zip)

Alternatively, you can download them all in one ZIP, here.

Firefox/IE Tested valid xhtml 1.1 valid css2 WAI Triple-A compliant

© copyright Kent McClymont and Maximillian Dupenois, 2008-09. All rights reserved.

We also draw your attention to the University Copyright and Disclaimer notice, here.