Robo Home | OpenSourceRobocode | Changes | Preferences | AllPages

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

Changed: 106,109c106
Hem, boredom does thing to people, we all know it! However I was so bored that I was going through the online cvs and saw that Robocode used a Vector internally, which shouldn't be used (ArrayLists? are far better, Vectors are outdated and eat more memory). So I queued up Eclipse and downloaded the CVS, after I fixed its minor resource/robots panic I began work converting it over to List's, more specifically since I was worried about ArrayLists? lack of Syncronization, Syncronized Lists (Mind you, I had to leave 2 in the interface, AdvancedRobot still uses vectors but its a cheap convert trick from List). Then once I finished that I found a hashtable, and gasped, so I went through and replaced all those... however that lead to Enum problems, so I replaced those with Iterators, then once it was all said and done. I started my newly changed version of robocode, it paniced because the database was a hastable and I had made it read it as a HashMap? (I fixed by just deleting the database and cache and having robocode rebuild them). Well I tested WaveSerpent vs WaveSerpent over 1000 rounds, the score came out almost identical(as it should), I then tested DT vs WaveSerpent and many others to make sure there was no problems from my conversion. Two DT's ate only about 128 mb of memory(not sure if thats good or bad).

Here it is, my Boredom: [Source]
I already sent the result of my boredom to Fnl. If he integrates it then he integrates it, if not then he doesn't. --Chase-san

Share any robocode features, improvements, or fixes you've contributed or you're working on!


I'm working on some UI and editor cleanup/improvements around Robocode. So far:

Contrived picture of my version of the editor:

Ok, I just uploaded my changes to my lovely bit of Robocode web space (a.k.a. the RobocodeLittleLeague site). This is my UI improvements, the enhanced editor, and my fix for the HyperThreading hang bug. Please post here if you've tested any of these new features and also any thoughts about it if you have any (I'm trying to track how well tested these changes are so that if it happens to all work, I can say it's been used by some number of active Robocoders for their normal Robocode activities). I've also tested it a good amount and everything seems to be good. One thing that's still maybe undertested by me is Find / Replace.

My version of robocode.jar is at http://robocode.yajags.com/newrobocode.jar (I just put it in my robocode directory and make robocode.bat or robocode.sh point to that jar instead of robocode.jar). Source isn't included in this jar.

My source changes to the robocode project (for anyone who wants to build it with other changes they've made) are at http://robocode.yajags.com/robocodeChanges.jar . This is just a jar of the changed files that you can just extract into your robocode cvs root as long as you don't have changes in any of the same files I do (you can run jar -tf robocodeChanges.jar to see what files are in there). This isn't a diff patch, so if you do have changes in one of the same files I have changes in, you will need to merge them manually. No binaries in this jar.

-- Kawigi

I've just started what should be a great test box (4 Xeon 2.8 GHz, each of which hyperthread) running RoboRumble@Home with your new robocode.jar. Will let you know how I fare. -- Kuuran

~3 hours and ~400 battles down, still running smoothly. -- Kuuran

Outstanding. Are you running melee battles perchance? With 8 hardware threads, maybe you should ;-) -- Kawigi

I really like the new editor. A note though, windows still remain present in the window menu even after they have been closed. -- Alcatraz

It does look very neat and the extra options are very handy. Two remarks though, one about the editor and one about the hypertreading bug. First, the buttons in the 'Find' and 'Replace' menu's do not have the same size, which looks ugly, at least on WinME. Second, the 10 second redraw of the debugscreen still appears, I hoped that you had removed that on the fly. -- GrubbmGait

It stopped on the 647th battle, but I think that's just because my ssh session timed out and I forgot to screen the thing. Trying again with melee, as suggested. I'm also a bit curious as to why the log of this says I ran 546 battles of Shadow 3.56.5, is that version even IN RoboRumble? -- Kuuran

Ok, attempt number 2 is again with OneOnOne. Can anyone tell me why RoboRumble on my machine can't retrieve a melee ratings file (that's really all RR tells me, so it's all I have to go on)? -- Kuuran

Alcatraz - Dang it, I thought I fixed that. Are you using my robocode.jar, or did you compile it from the source? Edit: It didn't happen on mine, so I re-uploaded newrobocode.jar to make sure it was the same one I was using.

GrubbmGait - Maybe I can make up a way to use tricky layout managers to make those all even. Unfortunately, the console refresh bug wasn't fixed by this, but I think it might have been caused by Mat trying to do something to see if it helped.

