Talk:RoboRumble/Participants

From Robowiki
< Talk:RoboRumble
Revision as of 12:44, 6 January 2009 by Nat (talk | contribs)
Jump to navigation Jump to search

Entering rumble via infobox

You know, it would be kinda cool if people could enter their robots in the rumble via Template:Infobox Robot. Just add the appropriate data to the box and an argument that says, effectively, "Yes, enter my bot in the rumble," and boom, it gets picked up. RobertWalker 19:10, 12 December 2007 (UTC)

Thats sorta possible, if say, we added a category to the template then had it use that category and trace the link to the bots page and look for its jar. However thats a lot of extra skipping around, and its a realy strain on server resources to have to 'check' for these things. --Chase-san 20:07, 12 December 2007 (UTC)
A couple issues with that, though not show-stopping issues: one, we have bots in the rumble with no bot pages. (Vanessa, for instance.) Two, you don't always have your latest version in the rumble, or you have to post a temporary RRGC version or something like that. With all the little caveats, the Participants page might still be the most elegant solution. --Voidious 20:13, 12 December 2007 (UTC)

Is there a reason this list isn't being used for the rumble yet? Also, is there an updated zip of the rumble bots around? (Or could someone make it? :-D? I'd like to start running battles again. -- Alcatraz 12:52, 8 December 2008 (EST)

robowiki.net is running again, but maybe is time to activate this participant list? --lestofante 13:40, 5 January 2009 (UTC)
Agree. Many down of the old wiki can make newbie like me try many new idea on rumble! --Nat 11:44, 6 January 2009 (UTC)

You cannot post new threads to this discussion page because it has been protected from new threads, or you do not currently have permission to edit.

Contents

Thread titleRepliesLast modified
Is there a mistake in Rumble battle staging1410:41, 1 March 2023
Down to #9305:01, 9 January 2018
On removing bots worse than SittingDuck1607:37, 8 September 2017
Remove bots with underscores in version numbers?1115:37, 3 September 2017
Entry Time216:59, 6 April 2016
fix/remove missing bots404:24, 5 October 2015
uji.SiberianKhatru 2.0002:18, 29 September 2015
Add a bot to the rumble214:59, 7 October 2013
Dropbox offline?116:32, 30 May 2013
Java 7403:23, 17 December 2012
Suicidal Bots015:15, 20 September 2012
Toad vs UberBot015:00, 17 August 2012
MogBot and Hamilton202:35, 6 June 2012
Bots without hosting609:06, 11 May 2012
lxx.Tomcat 3.55 vs cs.ags.Scarlet 1.1c2115:50, 29 February 2012
Bot not uploading021:42, 26 February 2012
Missing racso bots000:15, 3 November 2011
Trouble with Nucleii.ED4 1.0122:24, 29 September 2011
Supersample.SuperCrazy and supersample.SuperCrazy206:49, 6 September 2011

Is there a mistake in Rumble battle staging

Edited by author.
Last edit: 04:00, 22 February 2023

Hi, I just looked at ranking of Vodious Jen http://literumble.appspot.com/BotDetails?game=roborumble&name=voidious.micro.Jen%201.11&order=-Battles

for a bot which is in the rumble for many years, there are quite a lot of opponents with which this bot has less than 5 matches and those are bots which are also in the rumble since forever.

I wonder why match selecting algorithm avoids particular bots. Is it normal?

Beaming (talk)20:19, 19 February 2023
Edited by author.
Last edit: 04:57, 22 February 2023

What do you mean by avoiding particular bots. From the code, LiteRumble selects missing pairings first, then pairings with less battles, etc.

Given enough time, each bot should have similar amount of battles.

Xor (talk)04:46, 21 February 2023

Ups, I posted wrong link to Jen rating, see http://literumble.appspot.com/BotDetails?game=roborumble&name=voidious.micro.Jen%201.11&order=-Battles

I do use LiteRumble to check for my bot improvement (if I run clients anyway, why not update "real" rating). But the issue I report is unrelated to my bot.

Beaming (talk)03:59, 22 February 2023

OK, a thought the missing pairings is related to your bot (which just get updated), but it turns out to be an ancient one.

Xor (talk)06:06, 22 February 2023
 

If you look at Jen pairing, you will see almost 200 bots, with which it has only one pairing. This is not normal for a bot which is many years in the rumble. http://literumble.appspot.com/BotDetails?game=roborumble&name=voidious.micro.Jen%201.11&order=-Battles

