We had a couple of great questions on RPA tournaments over the first week – I thought I’d clarify a few things here.
As many of you know, the main tournament (with prizes) is limited the US residents. This is for legal reasons as I explained in this post. But, we wanted to get the framework in place to expand – and I’m thrilled to say that we’re there (how’s that for fast implementation?). Currently, when deploying bots, you’ll see other rounds that are open – for example, on the MyBot page:
Currently, only US residents can enter the Tournament Round but everyone (including MSFT employees) can enter the Open Rounds. As other groups in varies locations put together tournaments, we are happy to support that effort.
Resubmitting – not fair?
One question received was from a player who thought he noticed several players resubmitting their bots rapidly without modification in order to force their bots to replay, and hopefully do better due to random elements they’ve built in their bot. Obviously, with random elements in your bot, you can win some games and lose others that will cause your bot to fluctuate position.
To be clear, it doesn’t matter and this completely okay/fair to do. Here’s why: the games are played during the week in near real-time. On Friday at 2pm (for our main tournaments), we close submissions. At this time, we take a look at the players in the game for eligibility, and we start the final round at about 2:15pm. During this round at 2:15pm, all games are replayed – so the leaderboard before this is completely irrelevant – only the leaderboard created as a result of the final round is what matters.
So why have the continuous integration during the week? Is it still important? You bet! It’s a chance to play and fine tune your strategy. To get ideas from other players and come up with your own. Your bot might play the same during the final, or it might not.
Since the final leaderboard is generated as a result of the 2:15pm match, we’ve seen some interesting behavior – and this makes the game exciting! For example, suppose you’ve got a cool strategy – perhaps you wait to implement it because you don’t want your opponents to develop a counter play. This is all completely legit and part of the game. In some ways, it’s a double-edged sword – you need to test your ideas to see how good they are, but like in a poker game, you want to keep some cards close to your vest.
One question we got was whether you could use time-based code in your bot. Absolutely! What I’d recommend, if coding specific for the Friday tournament, you do something like this:
1: if (DateTime.UtcNow > new DateTime(2011, 4, 15, 18, 0, 0))
3: //begin super playing mode!
In this case, we’re setting the bot to play differently after the 2pm close time on 4/15. Remember, all time is UTC on the game server (DateTime.UtcNow and DateTime.Now are the same in Windows Azure, but I use UTC for clarity). Because UTC is currently +4 hours from EDT, we add 4 hours to 2pm (1400 hours) so the cutoff time is 1800 hours UTC. I don’t recommend you set this to 2:15pm because the game may start slightly before 2:15pm. Additionally, I don’t recommend an end time because while the games should play at 2:15pm, it’s possible due to technical issues it might need to be delayed slightly.
We know some plays sneak in occasionally – past winners, employees … even we submit a test bot to demo the project or when trying to resolve an issue. We are usually pretty good at removing those bots. In the main tournament rounds, we’ll do our best to police the registrants to make sure they qualify, but we’ll apply a bit more scrutiny before the round at 2:15pm Friday (hence why we take a 15 minute break to give things a once-over).