Kuuran - Don't know why, I've been running over 12 hours (with the right version of Shadow) with the meleerumble.txt I posted on the RoboRumble/ReportedProblems page. -- Kawigi

@Kuuran - Have you tried renaming the roborumble\temp directory? -- GrubbmGait

One thing is that I cant find the robocode API anywhere. The help in this doesnt link to it, none of the links I find have it. There used to be one on google when I searched, right at the top, but now theres nothing even 8 pages in. Anyone have a working link, or maybe a copy stored? -- Jokester

I thought running robocode-setup.jar put it on your computer. If you change browser.bat in your robocode install directory to use %1 instead of $1 (bug) and just open robocode and do Help->Robocode API (or just open it from robocode\javadoc). If you don't have it at all, that's probably a mistake, too :-p (which I wouldn't have seen since I just installed Robocode 1.0.7 on top of Robocode 1.0.6). -- Kawigi

If you do still see hangs, by the way, note which bots were fighting at the time. -- Kawigi

Found another instance of a hang bug, thanks to the ImplementsDroidCompetition - I think it has to do with the battle thread updating the battlefield and a robot thread checking for collisions at the same time, probably when there is a collision :-). It'll be hard to verify this fix, since it's a little more obscure, but I'll be checking that it doesn't do anything catastrophic. -- Kawigi

Keep the good work up Kawigi, will be great to have these hang bugs solved! -- Pulsar

I've seen some strange behaviour that I did not notice in 1.0.6. In melee two bots are left and the timeout counter is running out disabling one of the two bots. Instead of standard win, sometimes suddenly all bots appear again with full strength but they do not do anything. The roundnumber stays the same. If this is the case, the bot who whould have won can still move (and fire) most of the time. No strange messages appear in the console-window. The editor is a pleasure to work with and the 10-second redraw of the console-window is still annoying ;-) --GrubbmGait

Could I suggest that you have a go to feature? It gets sort of hard to locate a buggy line once you start having huge robots. -- Kinsen

Also, the window list is buggy. I tried to open a few of my robots' sources, then closed all of them but there were still a few left in the list. It could be when one robot's source is opened twice without closing the first one. -- Kinsen

Goto was in the original design, but I got lazy and didn't implement it. As for the windows menu... I thought I fixed that and uploaded a new one. Maybe not. I'll verify that it works for me and that we're all looking at the same thing. And, while I'm at it, I'll make sure [RobocodeNG] has it working right ;-) -- Kawigi

What is the status of this Kawigi? Do we feel comfortable in making all this the "official" robocode release to use for the RR@Home etc? I'll put together a binary download site/page to make it easy for newcomers etc to get started (and not sort through various pages here) with robocode and RR@Home-- Pulsar

Kawigi, great job! I am definitely using your version instead of the standard - the lack of editing features was a constant annoyance! Keep up the good work. -- Greywhind

I'm haveing 2 problems still though. Easily reproducible.

First one is if I press pause something is still running, I will for example still execute my main loop.

Secondly the output window obviously has thread bug somewhere. I haven't looked at the code myself but if anything is copying the old text, adding the new one and inserting it back in there are obviosuly at least two threads trying to do this and sometimes get duplicated output. Otherwise it might just be a event dispatcher thread and normal thread issue. Example output with problem: /OutputProblem Any ideas? I think this is related to being unable to debug robocde correctly with a debugger as some threads states are not controlled correctly somewhere. --Pulsar

The second problem is introduced by Mat Nelson with the introduction of v1.0.7, see http://sourceforge.net/tracker/index.php?func=detail&aid=1150818&group_id=37202&atid=419486 When you can find the right wait(10000)'s and alter them back to synchronized wait(), I think the output window problems will be solved. If it will be compatible with Kawigi's update I do not know. --GrubbmGait

Is the actual source code available for Robocode 1.0.7? I have checked SourceForge? and even Kawigi's jar and all I am seeing is class files. And Java files available? I figgured that was the purpose of open source, so maybe I am just not seeing it. -- Martin Alan Pedersen

Evidently you need to set up a CVS tool and SSH connection to grab a copy of the source, or you can use the web based tool to get them one file at a time (from SourceForge?). Ah well.. guess this is gonna take a while .. -- Martin Alan Pedersen

I already sent the result of my boredom to Fnl. If he integrates it then he integrates it, if not then he doesn't. --Chase-san

Robo Home | OpenSourceRobocode | Changes | Preferences | AllPages
Edit text of this page | View other revisions
Last edited January 11, 2007 19:14 EST by webmail.wolverine.k12.mi.us (diff)