[Home]History of RobocodeLittleLeague

Robo Home | Changes | Preferences | AllPages

Revision 58 . . July 11, 2006 18:25 EST by Corbos [Restored]
Revision 57 . . July 11, 2006 18:13 EST by

Difference (from prior major revision) (no other diffs)

Changed: 1c1,159
http://robocode.yajags.com/ Robocode Little League Home Page

/News? /Feedback?

For the first couple seasons, at least, fell free to give me a little /Feedback? about how it is run and how the divisions are set up. Check the /News? page for updates on what I'm doing with it.

A new tournament in the works by Kawigi. Rules, details, and sign-up will be coming soon. I've just started development on the automation engine. It's meant to encourage MiniBot competition like the recently retired MiniBotChallenge.

One significant difference between the RobocodeLittleLeague and the MiniBotChallenge will be the questions they try to answer. The MiniBotChallenge was opened by Tobe to answer the question, How good can you make your robot if it is restricted in terms of code-size?. The answer has come, and that is that they can be pretty darn good. The state of the art in nanos of today can beat many of the best robots in existance when the tournament was started. This tournament will try to answer the question, Which are the best robots in each weight division against other robots of the same size?. In other words, the competition has left the area of experimentation and become purely competition. While some competitive elements will likely remain from the MiniBotChallenge, I'm working out a whole new ranking system based on a similar pairing engine. -- Kawigi


The software to run battles for this tournament is nearing completion, the website is under rudimentary development, but nothing uploaded yet.