Beaming (talk)05:54, 22 February 2023
  1. We need to find out whether they have only 1 pairings 10 years ago. If so, we could add back the missing pairings from backup.
  2. From the code, "Battles" is merely a counter. If it shows 1 pairing, then there must be data loss unless it's 1 initially.
Xor (talk)06:10, 22 February 2023
 
 

as far as I can remember, some time ago (~1 year) there was a hickup which resulted in the strange rumblerankings. Bots had disappeared from the ranking, and when they came back after a battle, their stats against others was either complete or just 1 battle. Just can't find evidence of it on the wiki

GrubbmGait (talk)08:28, 21 February 2023
Beaming (talk)04:03, 22 February 2023
 

The pairings are already missing in 2021, so it mustn't be resulted from the 2022 hickup http://web.archive.org/web/20210127174934/http://literumble.appspot.com/BotDetails?game=roborumble&name=voidious.micro.Jen%201.11

Xor (talk)06:18, 22 February 2023

A strange thing is that most pairings wit 1 battle (of nz.jdc.nano.NeophytePattern 1.1) are either 2020.10 or 2022.3 (which is the exact time the last hiccup happened). This may indicate that the loss of pairings are resulted from restoration process.

http://literumble.appspot.com/BotDetails?game=roborumble&name=nz.jdc.nano.NeophytePattern%201.1&order=-Battles

Xor (talk)06:44, 22 February 2023

Would it mean that there is a lingering database which has old pairing number? I.e. literumble thinks that there are plenty of pairing (thus not asking for more battles) but it shows in the stats only actual ones.

Beaming (talk)14:56, 22 February 2023

No, you can clearly see from the code that all data is saved into bot.PairingsList, which gets overridden each time a new battle is ran. So if a pairing is missing, the data may not be lost, but if a pairing shows 1 battle, then that's all LiteRumble has.

Skilgannon once said that he had backups. We could ask help from him and do a merge, e.g. take whatever pairing with max battle counter.

Xor (talk)03:09, 23 February 2023
 
 
 
 
 

Down to #9

Wow, I look away for a year and I am knocked down to 9th place. I might have to make a new robot, if only I had more time these days.

Chase23:34, 8 January 2018

Well, you are still in the top 10. I am only #13 despite passing Mint and Phoenix. But I do have the best rammer :) see also Chronicle of 2017

GrubbmGait (talk)00:31, 9 January 2018

Good job. I was always wondering about MaxRisk since it was removed, but I guess you one upped it.

Chase00:57, 9 January 2018
 

Welcome back! The competition is getting interesting these days.

Xor (talk)05:01, 9 January 2018
 

On removing bots worse than SittingDuck

Edited by author.
Last edit: 09:56, 7 September 2017

There are a few bots doing worse than sample.SittingDuck, but imo we should keep them, at least not removing them in one step.

1. Removing a lot of bots in roborumble in a short period of time disables the comparation between different versions of every bot in APS, survival, PWIN, etc. As they all depends highly on the distribution of the participants. Doing so makes the recorded APS, Survival and PWIN in version history completely useless, and you can't even reload the scores as the score against those removed bots are always counted in inactive versions.

2. They are a great indicator of whether your bot has some serious bug that happens rarely. And we DO need enough weak bots to have the chance to trigger it.

3. They don't waste time in roborumble as they die too fast, making a battle almost done immediately.

OK, reduce load is good.

Xor (talk)03:52, 7 September 2017

Anyway, I think we should not remove any bot except your own without discussion, unless those bots are violating rules or completely broken (e.g. invalid package).

Now, maybe we may add another rule: If your bot is worse than sample.SittingDuck, it may have some serious errors, therefore may be removed to reduce load for everyone who runs roborumble.

Xor (talk)05:50, 7 September 2017
 

There are also some bots that try to do as badly as possible, so do worse than SittingDuck by not getting survival bonus etc.

Skilgannon (talk)09:49, 7 September 2017

WoW that's amazing

Now I'm considering a new bot that ranks the last in the rumble. aaa.WorstBot. I think I can use ReversedWaveSurfing to make sure the enemy hit me 100%, and when he is not firing or ramming, go hit the wall and hit and hit and hit the wall, while avoiding ramming into the opponent accidentally.

The reversed rumble is as interesting as the normal one, I think we should permit this.

Xor (talk)09:56, 7 September 2017
 

Well, may be I removed them somewhat hasty. But I get tired fixing broken download links, and was looking for excuse to trim the list. If authors do not care about their bots why should I? Though, among the removed ones, I think only Galaxy was with a broken link.

