We all love to code, so we had a chance to participate in few AI challenges. One of the common themes among them, besides fun and pizza, were technical problems regarding the matching system. We realized we could help with this - by hacking up an engine that would simplify running AI competitions.
We spent around 120 man-hours and 10l of caffeine drinks so anyone who wants to make an AI competition won't have to.
Thus, we present:
Simple Competition Kit (.NET)
Using .NET 4.5 and WPF we have made a system that provides:
- abstraction layer over TCP/IP + JSON communication
- client(bot) technology is irrelevant
- matchmaking and simple report generation
- sample games (TicTacToe and Ships)
We believe that programming is fun and sincerely hope that our project will enable both educators and companies to make this kind of challenges much more often. Who would choose doing tests in IT classroom over building an actual, virtual, killing machine that would fight against others?
If our engine will be used at least once to make a competition - no matter how big or how small, we will consider this project to be a success :-)
Making a game in our system boils down to implementing a class derived from Game, which does
protected override IResult DoRound(IEnumerable<IBot> bots)
where bots are detected clients with which you can communicate by passing dictionary object with string key/value pairs.
Coding on a hackathon, we chose a Security-last approach (TM). Developing a secure running system with one of Virtual Machine APIs woud take a whole another ton of time. Our project is supposed to run executables that are delivered from 3rd party - use it at your own risk(preferably on VM).
Below is a repository with our code - disclaimer: you are going to find there quire a bit of spaghetti. We are not proud of our code, but we had a ton of fun during this hackathon, so Bon Appétit! ;-)
Thanks to AGHacks team for a great event! See you next year :-)