The current setup, with some things still to be changed is such:
* Competition is run for 8 'seasons' in which each robot competes in one pairing/grouping
* Groupings/pairings are completely random
* Melee leagues have 10 bots in each battle (and the leftover bots in the last battle of each season)
* If there is an odd number of bots in a 1-on-1 league, one bot gets a 'bye' for each season.
* Each battle is currently 40 rounds
* A bots score is an ELO-style rating based on the previous rating of the opponent and their percentage of the total score against that bot.
* Each bot starts with a rating of 0 (thus roughly half of the bots will eventually have a negative score)
* A bots rating is the raw average of the ELO-style ratings received
* Scores are not adjusted to the ratings of previous opponents (i.e.- if you play a really tough robot first and barely beat them, your score from them may still just be something like 15. It won't go up to 415 when they end up with a score of 400)

There are a few things I'd still consider doing:

* More intelligent pairing engine. I have some idea how to do this for one-on-one and absolutely no clue for melee. The main goal would be to have every battle unique (not face the same competitor/set of competitors twice) but to generally fight against bots of a similar rating. In this case, I may just copy the pairing engine from the MiniBotChallenge, once I put in some time to looking at how Tobe did it. I think this rating system will be more beneficial with such a pairing system than in Tobe's setup. However, with this rating system, as well, a bot is not necessarily at an advantage if it gets lots of 'easy' pairings, or at a disadvantage if it gets a lot of 'hard' pairings, except for in the first few rounds, which, I fear, is unavoidable.
* Fixing the 'bye' issue. One option is to simply make that robot play two battles the next season (one of them against whoever would have had the 'bye' for that season). Another option would be to just make one 3-bot battle or something (but I have a bad taste in my mouth there, because in the last MiniBotChallenge, Fhqwhgads got put in a 3-bot battle in one season, and one of the other two bots was GlowBlowMelee).
:How about just add a SittingDuck to the league if there is an odd number? -- Tango
**I would suggest a MyFirstRobot, SittingDuck results in 0 scores, which aren't handled sanely by ELO rankings, no matter how low SittingDuck is set, 1000-0 skyrockets rankings (or sets them to infinite and explodes the code handling them). I'm not sure if MyFirstRobot makes the codesize cuts for all the leagues, but who cares? It's MyFirstRobot, it's lucky to compete on a nano level, we'll overlook it if it's too big :p -- Kuuran
:::I expect it is a nanobot. I would be very suprised if it's not. -- Tango
:::It is a nanobot. The only SampleBots that aren't Nanos are Tracker and Corners.
** Another possibility is to handle it in the form of promotions. In other words, if there are an odd number of bots in a division, promote an odd number from the division below, if there are an even number, promote an even number. That still leaves a problem in whichever division is smallest, though. In melee, the problem is less critical, I could divide the lack of bots up into two different groupings, possibly, and have a static number of promotions. -- Kawigi
** I eventually decided to solve this problem by having the robot that didn't compete one season compete twice the next season. Since I have an even number of seasons (8), I should always manage to make it work so that everyone gets the same number of total battles (also 8). -- Kawigi
* Still thinking about the possibility of letting top bots from one division compete in the next higher division, like the MiniBotChallenge did. This may just be limited to the standard nano/micro/mini divisions, as they have a natural ordering.

Proposed Divisions
I would like to have both one-on-one and melee divisions for:
* MiniBots - 750-1499 bytes of codesize as determined by the codesize utility
* MicroBots - 250-749 bytes of codesize
* NanoBots - 5-249 bytes of codesize
* HaikuBots - no more than 4 semicolons in the source code (not including package and import declarations). Some logistics of this may still need to be laid out, as no one has ever made a serious 4-line bot league before. These will technically be unrestricted as far as codesize. Must be open-source.

Possible additional Divisions
* A sonnet division - like HaikuBots, but with a limit of 14 semicolons instead of 4. I'll bet many good Micros and some good minis may be able to be restructured this way with some effort and obfuscation, although they will probably grow in actual codesize. A pattern analyzer and maybe even a guess-factor gun is not impossible with this sort of bot. Must be open-source.
* A FemtoBot division. The way HaikuBots originally came about is when people were trying to compete to make the smallest possible competitive bot. Tobe noted that almost all of these bots were variations on the same 4 lines of code arranged in various ways and started calling them HaikuBots. The probable idea here would be to make more 'pure' HaikuBots in the sense of being the smallest for codesize. The scoring would probably be the same idea as in the other leagues, but then subtract the lowest score from all the scores (so everyone is positive) and divide that score by the competitor's codesize (as measured by the codesize utility).


Email the names of robots you would like to enter, as well as what divisions you would like them entered into, to robocode@yajags.com. I'm not sure when the first tournament will be, but it will likely start in the next couple weeks.

The tournament specifics, more information, and results will eventually be available at http://robocode.yajags.com/ - I'm not sure what (if any) relation will be maintained with http://www.yajags.com/ , but just be aware there might be something (even if it's just a link to them).

Newer Update:

The webpage is just about to an acceptable level (although it may end up getting completely thrown away later, but at least we're functional), and the automation program is getting close to completion. I still reserve the right to change the rules, too. See it so far at http://robocode.yajags.com/ . I also am running some test leagues of random jars I just happen to have around here, while modifying and tweaking the software slightly. I'll probably delete that later, but in the meantime, you can get some (inaccurate) idea what things will look like.

In the meantime, I now officially announce the first tournament in this league, which is scheduled for the weekend of September 13th-14th. Email your entrants to robocode@yajags.com , and if you want them in the Haiku/Sonnet?/Femto? divisions, let me know. -- Kawigi


Clarification question on sonnet bots: Do semicolons after field variables count?

public class MyBot? extends AdvancedRobot{

static int myVar; // Does this count?

--David Alves

Yes, they do. If at all possible, find a way to do every single declaration you need on the same line ;-) (I've put some thought in about 'line trimming' recently...) Also, if the source has any code commented out, it would be easier on me (although not necessary I suppose) if either it was taken out when you package it up, or if you just take the semicolons out of it ;-) I suppose by Saturday I'll have my program skip comments, though. At any rate, technically, any non-commented semi-colon within the class counts. In other words, the only thing that is exempt is import and package statements. -- Kawigi

I don't mean to set a bad precedent, but I don't think I'll be able to access my email before that deadline due to some issues I'm currently having with it. Could you please add [arthord.Spinny 1.0] to the femto league? -- Kuuran

Eh, sure, I can sneak that one in... -- Kawigi

Thanks :) Interesting note: I was just working on FemtoSatan? (with somewhat less success) when I saw FunkyFemto in the repository. I guess you came to the same conclusion I did about a bot scoring near-perfects on it's opposition not really needing the codesize advantage? I'm thinking we'll see the ideal size stabilize around 150-300 with a few brave souls trying to compete on codesize alone around 35 and smaller. -- Kuuran

I'm thinking a codesize of about 100 gives the best performance / size ratio. At least, that's what I've found in my few experiments. --David Alves

The original top femto bots were just trying to make the smallest bot that could beat the sample bots, and those were down around the size of Spinny?. I mostly wrote FunkyFemto because I was wondering how small I could make it. It basically features a shortcutted version of FunkyChicken 1.1's gun with FunkyChicken 1.0's movement. I happened to be putting a little time into that when you told me to enter Spinny?, so I checked to see if I could beat it by enough. It can't beat it by 10x, but it can beat it by 8 or 9 times and it's only about 5 1/2 times its size.

In other news, I've also hacked FunkyChicken down to about 5 lines of code. It has a bug somewhere still I think, but if I don't ever turn, I should be able to have a haiku-pattern-matcher :-p -- Kawigi

What is the deadline (day and time) for submitting bots?

Clarification question on sonnet bots: How many lines does these codes will be counted?

public class MyBot? extends AdvancedRobot{

public Point move(Point p){
return new Point();

Is it 1 line or 3 line?


Is it 1 lines or 2 lines or 3 lines?

Thanx very much.


We're counting semicolons, so the first is one line and the second is two lines. -- Kuuran

Just for the record, I'm planning on starting the first tournament basically now (about 12:30 AM, Friday, or Saturday). I'll probably say entries are due Friday night, because I'll probably try to run the bulk overnight. For Iiley, of course, that's around Saturday at lunch time. Of course, I'm just doing this pretty much for the first time, so it may be 'adjusted' later. -- Kawigi

The overnight run had some issues with the math for scoring. It has been fixed and re-run in parallel (access to other computers is great when you're a Computer Science student ;-)). Results are now posted on the webpage. Congratulations to the winners! -- Kawigi

Hey, Question on Sonnet bot code 'obfuscation' here. So far, the only way i have been able to make my code have less semicolins is to put variable asignments in if statements like (3+(variable=3)==-999?1:1) or somthing like that and to declare a lot of variables of the same type on the same line. can anyone give me some suggestions of other ways to do this? i am asking because i looked at floodsonnets source code and have no screwing clue what is going o
n aside from the fact that he is using a hash table. Thanks, Andrew. .. and oh yeah,,i have to say the 1/30ish sonnet tourn was pretty funny, i simply got paired against haiku esbots for the entire thing.

One way is to cheat and make all your variables the same type, regardless of what their actual type is, and then use longer lines of code to get the data out of them. Moving all your assignments into existing lines is also a very good idea, as is moving any method calls that can be made to return something inline. That last one might be a bit confusing, so... setTurnRight?((setFireBullet(3) == null ? 1 : 1) * turnAngle);. What that does is fire a bullet, then check the returned bullet object against null (if a method doesn't return anything there's no way to embed it, it's got to be a seperate line) using a ternary statement. Regardless of the outcome 1 is returned, multiply the result by the turn angle (leaving the turn angle the same as it was to begin with) to include it in the statement, and voila free bullet firing. -- Kuuran

Another thing that FloodSonnet does is put statements that could return something into if conditions and while statements, but I make sure each condition returns true so I don't "short-circuit and skip the rest. I just think it's funny that someone actually tried to understand FloodSonnet's code, though :-p -- Kawigi

A little pressed for time here. What's the latest day/time you accept bots (central/eastern time) for the saturday tournament? I made a sonnet bot that won't loose every single melee game and a slightly new nano bot . My micro/mini bot will have to wait untill next week. - Andrew

In general, I start the tournament between 10:00 and 11:00 Mountain Time, which is an hour later Central or two hours later Eastern. I check my RLL email before I hit the big red button, so if you contact me before that, I can squeeze last minute bots in. I'm also typically on AIM right before I start it (not ICQ, MSN or anything else, though, because I only have the AIM module installed on my Linux IM client, and I run the tournament in Linux) -- Kawigi

There should be an extends Robot division. It's fun and quite challenging.
- Mike Zhang

I agree with Mike. It would be nice to write bots for a category where we're starting fresh, nobody really knows how good Robots can be... Maybe we should also have a Robot category for RR@H? --David Alves

that would be a nice change--andrew

I think a Robot catagory would be pretty cool. Hopefully somebody won't just re-write the AdvancedRobot class and then duplicate their current robot code.

As for those of you who are trying to minimize the line count by avoiding writing semicolons I have some tips. -- SoupThatIsThick

Does anyone know what's up with the little league nowadays? Seems like it has stopped operating for the last two weeks... -- geep

Sorry about not telling you guys what's up (well, most of you anyways). I just finished school and moved for my first real job :-) So I've had a funny schedule including not having a computer for a bit and other issues. And using my school computer account for the tournament won't work forever. I think it will be back on Saturday (cross your fingers), but in the near future, I'll probably need help running the tournament (In order to regularly deliver tournaments that last no more than one day, I'll probably need 3 or 4 total computers, including my own). So if you want to help and aren't planning on leaving robocode soon, talk to me. Of course, it will have to be people I trust, in general, as it might involve letting you in on the "security holes" on the RLL website (i.e. - the way I upload results). -- Kawigi

I can provide one computer. -- PEZ

Will there be held a tournament this weekend (20050409)? -- GrubbmGait

Yes, there should be. I've just been slacking because I've had extra personal/work things going on over the weekends. -- Kawigi

I can provide a computer too. -- Alcatraz

On 20050820 the RobocodeLittleLeague held its last tournament. This really is a pity as it was the only place where meleebattles were fought within their own WeightClass. Also quite unique was the combined OneOnOne / Melee ranking. -- GrubbmGait

Robo Home | Changes | Preferences | AllPages