What fun it is to play backgammon on FIBS. People from every corner of the globe, from beginners to world class players, available for simple games and chatter or for serious high level matches. But every once in a while one wishes that there was something else, something more competitive than just strings of non-related matches...
This is where TourneyBot tries to help. TourneyBot is an automated tourney manager. It is a non-playing bot that can organize and manage tourneys. It advertises scheduled tourneys via shouts, registers players, draws the match-ups, records the score and declares winners.
standings fridays3to it. Added two new commands:
standings, as well as changed the
tourneyscommand to filter the output, so make sure to check the command reference.
A Tourney Director creates a new tourney of a pre-defined type and then sets its properties, like name, required number of players, match length, description etc.
Once she opens the tourney, players start registering for participation. They do this simply by sending a tell to TourneyBot.
The Tourney Director starts the tourney once enough players sign up. TourneyBot then calculates the match-ups and notifies the players on who their opponents are.
When a pair completes a match, TourneyBot tries to automatically register the result and take appropriate action (advance the winner to the next round, eliminate the loser or similar). It keeps doing that until the winner is determined, at which point it closes the tourney and announces the winner. I think that's about it in a nutshell.
This section provides a quick introduction to using TourneyBot. If you're interested in detailed description of all commands that the bot understands, you should check out the Command Reference.
To get the list of available tourneys, you need to send the
command to the bot:
tell TourneyBot tourneys
TourneyBot will then send the list of current tourneys, one per tell.
For example, a possible response might be:
[bracket] MadMatt's Simple Tourney| |Directors: MadMatt| |Status:
Finished listing current tourneys.
The above means that there is currently one tourney, namely Tourney #7, which is of type bracket (simple single elimination tourney). The tourney's name is MadMatt's Simple Tourney, the Tourney Director is MadMatt and sign-ups are currently possible.
If you want more information about Tourney #7 before you sign up for
tell TourneyBot tourney 7
TourneyBot's will send back something like the following:
Displaying information about Tourney 1:
[bracket] MadMatt's Simple Tourney| |Directors: MadMatt| |Status:
players: 4 Max players: 16 Registered players: 9 (7 spots left)
length: 1 Match length finals: 3
Description: This is a simple single elimination tourney. All matches
are 1 pointers
except for the final one, which is a 3 point match. If you lose
connection while playing a tourney match, you have 10 minutes to come
Should you fail to do so, your opponent will be awarded a win.
displaying information on Tourney 7.
Once you decide to register for the Tourney #7, all you have to do is:
tell TourneyBot register 7
If you meet the requirements, TourneyBot will register you for Tourney #7.
have registered for Tourney #7. You will be informed on who your
first opponent is as soon as the tourney starts.
From your perspective, this is pretty much it. Now, every time
something important happens in the tourney (it's been started, you win
or lose a match, your next opponent is determined etc.), you'll get a
message from TourneyBot. For example, when the bot draws your match,
you'll get something like this:
Message from TourneyBot:
T7R1M3: You (1629.45) vs. TwoTimesCharlie (1411.9)
The message says that your opponent in Tourney #7 Round 1 Match 3 is TwoTimesCharlie, whose rating is 1411.9.
When you've finished playing your opponent, TourneyBot will
automatically register the result. If it fails to do so, the
loser has to report the result with the
command, like this. Let's say, that in the above example,
TwoTimesCharlie lost the 1 point match 1-0 and TourneyBot was having
connection problems and therefore wasn't online to register
the result. TwoTimesCharlie should issue the following command:
tell TourneyBot report loss 1-0
You should then receive confirmation that you won the match.
If you want to get the match-ups for the current tourney round, you
tell TourneyBot current 7
And the response should be something like:
Tourney #7 Round 1 (match length: 1):
xyz (1705.0) vs. abc (1585.31)
Yodelboy (1401.1) def. ttyyzz (1614.93) 2-0
You (1629.45) def. TwoTimesCharlie (1411.9) 1-0
of 3 completed.
Finished listing Tourney #7 Round 1.
If you want to host your own tourneys, you need to appoint yourself as
a Tourney Moderator. You can
do that by telling TourneyBot
moderator. It will only work
if you have a FIBS experience of 1000 or more. Be warned, however, that
running tourneys (properly) might
be more work that you would have believed beforehand. Fortunately, it
can be quite fun and rewarding, too.
Right, once you're appointed moderator, you'll probably want to run
your own tourneys. To do that, you first have to
create one, like this:
tell TourneyBot create bracket
bracket is one of the tourney types that TourneyBot supports. (It's an unseeded single elimination bracket tourney). TourneyBot should respond:
The important thing to note is the Tourney number, which is 9 it the example above. Most director commands require that you specify this number so that the bot knows which tourney to apply the changes to.
Once you've created the tourney, you'll probably want to customize it a
bit. To change the tourney's name, use the
rename command. To change the long
To set minimum or maximum
number of players, use the
commands. To appoint someone else as
a Tourney Co-Director, use the
They're all described
An example: to change the match length of every round but the final one
to 3 (default is probably 1 for most tourney),
tell TourneyBot matchlen normal 3
To set the match length of the finals to 5, do:
tell TourneyBot matchlen finals 5
When satisfied with your customization, you can open the tourney for
tell TourneyBot open 9
TourneyBot will announce to FIBS that Tourney #9 has been opened and people should start signing up for it. You can check who has registered with:
tell TourneyBot players 9
LuckyLuke, JohnnyBGood, marvelous, Ishtar, modest, Citrus
listing Tourney #9 players.
To start the tourney (note that you can only do so when minplayers
<= registered players <= maxplayers), do:
tell TourneyBot start 9
TourneyBot will calculate the match-ups and inform the participants via messages. Everything from here on should be automatic if everyone abides by the rules.
However, if a tourney participant fails to do so, you can award a win
to his opponent. Let's say
marvelous and LuckyLuke are paired in Round 1 of Tourney #9 and
LuckyLuke fails to show up on time.
Here's how to award the victory to marvelous:
tell TourneyBot award win marvelous
3-0 round 1
awared a victory to marvelous in Round 1 of Tourney #9.
A lot of functionality is planned for TourneyBot. Whether or not these will be added depends mostly on two things - my time and TourneyBot's popularity. Obviously, if TourneyBot becomes an accepted FIBS feature, I will be motivated to keep improving it. So, if you want it developed further, keep using it!
tell TourneyBot help)
Important: If you're organizing FIBS tourneys and would like to see your tourney type supported by TourneyBot, send me an email. Make sure to include all the relevant information, especially the format of the tourney and all the propertis (minumum and maximum number of players, match lengths, rating requirements, how to calculate match-ups etc.)
TourneyBot currently supports the following types of tourneys:
This is the most common tourney type, a single elimination bracket tourney for anywhere between 2 and 128 players. If the total number of players does not equal 2^n, then some players will be given a "bye" in the first round, automatically transferring them to Round 2.
When a participant loses a match, he is eliminated from the tourney. The winners advance to the next round until there is only one undefeated player left. That player then wins the tourney, while the other finalist is the Runner-Up.
The distribution of participants into brackets is random (which means that byes are random as well).
Double Elimination differs from Single Elimination in that every player has to lose twice before being eliminated from the tourney. On the first loss, a player is transferred to the lower (=loser) bracket where they continue to play until the second loss. The winner of the tourney is the only player left with one or no loss.
A popular FIBSLeaGammon event, Fridays3 is a single elimination tourney with 3 point matches (5-pt finals). It is held every Friday at 15:00 UTC. Detailed rules can be found here.
A special feature of this tourney is that it keeps monthly
for players - at the end of the month the overall
monthly winner is announced. TourneyBot keeps tracks of the standings
and calculates how many points to award to
each player at the end of each tourney. You can see the current
standings by sending
These are held several times a week in the standard single elimination format, for the purpose of forming country-specific teams for the FIBS World Cup. See the official web page for more details.
If you're a coder trying to develop a FIBS bot/client, or if you would for some strange reason like to run your own copy of TourneyBot, you can download either the latest stable release (1.0 stable, not recommended, as it is obsolete) or the current beta (developers' preview) release 1.5beta6. The latter includes the free moderator system and the SpamGuard improvements. If you do not wish to get those, check out 1.4beta5.
The very latest code that might not even work and has not been released yet, can be checked out from the CVS repository.
To run it, you will need to install a Ruby interpreter.
FIBS Board kindly provides a forum for discussing TourneyBot.
TourneyBot-info is a mailing list for the of everything related to TourneyBot, automated tourney management and even FIBS in general.
You can subscribe here and you can find the archive of past messages here.
Email Tom Moulton directly, Email MadMatt directly, use the forum or subscribe to our mailing list, then email your message.
Back to the top
Last update: 21 January 2008
Created by: mkejzar
Maintained by: Tom
Hosted at FIBS Board and Rubyforge.