Darkcanuck/RRServer
Contents
Experimental RoboRumble Server
I found some time on the weekend and put together a database-backed RoboRumble server. You can try it here: http://darkcanuck.net/rumble/ (now in beta)
Why a new server?
Like many others, I was getting frustrated with the weird results appearing on the regular server. There didn't seem to be an easy way to fix the results, except to start over from scratch like ABC did with his new temporary server. It doesn't seem fair to new users that a single misconfiguration will corrupt everyone's results, nor to the Robocode developers where a bug in a new release can cause the same problems.
This effort is not meant to supplant the upcoming Roborumble.org, which will add many great features. But David has taken on a fairly large challenge, and I thought we needed an intermediate step in the meantime which works with the current rumble client and can help evolve the client/server system to become what Roborumble.org will eventually need.
Design Goals
- Results stored in a relational database, as close to the original format as possible
- Supports current rumble clients as-is, while allowing for enhanced clients to be created in the future
- Ability to "roll back" bad data, based on user id, ip address, timestamp or client version (in the near future). So if you goof up your rumble configuration or use the wrong version for a week or two, no data is lost.
- Extra checks added to ensure valid client configuration
- Ability to display individual battle data for any pairing (so you can see how much the scores vary)
- Ability to query more "fun" data, like daily rankings, top submitters, survivalist stats
Current State
The new server is live and has been accepting requests for just under 24hrs. My home test server has been running for several days, so it is stable but there are probably may bugs and still a number of missing features.
What's done:
- support for OneOnOne competitions (mega, mini, micro, nano)
- support for melee and team competitions **new!**
- uploading results (1.5.4 client tested)
- returning ratings file to client
- removal of participants by client **update:** now working
- rankings display for OneOnOne
- average percentage scoring
- survivalist scoring
- built-in checks for field size, number of rounds
- pairings detail incl. detailed battle results **new!**
- Glicko rankings
- ability to sort rankings table
- add check for total survival >= 35 in OneOnOne
- add check for score > 10000 in OneOnOne
What's missing:
- automatic (or semi-auto) rankings rebuild -- planned but not yet coded
- support for twin duel (but tourney format won't be supported)
ELO scoring- ability to sort pairings and battle detail tables
Known bugs:
need to work on exception handling & error messages. The rumble client is very picky about brackets in returned results so an error from the server often causes an exception in the client! The returned errors are fairly verbose at the moment for debugging.**DONE!** Very happy with new error handler class, sends short & sweet output to clients, flags for turning on/off debugging. Should no longer cause exceptions if an upload fails unexpectedlyan error during processing can cause a client to keep uploading duplicate results.**DONE!** Found the bug causing this, just some bad SQL in a case that wasn't seen until the pairings started to fill out.Will change the server to toss out duplicates with a warning.**DONE!**
How to use it
Read the list of known bugs above first! Don't connect unless you're willing to run into the occasional error and hopefully send me a bug report. Now accepting new contributors -- running smooth for my four clients for at least one week.
Just change the three URLs in your roborumble.txt file to point to http://darkcanuck.net/rumble/... And reduce the number of battles to 300 for good measure.
How you can help
Submit battle results! Your results will also be relayed to ABC's server, so if you want to contribute to both efforts just change your upload URL to darkcanuck.net and leave the other two pointed at ABC's.
I'd like to make some forks of the latest rumble clients with a few new features. Including the robocode version number in the uploaded results is the top priority.
If there's a feature you want to code and you know PHP/MySQL, let me know!
Feedback is very much appreciated.
Questions/comments?
Join the Discussion please...