Extrarius's RoShamBo Programming Competition

Competition Background

On seeing the International RoShamBo Programming Competition website, I was dissapointed to see that the page had last been updated in over 4 years ago. I believed it would be an interesting competition, so I decided to start my own. I quickly created a simple RoShamBo framework of my own in C++, and I issued the challenge on GameDev.Net and AnandTech.

The Game - RoShamBo

RoShamBo is a simple turn-based game for two players. Each turn, both players select a throw (either "Paper", "Rock", or "Scissors") simultaneously. If both players selected the same throw, then that round is counted as a tie and scores remain the same. Otherwise, "Paper" beats "Rock", "Rock" beats "Scissors", and "Scissors" beat "Paper". The player with the winning throw receives +1 point, while their opponent receives -1 point. The number of turns is arbitrary, but most often play is limited to a single turn.

It may seem that there can be no strategy to such a simple game. When playing in real life, strategies involve psychological and physical trickery, but in a computer such things are of no use. How, then, can one computer program conclusively win a tournament? There are two parts to the answer - first of all, selecting random will give an approximately equal number of wins and losses, so that the final score would be very close to 0 and thus it isn't a very good strategy. Second is the fact that there are already some computer opponents included that are guaranteed to use some kind of strategy - the sample bots. Since they don't use very good strategies (for example, one will always use the throw you used last turn), it is possible to get a higher score by taking advantage of their poor strategies. If your program noticed it was playing against 'CopyBot', it could always counter the throw it made last turn and win every time.

Current Competition Status

The first deadline of the competition wass April 10th, 2005 1:00 AM Central Standard Time, but no entries were received. I'm working on restructuring the competition to help encourage participation in any future versions.

Competition Rules
  1. Each bot will play matches consisting of 10 rounds of 10000 turns each against every other bot
  2. Bots will be ranked according to the number of points it accumulates over all rounds
  3. If a bot causes a round to take longer than 2 minutes, that bot may be disqualified at the discretion of competition judges
  4. Bots must be e-mailed to the address in the framework source code before April 10th, 2005 1:00 AM CST
  5. Either the code should have comments explaining the algorithms and approaches used, or the email should include such text
  6. Multiple entries from the same author are allowed as long as they are entirely seperate and do not assist eachother.
  7. Your code must work with and use the most recent version of the competition framework (found below)
  8. Your code should be standard C++ source implementing a concrete child class of RoShamBo::Bot
  9. Your code must be licensed in such a way that it can be distributed on this contest website and modified by future competitors
  10. Your bot may consist of at most two files (C++ header file and C++ source file) with the same base name and extensions .h and .cpp
  11. The files must have a combined size of less than 30720 bytes when using standard 2-character windows line endings
  12. Any exceptions caused by your bot's code must not propogate outside of your bot's code
  13. Your code must be deterministic - two rounds against the same opponent must have exactly the same results (when reset with the same seed before each round)
    This means that the bot cannot use external variables, such as time or the C random number generator (use the RandGen class instead)

All rules are subject to change without notice, and further criteria beyond the posted rules may be used for judging.


Extrarius's RoShamBo Programming Competition Framework v1.1.0 (March 29, 2005 7:00 PM CST)


If you have any questions, comments, or suggestions reguarding this competition, you can contact me (Extrarius) using either the e-mail address in the framework (above), or by sending a private message to Extrarius(on GameDev.Net; on AnandTech).