We do need a procedure to remove dangling links bots. Without it the rating will be in "unstable" state forever. Look at the rumble [1] quite a lot of bots missing about 10 pairings rigth now (2017/09/07). Why? Because opponents are not downloadable.

There are bots which comunity would always take care: former champions, open source bots, and bots which have wikipage describing their logic. I.e. the ones from wich we can learn. But if it has no wiki page, closed source, and its link is expired so it blocks ratings stabilization, then I tempted to come with a big eraser.

1. I would still encourage the removal of the "worst" bot from the main rumble. Everybody get 100% against them, so they do not change resulting APS too much, since there are only handful of them. If we want to compete in being the "worst", we can start a separate rumble.

2. We might worry about APS change which is used for comparison. But it will be different anyway because there are always (well often) a new bot or new version of bot entering the competition, so old APS is slowly loosing its value anyway.

Beaming (talk)14:46, 7 September 2017

1. not downloadable opponents are not a problem, as we have rather archive or no one could publish a score about it. Therefore I think we should keep every bot as much as possible, unless we can't find any valid link for it.

2. A separate rumble for worst bots is completely different from competing together, unless we copy all the normal rumble bots to the worst bots rumble as well, which is a even more waste.

3. Even if the history APS is losing its value anyway, it does so slowly, therefore it's not a big problem. But removing a lot bot all at once is a BIG PROBLEM.

Xor (talk)15:04, 7 September 2017

Let me argue that missing jars is the problem. Suppose you enter a new bot in the rumble and suppose that 10 weakest bots are inaccessible. Then this new bot, will have overall smaller APS than some old bot who already had a chance to pair up with weak ones.

So your APS would be smaller, not because your bot is weaker but because bots are missing. Literumble will show this as "Rankings Not Stable" but its probably not what you want.

Opposite will happen if 10 strong bots are missing.

Thus I am pushing for removal of missing bots so the rankings is done on the same set.

Beaming (talk)19:11, 7 September 2017

This only happens when no one that runs roborumble has access to those bots. And the real problem is our priority battle algorithm — it takes more than 3000 battles to be guaranteed to have a full pairings, but the default battles threshold is 2000, which leaves new bots typically with missing pairings.

Unstable rankings has nothing to do with those inaccessable bots.

Xor (talk)00:50, 8 September 2017
 

I suggest we tweak the priority battle algorithm a little — when there's no one that has battles below threshold, prioritizing on pairings. Only when everyone has full pairings, run random battles.

However, the first problem to solve is that we make sure every bot is accessible to everyone.

Xor (talk)00:58, 8 September 2017

The literumnle already does this. However the delay between generating the priority battles and the client running them and uploading them means that many are run twice.

Skilgannon (talk)07:37, 8 September 2017
 
 
 

And NOT everybody is getting 100% against worst bots. e.g. ags.RougeDC is getting around 50% against aaa.WorstBot, which must indicate a bug.

And, removing ten 100% APS bots will decrease everyone by 1.0 APS, which is considerable. Although the rank is not affected by much, doing so destroys the existing meaning of ranges of APS. e.g. 90 used to be a barrier of the extremely strong bots, but if we remove 10 100% APS bots, the barrier will be 89. A big shift in everything is very inconvenience.

Xor (talk)15:12, 7 September 2017
 

A lot of bots is missing 10 pairings simply because there are 10 bots removed temporary, and it takes a lot of time to add the pairings back.

Therefore we should really take caution when removing bots — It takes less than one second to remove, but it takes almost a day to add it back.

Xor (talk)15:17, 7 September 2017
 

> Well, may be I removed them somewhat hasty.

I didn't think it was hasty at all. On the other hand, I was glad that finally someone was taking the initiative.

I personally agree with Beaming's argument. However, it doesn't matter that much to me, so I won't waste breath arguing about it.

MultiplyByZer0 (talk)20:37, 7 September 2017
 

My thoughts on removing are that we should only remove if:

  • We don't have a .jar in the robocode-archive

or

  • It is broken in new JVM / Robocode versions, and closed source so we can't try to fix, or open source but the fix would be really complicated, or the bot has no historical significance and nobody cares.
Skilgannon (talk)21:13, 7 September 2017

Ok. I sign under it. Bad score is not a reason to be out of rumble.

My apologies to everyone for acting without discussing it first.

Beaming (talk)21:32, 7 September 2017
 

Shall, we instruct liteclient to look at the robocode-archive automaticly, if primary link is down?

I can probably cook up a patch for it rather quickly.

Beaming (talk)21:33, 7 September 2017

