Badminton Tournament TourneyTools
Here’s an outline of the whole process, from registration to post-tournament reporting, in terms of TourneyTools, a suite of programs and scripts to aid in running such a tournament. I hope to flesh this out sometime later, after the tournament no doubt. The notes will be a bit technical, and still incomplete and opaque in places:
- assume you have a web server running
- write a registration form, e.g. using HTML form. Look at this for one of my recent examples.
- write a CGI-script that will process the above form by sending a set of keyword=value pairs via an email message. See my example dcopen.c, a small C program that compiles with the apache source-code, but needs their util.c to complete the link.
- Here is a version was written in Perl, that we used for the senior nationals: seniors.pl. It contains a few stupid redundant buttons (e.g. number of events, sum/sum1/sum2) which should have been computed from the entered events.
- manually, or via procmail, place the incoming emails in a special mail folder for further processing. this mail folder will be the database.
- Here comes the dirty work: players cannot spell their own name, let alone that of their partner. some don’t even know first from last name (that’s cultural to begin with), they are not consistent in use of upper, lower or use of capitalization. some of it can be programmed, but most not. Basically, you will need to edit this database. To allow users to edit their own entry after submission is asking for trouble. An expert needs to do this. A set of scripts (described below) will help to identify these problems.
- A set of scripts and programs will do most of this checking. For example, it will create a list of each event with the teams, and in the case of a (mixed) doubles, checking if player A and player B both registered with each other as partner and encoding errors in the output. In this example, you can see how it came raw out of the database.
- Pairs of teams, where this is possible, are made up, and a complete list of teams is studied by the seeding committee. They will come up with a 1st, and 2nd seed, and depending on the size of the draw, a 3/4rd seed and shadow seeds for the 5th-8th places. The remainder of the players is more-or-less randomly (resolving some geographic conflicts) sprinkled into a (predefined set of points of the) draw. Here you can see the sorted list, I’ve added some comments in the form of lines that start with the # symbol.
- A program makes draw turns this ranked list into a draw. This is again a simple ASCII file, but now containing the location of the players in this draw. Again, you can comment your files for personal usage. Version 0.8 (March 2002) now correctly implements the IBF rules for placing byes in the draw for any arbitrary size draw using a nice little recursive formula I happen to empirically derive. See comments in the code.
- A program draw plot turns a draw into a human-readable plot, which can be annotated and filled in during the tournament at the desk. Normally we now keep a laptop/computer at the desk, and as matches have been played, fill them into this ASCII file. Once all the draws have been filled out, draw plot can also compute some simple statistics, such as the number of matches played etc.
- The draw plot program can also generate a list of all players that lost in the 1st or 2nd round. This has always been the way we create A/B/C/D drop-down events, and can be very rewarding for the players, but is a major time sink for the tournament desk. Now creating a list is just a snap. The list has only to be sorted by strength of the players, and fed into make draw to create the dropped down to draw.
- Another nice idea is the express check-in. Those who pay in advance, give the correct USAB number, and sent in the consent form, will get priority check-in, and receive a red card. All other players need to be processed at registration time before they get the red card. Only red card holders will be allowed access on the courts. The red card contains also their events. It can also be used for other purposes (e.g. a lottery ).