DISC - SuiteBot II

Starter package

The game engine uses a client-server architecture. Bot AIs run as simple servers. The players move all at the same time. Before first round your AI will receive the game setup in its constructor. In each round, the game engine sends the game state details to the bot servers. The servers respond with their moves. That way, each bot server knows the game situation and can react.

Please note that the moves on the diagram are only for illustration. FIRE, JUMP, and DUCK may not be valid moves in the actual game.

Though it's not difficult to write the whole bot server from scratch, to make your life easier, we have prepared starter packages, which take care of the server infrastructure. When using a starter package, all you need to worry about is the game strategy -- the AI. Starter packages are available for Java 8 and Python 3.5.

Starter packages don't contain any game rules and provide just simple network communication. You will be provided with an upgrade to the starter package after the game rules are made public. The upgrade will be a zip file containing new and modified files.

Creating a repository

You will need a Git repository for your AI code. We recommend that you use Bitbucket where all the starter packages are hosted. Bitbucket is a Git hosting service similar to GitHub, but unlike GitHub, it provides free private repositories.

On Bitbucket, you can create a fork of selected starter package by clicking one of the links below.

Providing access to your repository

We'll need read-only access to your repository so that we can build and run your code. You can keep your Bitbucket repository private and only give read access to the user jan_simonek (Settings > User and group access).

Once you are done setting up the repository, email its address to [email protected].

Implementing your AI

We will explain this on Java. It's analogical for the other starter packages.

You will need to implement the BotAi interface and modify the BotServer so that it uses your own BotAi class instead of the default SampleBotAi.

Of course, you won't be able to implement anything meaningful until you know the game rules, which won't be revealed until the competition starts. Please do not waste too much time trying to guess what game will be played from the interfaces. We are fairly confident that you won't guess correctly. Still, feel free to write any code in advance.

Testing your AI

We won't provide you with the game engine. Therefore, you won't be able to let your AI play by yourself. You will only see it perform in each round of the competition. There will be several rounds and the matches will be publicly screened.

Since you can't run your AI, it will be difficult to make sure there are no bugs in your code, unless you have good test coverage. We encourage you to write a lot of unit tests and, ideally, use test driven development. Writing tests will definitely slow you down and we don't guarantee it will pay off. However, from our experience, simple correctly implemented strategies can be very successful. Advanced strategies with bugs, on the other hand, often fail.

In case of more advanced strategies, it's a good idea not to limit yourself to testing the top-level class (your implementation of the BotAi). You may want to unit test your helper classes as well.