Maybe better would be a script which transforms the Participants page? This way we aren't hardcoding new URLs in the client that will need more maintenance, and we can easily run the script again to see which bots need fixing, and we know from the changelog of the participants page which ones don't have hosting anymore. This script could be made available on the wiki page. And it is 100% compatible with current rumble client.

Skilgannon (talk)22:11, 7 September 2017
 
 
 

Remove bots with underscores in version numbers?

It seems that roborumble thinks SimpleBot 0.023h_knn to be a bot named "SimpleBot_0.023h" with version number "knn", and failed to retire it from the rumble.

How can I remove it anyway from the rumble?

Xor (talk)05:56, 26 August 2017

Do not worry, it is already gone. It just take a bit of time for rumble to process it.

By the way, you can add flag for your bot.

Beaming (talk)06:37, 26 August 2017

No it is still there. And it is not removed because the literumble says ERROR. name/game does not exist: aaa.SimpleBot_0.023h knn/roborumble

If you see http://literumble.appspot.com/Rankings?game=roborumble, and search, there will be 3 SimpleBot, as the old ones are failed to remove.

the problem is not in roborumble@home, as the request body is version=1&game=roborumble&name=aaa.SimpleBot_0.023h_knn&dummy=NA which is raw data.

But the server handles version numbers with underscores badly, the server thinks it is "aaa.SimpleBot_0.023h knn".

Xor (talk)06:49, 26 August 2017

Hmm, yeah, LiteRumble itself seems to see the versions correctly. The rankings, anyway. I'm not sure if it's a client bug encoding the URL or the bot removal endpoint on the server that has a parsing bug (or both, even). In any case, I think we may need Skilgannon to manually retire the old bots, or maybe tell us how to do it.

Voidious (talk)14:33, 26 August 2017
 
 

Hey, sorry for the delay. This has been a longstanding problem with the rumble client. In some interfaces it replaces the spaces with underscores, and in others it doesn't and expects the server to do it. In order to be compatible I had to replace the last _ with a space in the server. It can't be the first _, because many bots have _ in their names. However I hadn't considered what would happen if we have _ in the version. Manually removing is a little complicated, I think I'd actually have to patch the code. However that doesn't prevent this from happening again.

I guess maybe I need some more intelligent logic in splitting the version and the name. Maybe this should be done as a challenge? It is a fairly 'soft' problem, and we have a bunch of input data (the rumble population) that we can verify the algorithm on. Bonus points if it is written in Python.

So the basic requirements are:

  • Has the same behavior as 'replace last _ with space' for the current rumble population
  • If you add an _suffix in the version number of any of the current bots, correctly detect that it is in the same prefix version, and the suffix you add is part of the version.
Skilgannon (talk)19:47, 27 August 2017

However I think this problem can be solved by simply trying all of the combinations when failed to remove a bot ;) As the problem seams to happen mostly on removing bots.

When removing bots, first try the canonical method, if failed, try everything that matches the name where '_' are replaced by `[ _]` (regex that matches space or underscore).

Say, if it failed to remove "SimpleBot_0.023h knn", try /^SimpleBot[ _]0\.023h[ _]knn$/ until success ;)

Xor (talk)03:56, 28 August 2017

Finally had a free moment to work on this, done! If there is more than 1 underscore I iteratively test replacing each with a space and the first which matches a bot gets used.

Skilgannon (talk)14:31, 3 September 2017

Thanks a lot!

Xor (talk)15:37, 3 September 2017
 
 
 

How did you even get an underscore in the version field?

The robot packager says "Please enter a version number for this robot (up to 10 word chars: letters, digits, dots, but no spaces)", and greys out the "Next" button if you type an underscore.

MultiplyByZer0 (talk)20:36, 27 August 2017

I never tried package my bot with robocode ;) I use a utility which transpiles my bot to Java 6 (I'm using Java 8 and it's features) and package it at the same time.

Xor (talk)03:48, 28 August 2017

> I use a utility which transpiles my bot to Java 6

You can just compile with:

javac -target 1.5 -source 1.5 [...]
MultiplyByZer0 (talk)04:09, 28 August 2017

This won't work as I'm using Java 8 features, etc. default methods, which can only be transpiled with some tricks.

Xor (talk)04:15, 28 August 2017
 
 
 
 

Entry Time

How long is usually between listing a robot under particiapants and having it participate in roborumble?

Grystrion (talk)20:32, 5 April 2016

