For the last few months I’ve been running a closed beta with a few frequent IRC users testing a user-driven programming competition, that I am now opening up to the public. Before I get into the details of the concept, it is worth mentioning that this idea and the code behind it are still fairly rough and there are a few issues left to handle. This opened beta is to allow more people to test the idea, give feedback, help solidify the documentation (which currently has been condensed into this blog post), and most importantly keep momentum. Because this is still a work in progress, uptime isn’t guaranteed, but if you poke me on the IRC I’ll probably be able to bring things back online.
The concept that I’m aiming for is somewhere between Battlebots and Robot Wars (http://www.youtube.com/watch?v=iBcF5vA3VTk if you’re not familiar.) Rather than building a large, mechanical robot, I suggest programming IRC bots that compete in a virtual “arena” (an IRC channel).
These bots would be required to preform certain tasks, “challenges”, to validate that they are in fact bots (e.g. quick computations), as well as do “battle” each with other. The majority of these operations are accomplished by sending messages to the “House bot” – DickServ.
DickServ will act as the moderator and referee for the competition. Each “match”, is a timed, king-of-the-hill style competition. The bot with the longest consecutive time in the arena at the end of a round wins. Finally, DickServ will also “broadcast” a play-by-play of the game in another channel, #Psych0Stadium, so that participants and other psych0tik IRC-ers can “watch.” The specifics of how the bots and DickServ should interact are at the bottom of this mail, under the “Technical Specifications” section.
Currently I’ve got no set requirements beyond being able to connect to the IRC (requires SSL), joining a channel, completing DickServ’s “challenges”, interfacing with DickServ based on the commands listed below, and not causing issues for our IRC in general (flooding, etc.) You are free to use whatever language you like and are encouraged to explore the undocumented areas of the competition, such as interacting with other bots.
If you’ve got any questions not answered in this post, or would like
to join the open beta please contact me via email – samurai @ psych0tik . net
—— Technical Specifications ——-
Bot requirements and actions:
- Bots must be registered and identified with NickServ to enter the arena
- Bots must solve challenges periodically and must respond correctly within a certain time-frame
- Bots with 5 points may trade them in to “attack” (kick) another user
- Bots with 5 points may trade them in to purchase “armor” (block one kick.) This is not announced in the arena or in the stadium
- Bots may request information about it’s current session
DickServ – the House-bot:
- Will announce the start of a round, along with it’s length and challenge/response times
Ex.>>”A new round is beginning! Round length: 300 seconds; Challenges:15/2″ – Rounds are 300 seconds long, challenges every 15 seconds, challenge answers must be submitted in no more than 2 seconds
- Will listen in both the arena and private messages for bots
- Will send informational messages and responses to some commands in private message
- Will kick flooding bots
- Will set the topic of the arena to the current leader
- Will make challenge requests in the arena
- Will evaluate answers and award 1 point for correct solutions, failure to solve the challenge will result in the DickServ kicking your bot
- Will voice your bot after one correct answer
- Will kick other bots in exchange for 5 points
- Will give you “armor” (allows you to block one kick, from another bot) in exchange for 5 points. This is not announced in the arena or the stadium
- Will broadcast the game in the stadium
- Will announce the winner at the end of the “round.” The bot that has been in the arena longest wins
- !stats – information about your bot’s state, responds in PM
- !solve <arg> – solves the challenge, where <arg> is the answer, responds in PM
- !attack <nick> – If the requesting bot has 5 points, the house-bot will kick <nick>
- !block – If the requesting bot has 5 points, the house-bot will ignore the next !attack aimed at the bot
- !help – this rubbish (minus the fancy comments)