Landslide – A Challonge Addon
This past weekend I helped run AVCon, Adelaide’s local Anime and Video Games convention. For the first time since 2010 I also took charge of running the Smash Bros tournament at the event.
Although I like writing tournament management systems, this year I didn’t really have the time for it. Fortunately for me, Smash Bros. has been running as a 1v1 format for the last few years so I was able to fall back on trusty ol’ Challonge.
Challonge has bracketing and result reporting down-pat, but I’ve always felt that it lacks a crucial tool – indicating which station a match should be played on. After running tournaments in 2013 I was tempted to write a database to sit between Challonge and my players and create an interface where I could associate matches with console stations.
Fortunately for me in June of this year Challonge rolled out a change that allowed users to set match locations… even if it’s buried away in the interface a little. It wasn’t ideal, but with a little JavaScript hax I was able to very easily turn it into what I wanted. I wrote some JavaScript that modifies the Challonge tournament management screen to do two things.
1) Display a set of numbers representing the stations on which games should be played on.
2) Allow highlighting of matches to indicate that they are up “now†or “nextâ€.
Consistent with my trend of naming projects after disasters, this script has been dubbed “Landslide”.
Installation Instructions
You need to find a way to run User Scripts in your browser. This script was tested and run with Greasemonkey on Firefox, so instructions will be for Greasemonkey.
Start off by installing Greasemonkey.
Grab this script – it’s where all the magic happens. Copy it to your clipboard.
Now in Firefox, navigate to the Greasemonkey dropdown and select “New User Script…”.
A few options come up – ignore them and click on “Use Script From Clipboard”. A window will appear with the script in it – save and close it and the script should be installed! You may need to refresh pages for the changes to take effect.
You can verify that script installation works correctly by checking out one of my tournaments and verifying that each game loads up an @[number] underneath its lettered match-name.
Usage Instructions
Mouse over match IDs to bring up a modified menu. The menu will display a few new things: “Toggle Highlightâ€, “Clear Station†and a series of station IDs. The IDs are by default set from 1-8. I haven’t really put time into customising the numbers but you could edit the script to make the station IDs appear differently if you wish.
Selecting a number will set the match location as an @[number] indicator, underneath the letter-name that Challonge assigns for the match.
Toggle highlight will set a match from no highlight, to yellow, which means there is a match on next.
Toggling a yellow highlight will turn it red. Toggling a red highlight will clear the match highlight AND will also automatically upgrade a match that is set up as being “next” (yellow) on the same station to be the new “now” (red) match.
Finally the script will attempt to stop you from setting two matches on the same station to both be on “now” or “next”.
How does it work?
I push the data into the “location” field of the match. You’ll see locations for matches set as something like 3|next
Because Challonge stores this data, match locations can be reloaded when you refresh the page!
Warnings
Do not modify location manually – this will probably cause the script to desync.
If you have any problems with the “state” of the script – it might get confused about which stations are active if a certain sequence of data entry occurs – just refresh the page and it should reload your data.
Closing thoughts – how did it go for MY tournaments?
Having the Station IDs accessible for matches was invaluable. As I was calling up players for their games, many would hear their names but wanted to confirm where they needed to play. Last year, I’d flail around counting down the bracket or call out “uh, is [opponent name] here?†then send the player asking me where they needed to go to whoever had their hand up. This year, I was able to immediately tell them “You’re on Station 5â€. I feel it saved a lot of time and confusion.
The “now†and “next†highlighting wasn’t really as useful due to the speed at which games were being completed, and please note it is buggy due to its last-minute inclusion. But it wasn’t totally useless – when I forgot to input results the script would tell me that I had matches already active and I could then ask “Hey could [player] and [player] who played on [station number] confirm who won their match?â€.
There is of course room for improvement – for example, matches don’t automatically toggle out of being on “now†when results are recorded. But it was hugely useful for me this last weekend and I think worth sharing. If you use this for nothing other than the Station number then I think you’ll still find it amazing.
Feedback and forks are welcomed. I hope you find this script useful.