It depends on whether people are running RoboRumble clients, but I can see (here) that some people are, so it should be pretty quick. I checked your bot and was able to fix the Dropbox link - it needs to be a download link directly to the JAR. Hopefully that does the trick. Good luck in the Rumble!

Voidious (talk)03:01, 6 April 2016

Hi Grystrion,

There is something wrong with you bot. I see the following line in the roborumble console

Participant ignored due to invalid line: Grystrion.Grystrion2_1.0

Once you submit your bot to the wiki, it is good idea to run the roborumble on your own computer. Firs of all, you see if the roborumble can download and execute your bot. Secondly, you would help to run the competition, easing the load from other people CPUs.

Beaming (talk)16:59, 6 April 2016
 
 

fix/remove missing bots

General 1v1 hasn't had complete pairings for a while: [1] Could someone running a client just go ahead and remove (or fix) the bots that your clients are failing to download? I've been meaning to get to it for a while now, but obviously haven't yet... (Same is true of MeleeRumble, actually: [2])

Voidious (talk)20:00, 24 September 2015

Hi Voidious,

Would you please elaborate? The bots for download are provided by the rumble, so removing them locally on a client would not change them missing a pairing. Do I miss the idea?

Also, there are at least for new bots which are less than week old, 2 by me and 2 by Cyragia. These are still pairing.

With this being said, there are couple bots which my client is unable to download.

Beaming (talk)02:51, 25 September 2015

Sorry, I meant to remove them from the participants list (or cut/paste them to the "broken bots" part at the bottom). There are 1112 bots total. If you look at the rankings sorted by number of pairings ([1]), there's the 4 new bots by you and Cyragia at the top (with 1099 or 1104 pairing), then a few more between them and the bots with full (1111) pairings. So those bots are not getting battles vs the new bots, I guess. I thought it would be easy for whoever is actively running a client to see which bots are unable to download and go ahead and remove them. Or maybe they are available from Rednaxela's archive, if you feel like digging around to fix the URL. I'll try to get to it soon if nobody else does, but I don't have a rumble client setup right now.

Voidious (talk)15:48, 25 September 2015

I cleaned rumble there were a couple bots which my client cannot download. But there were a couple which report "an invalid robot or team". I have no clue what it means but I tend to blame my client, since they are downloadable and there were some relatively fresh pairing (month old) for them. But I removed them anyway, since de facto I am the only one persistently running battles.

I did not change anything in melee, since, right not, it looks like every bot have a pairing wiht another one.

Beaming (talk)00:16, 26 September 2015

Awesome, thanks for taking care of this, Beaming!

Voidious (talk)04:24, 5 October 2015
 
 
 
 

uji.SiberianKhatru 2.0

Can some one see what is wrong with uji.SiberianKhatru 2.0. in RoboRumble

My client shows something like

 
Ignoring: uji.SiberianKhatru 2.0,doka.ShinigamiKNN 1.0,SERVER
Beaming (talk)02:18, 29 September 2015

Add a bot to the rumble

How can I edit the list and add my bot to the rumble?

Dizzy27 (talk)11:22, 6 October 2013

At the top of the page is a button "edit". Click that and add your bot in the same style as the others. You also need to upload your bot somewhere, eg. Dropbox

Skilgannon (talk)11:54, 6 October 2013

Thanks a lot

Dizzy27 (talk)14:59, 7 October 2013
 
 

Dropbox offline?

I can't download bots from dropbox submitted in the last days. Is it offline?

MN (talk)15:37, 30 May 2013

Apparently it is, just saw this: [1]

Edit: er, was?

Voidious (talk)16:31, 30 May 2013
 

Is Java 7 still a no no for Rumble bots? I'm about to update my development machine to Linux Mint 14, and wondering if I should go for OpenJDK 6 or 7.

Tkiesel03:02, 17 December 2012

Yep, still Java 6. Good luck!

Voidious03:11, 17 December 2012
 

Thanks for the info.

Do OpenJDK 6 and 7 play nice installed on the same system at once? I've got a game that has issues with OpenJDK 6. Maybe it's a sign that I need to just stick with Robocode over other distractions.

Oh, and having a great time with student LEGO robots running RobotC. It's been a trip adjusting to C's quirks, and oh how I miss objects! *chuckles*

Tkiesel03:15, 17 December 2012
 

I think you can just use Java 7 and just make sure Eclipse (or whatever) is set to compile with Java 6 compatibility.

Lego robots sounds pretty fun!

Voidious03:18, 17 December 2012
 

It is ridiculously fun. Last week they made bots that could navigate a maze with touch sensors and/or ultrasonic range sensors. It certainly gets them interested in getting that code working!

Tkiesel03:23, 17 December 2012
 

Suicidal Bots

Whoops - apparently I triggered an actual competition for the worst-scoring bot ever... nice try on that one, conscience.Suicidal! But given that it achieves this only by wasting computing time like hell, I suggest to ban this approach, and remove conscience.Suicidal from the participants list.

(Also note that the bot doesn't actually achieve zero points; it just manages to be thoroughly disqualified, preventing its points from being included in the score table ("SYSTEM: No score will be generated"). Therefore, cli.PerfectLoser still remains unchallenged :-P)

Clipka15:15, 20 September 2012

Toad vs UberBot

Toad vs UberBot is the only pairing missing from General 1v1 right now. I excluded UberBot before bed because it was failing for me (guessing it's Java 7). And IIRC DrussGT vs Toad got no battles until my clients joined in yesterday. So it may be that other clients are having trouble with Toad, and I'm having trouble with UberBot, so that pairing never gets battles.

Voidious15:00, 17 August 2012

MogBot and Hamilton

I have both bots excluded melee/single as well. They crash my systems (mac/linux) every second battle or so. MogBot has a serious thread writing file issue and i was not longer in the mood to deal with this bot, crashing my system in the middle of the night. So +1 for removing it from me.

Wompi23:02, 1 June 2012

Yeah, maybe we should just remove them. It seems like something is removing them from the rankings, as well. (I don't see them right now - was watching for when Diamond 1.7.9 would get its remaining battles vs bots I've excluded.) I've got extra.Sauce and extra.LightSauce excluded too.

Maybe I'll also take a look if they're open source and if there's something I can do to post fixed versions to the rumble. MogBot is one of the earliest Pattern Matching bots, so I'd love to keep him around - I learned about PM from the author's tutorial many moons ago. =)

Voidious15:12, 5 June 2012
 

Yep i remove Mogbot from the meleerumble. MogBot is open source so if you find something to change the thread writing stuff .. feel free. Nice story about MogBot, for me it was until now just a really annoying bot, but with this history well, i change my mind.

I figured out if you exclude bots from the rumble and you are the main contributor the rumbleserver removes these bots until they get new battles. Otherwise there are a lot of bots in the participants list that i don't have excluded but also don't get battles.

Wompi02:35, 6 June 2012
 

Bots without hosting

Hi folks. Several bots in the 1v1 Rumble that aren't in the superpack and also seem to be hosted on domains that have been dropped. I see several at rednaxela-robocode.dyndns.org that can't be downloaded, for example. Can anyone give these bots a good home?

-Tkiesel 13:18, 3 May 2012 (UTC)

Tkiesel14:18, 3 May 2012

Hi mate. have you downloaded the "Participants_20120307.zip" from Start with rumble its under the 1vs1 database section. This one is just 2 month old and should all bots have you need.
You are right to give the bots a new home but till then the database will do :)

take care

Wompi15:28, 3 May 2012
 

Thanks for the heads up! When I get the time, maybe I'll give the relevant bots a home on my DropBox account!

-Tkiesel 14:43, 3 May 2012 (UTC)

Tkiesel15:43, 3 May 2012
 

Sorry about how rednaxela-robocode.dyndns.org got messed up. It's on a stable server, but there was some shenanigans with the DNS. To make ammends, I've created something that hopefully will be quite useful to the robocode community, which I will ensure is very stable into the future.

http://robocode-archive.strangeautomata.com/ now provides an archive of all robots in the rumble, which automatically updates on an hourly basis. The "participants-latest.zip" file always contains all robots currently in the rumble (historical versions trimmed out), but the "robots" directory there contains historical versions as well.

That said, I'd like to note that there are 4 robots that I am missing and cannot locate in any available zip file or site:

  • maribo.IotaCT 1.0
  • maribo.Omicron 1.0
  • extra.Sauce .01
  • extra.LightSauce 0.01

Anyway, cheers!

Rednaxela04:35, 9 May 2012
 

Hi mate. This sounds really great. I have put some of the missing bots here - [missing Bots]. And i change the Start with RoboRumble links to your server later.

Wompi07:00, 9 May 2012
 

I have maribo.IotaCT 1.0 and maribo.Omicron 1.0 on my computer. They were put up on RobocodeRepository recently, so they aren't in the superpack. I don't know where else to upload them. Maribo

Maribo23:02, 9 May 2012
 

Aha, RobocodeRepository just came back up, and I hoped my script automatically mirrored the missing ones onto robocode-archive.strangeautomata.com now :)

Rednaxela03:49, 10 May 2012
 

lxx.Tomcat 3.55 vs cs.ags.Scarlet 1.1c

The duels between lxx.Tomcat 3.55 and cs.ags.Scarlet 1.1c are throwing OutOfMemoryErrors and crashing my clients.

I´m using the standard -Xmx512m parameter in a 64-bit Hotspot JVM (Oracle/Sun).

MN13:50, 24 February 2012

It's strange - i have no problems in same environment: java version "1.7.0" Java(TM) SE Runtime Environment (build 1.7.0-b147) Java HotSpot(TM) 64-Bit Server VM (build 21.0-b17, mixed mode)

Can you do some more investigations (Tomcat vs Druss & Scarlet vs Druss etc. and see in which battles memory usage will higher) to detect which robot is eats memory and, if it's Tomcat. i will try to fix it

Jdev03:35, 25 February 2012
 

Scarlet uses lots of memory. The longer the battle the more memory used. So battles against top bots will use the most.

Skilgannon06:53, 25 February 2012
 

Made some tests. I set -Xmx2g, tested the pairings below twice each and tracked how much memory the JVM allocates:

Tomcat vs Scarlet: 1,231,648k, 1,133,508k

DrussGT vs Tomcat: 1,047,452k, 1,043,268k

DrussGT vs Scarlet: 1,251,568k, 1,221,012k

DrussGT vs Diamond: 869,356k, 878,216k

Those numbers are maximum heaps. The actual used heaps are usually between 30% to 70% of those numbers.

MN15:31, 25 February 2012
 

So it seems both Tomcat and Scarlet use a lot of memory... hmm. I can see how a battle of one vs the other could cause problems on a memory limited machine. What are the maximum heaps used when run with -Xmx512MB ?

Skilgannon20:24, 25 February 2012
 

The reason Scarlet uses so much memory is it is just two bots that have been welded together. Each side manages its own information and systems.

Chase-san22:48, 25 February 2012

Why would that matter? My gun and movement don't really share any data. I might save on the size of a few class files they share, but that's negligible (the whole JAR file is a couple hundred kb).

Unless there's two movements and two guns being initialized and/or processed, but I'd be surprised if that's how you guys have it setup, and it would be easy to fix.

Voidious19:14, 27 February 2012
 

They both have a lot of 'structure'. ;)

But beyond that, might just be that they are fat and unoptimizated.

Chase-san23:29, 27 February 2012
 

I also do some investigations:

  • Tomcat 3.54a vs Tomcat 3.54a: ~320 mb
  • Scarlet 1.1c vs Scarlet 1.1c: ~300 mb
  • Druss vs Druss: ~129 mb
  • Diamond vs Diamond: ~116 mb

Numbers - it's smallest used memory showed by robocode after gc. So both Tomcat & Scarlet is memory consuming robots. I tried to optimise Tomcat, but did not get any success. Anybody have ideas, how i can detect which part of Tomcat uses most part of memory?

Jdev05:27, 27 February 2012

Try doing some heap profiling.

MN14:10, 27 February 2012
 

Are you using fasttrig? If so, how big are your arrays?

Are you using multi-dimensional arrays? It is very easy to use LOTS of memory. I have many multi-dimensional arrays, but use a lazy initialisation so that memory is only used if it gets written to first.

If you have your own kd-tree, check that it is splitting how you want it to. If it only splits one point off each time, it will get deep very quickly. This uses lots of memory, as each object needs a container and a bounding box.

Check if you have static arrays/lists that could initialised after each round.

Don't keep logs of data that won't get used again. Once it won't be used (eg at the end of the round) clear it explicitly by setting to null or calling .clear()

Check you don't have circular dependencies. Make sure you break the dependency if you delete something.

These are my first thoughts =)

Skilgannon08:32, 27 February 2012
 
  1. I use fast trig, but initially Tomcat eats less than 100 mb of memory
  2. I do not use multi-dimensional arrays
  3. I use Rednaxela's kD-tree and own R-tree. Splitting in r-tree is fairly well
  4. I keep static links only to movement & gun logs.

I tried to change double to float everywhere, but it has not any influence on memory usage. My problem, that i have 16 logs with visit data, 16 logs with hit data & 6 logs with tick data, but i can not find way, how to reduce it without APS degradation. But any way, thanks for response:)

Jdev09:25, 27 February 2012
 

I can increase the maximum heap in my clients, although it will change RoboRumble "rules". So I would like the opinion of the people here.

MN14:13, 27 February 2012
 

Not much to add, lots of good suggestions already, but do you keep all your waves around forever? I clear the objects between rounds because all the pertinent data is in the kd-trees. I have more than a few trees in both gun and movement, too, for what it's worth. Do you have a big object as the "value" in your trees?

"static links only to movement & gun logs" and your R-tree are what jump out at me. I would try chopping off certain parts of your bot and seeing which brings your memory usage down to earth, though some kind of heap profiler (like MN suggested) would be more elegant. =)

Off-topic: Circular dependencies shouldn't matter, at least in modern JVMs. If the only references are within a circle unreachable from the root of code execution, it will be garbage collected.

Voidious22:01, 27 February 2012

No, all waves, bullets, targets etc. are dropped out at end of each round. But yes, "value" objects are pretty big, thanks, i will think about it. I do not understand you about my R-tree.

Jdev05:47, 28 February 2012

Well, I just meant that since you are the only one using it, it's relatively untested compared to, for instance, Rednaxela's kd-tree.

Voidious21:31, 28 February 2012
 

Voidious, you are genius!:) I detect indirect static link to AdvancedRobot instance, so nothing dropping out and quick fix are frees 100 mb memory. But beautiful solve of this problem are requires big refactoring, so fixed release will be after few days

Jdev06:27, 28 February 2012
 

I don't know about the Nene side of the code, but on the RougeDC side, Scarlet's gun is somewhat heavy on memory. IIRC it's partially because of it's folded single-tick pattern matching. I might look at some heap profiling to see exactly how the memory usage is broken down some time, but I'm pretty busy these days.

In general, I kind of wish Java allowed the security manager to deal with memory usage, because then the robocode engine could have a 'real' rule about memory use. Instead we're just kind of left with "not too much please".

Rednaxela01:13, 28 February 2012
 

Yeah, I was wondering if it were at all possible to limit memory per bot with the Java classloaders... I guess not? It sucks that one of these two bots is probably being punished just for using more memory than average, even though it might still be well short of its fair share of 256 megs.

Though if we used per bot limits in Melee, I wonder if a lot of us would have issues. You can probably get away with far more than your "fair share" of 51 megs in Melee, since you're usually not facing 9 other memory hungry bots.

Voidious21:35, 28 February 2012

Yeah, so far as I can tell java classloaders have no control over object initialization.

Well, for melee, do keep in mind that the default heap size in the shell script that launches robocode is larger so it would be more than 51 megs per bot (can't remember exactly what off hand)

Rednaxela23:03, 28 February 2012
 

I can only think of a dedicated JVM per bot to achieve this kind of limit. This is how it is done in Java clouds out there.

The challenge comes when you try to integrate the JVMs together to calculate battle state and skipped turns.

MN13:58, 29 February 2012
 

The robocode engine has already went through some changes to effectively support a similar (remote-ish VM) situation for .NET bots. I imagine that past work would make it less of a problem to use per-bot VMs in java. The biggest issue may be latency between the VMs slowing down the turns.

Rednaxela15:50, 29 February 2012
 
 

Bot not uploading

I uploaded a bot(Trident) almost 9 hours ago and it still has not shown up in the roborumble. Any ideas?

AncientPyro21:42, 26 February 2012

Missing racso bots

I can´t find where to download racso.Crono 1.0 and racso.Frog_0.9.jar

MN00:15, 3 November 2011

Trouble with Nucleii.ED4 1.0

Anyone elses rumble clients having issues loading Nucleii.ED4 1.0? My client says it's an invalid robot, which is keeping it from doing much if there are no priority battles for robots under 2K battles.

Skotty20:13, 29 September 2011

Same problem here... should remove this bot from the rumble until it gets fixed.

Darkcanuck22:24, 29 September 2011
 

Supersample.SuperCrazy and supersample.SuperCrazy

Is the rumble client case insensitive? It can´t download supersample.SuperCrazy if Supersample.SuperCrazy is already downloaded...

MN01:46, 6 September 2011

A compatibility failure between the downloaders 'check if jar exists' file checker and the robocode 'load given robot jar' file loader. The former is case insensitive (probably had a good reason for it at the time) where as the latter is not.

Now that I think about it, the former may just be a "check if robot exists in robot database", rather then a file checker.

Chase-san05:24, 6 September 2011
 

To answer your original question. Yes, the rumble is case insensitive (as far as I am aware).

cs.SuperRobotXYZ = CS.sUpErRoBoTxyz, however the rankings use whichever was added first I believe.

Chase-san06:49, 6 September 2011