I have a bug, and I'm wondering if it's a bug in robocode. Maybe you guys can help me answer this. DCResearch keeps getting "forcing a stop, no score will be generated" error, but only for the first battle run in the JVM. After one battle is over, it runs smoothly. The trouble is, RoboResearch only runs one battle per JVM. I hacked in a change to RoboResearch to print out the message when this error happens. Could those of you using RoboResearch please update from SVN and see if your bots do the same thing? You'll see the message print to the console if it does. This will be especially interesting to David, I think, since this possible bug causes targeting challenge scores to be lower than they should. -- Simonton * I'm definitely getting more forced stops than I ought to, including some from the reference bots. I've noticed those when running Robocode the regular way also, even though my bots rarely ever skip turns. (Edit: I also just noticed I'm getting a ton of FAIL 2.0 messages. That can't be good, can it?) -- AaronRHey Simonton, I had an idea that might make the results from RoboResearch a little more reliable. You already have code to basically capture stderr from robocode and print it to the console, so that we can see if something goes wrong. How about checking whether a given process printed anything to stderr before adding its results to the database. If something went wrong, don't add it! --David Alves * That is certainly doable. I should be able to do that tonight after I get home. I'll un-hack-ify that print-to-stderr, too, & make a regular part of RoboResearch. -- Simonton * Alrighty, I committed what I think should do it. That is, assuming all "abnormal" messages will come out of Robocode's standard error (rather than standard out). You can give it a shot. If you have a bot that you know will cause errors, that will be the ideal test. -- Simonton * Thanks, works perfectly! --David Alves A thread following the call for RoboResearch 2.0: * I'd like to, but I'm kind of strapped for time at the moment. Sounds like good stuff though, esp. the 'rumble when inactive' part =). -- Skilgannon * I have a bit of free time over the next couple of days, but I don't know if there is anything I could do to help. I'm not exactly an expert when it comes to networking in Java. By the way, who would be hosting the RoboResearch server? -- AaronR ** There are things that need to be done besides the actual networking. Like getting it to fire up the rumble when there's nothing else to do, or getting it to swap robot jars in & out of the live robots directory, so that only the ones that need to be running are running. Would you like to do something like that? You can contact me via one of the methods on ContactInfo. The server, though, may be able to find a home on the same account to which we move this wiki, when that happens. -- Simonton *** Whoops, sorry for the slow reply. I'll see what I can do about swapping JARs into the robots directory; I'll contact you if I can get it working. On the other hand, that's assuming I can get RoboResearch itself running - I keep getting java.sql.SQLException: socket creation error . -- AaronR*** Sweet, thanks. You need to use the "Database.IN_MEMORY_CONNECTION" in your BattleRunner?.main() method. That, or fire up the database.sh script. -- Simonton *** Thanks! -- AaronR *** Alright, I have RoboResearch rigged up so that it copies the necessary JARs from an auxiliary directory into robocode_install/robots , runs the battles, and then deletes the copies and clears out the robot cache. My sourceforge username is "arotenbe", by the way. -- AaronR*** Awesome. I'll add you as a developer tonight when I get home. -- Simonton *** Can you not do the cache clearing if you're going to make RoboResearch run RRAH battles? Maybe have a robocode_test and a robocode_rrah installation as subdirectories instead of just robocode_install? Those of us who gain points from saved data would appreciate it. =) Since Dookious and Phoenix are within 10 points, and saved data is probably worth about 10 points... --David Alves *** Hmm, I didn't really think about data saving. I think we should leave it as it is, and have RRAH run from the directory "roborumble_install" or "rrah_install". That way, nothing major has to be changed in the code or the existing installs. -- AaronR *** My plan was to keep RoboResearch and RRAH as totally separate entities, then just have RoboResearch fire up that totally separate program when desired for one iteration. At the end of each iteration (when the RRAH process exits) it would poll the server again to see if it should run some research battles instead. -- Simonton *** So basically, the question is: should RoboRumble be kept in a completely separate location, or should it be placed in a subdirectory of the RoboResearch folder? Now that I think about it, it may make more sense to keep RoboRumble separate; people may want to run RRAH without RoboResearch, and having a subfolder would make it harder to start the rumble client by itself (albeit only by one or two mouse clicks =). -- AaronR *** I agree, let's do it that way. -- Simonton (who is off to add you as a developer right now) *** Thanks, I've committed the changes. Could someone update their copy of RoboResearch and make sure that it actually works? I've been fiddling with my copy of the code so much that I'm not sure whether a fresh installation will even run with the new updates. Also, there is a bug that I can't seem to track down: it appears that the last bot in any challenge doesn't have its results saved to the database. So if you run a challenge, and then run it again, only the last battle will get run. For example, I just ran a MovementChallenge2K7/FastLearning? and it works perfectly, except that if I run it again, the only battle executed is Chalk (RoboResearch thinks that it has run no battles for that bot). -- AaronR *** Do you have an IM client? Please contact me via email or IM. (ContactInfo) -- Simonton AaronR - I've been using RoboResearch with your jar swapping for a little while now, and it seems to be working great! I refactored it a bit, I hope you don't mind. Also made one change: I let robocode deal with the .robocache stuff, since it delete directories automatically. It's nice to be able to just throw my dev bots into the robocode_bots directory without worrying about slowing down the battles! Nothing else has happened so far with RoboResearch 2.0; I guess I've been too interested in getting this WS-GF-GF/DC surfing going :). I hope that doesn't make you feel like your effort was a waste. I still want to do 2.0, and like I said, your mods are useful already! -- Simonton * Great, thanks! Feel free to refactor and change it all you want, it was more of a quick hack than anything. Some of the code was copy-pasted from my equally messy cache cleaner utility I sent in as a feature request. ;) I might be able to do some more work on RoboResearch over the weekend. -- AaronR Why does RoboResearch print "FAIL 2.0" to the console over and over when I run a MovementChallenge2K7? Looking at the code, it looks like this happens whenever it calculates the score... not sure why that's in there... --David Alves * That should be removed from the latest version if you update. The lastest version also does the bot jar swapping (which is so far undocumented in the getting started guide). But, you're the one who added that "FAIL 2.0" - I assumed it was for testing ... -- Simonton Oh hah, whoops! =) --David Alves I've just committed a fairly signifigant modification: you now no longer have to modifiy the RoboResearch source code if you are running Windows or if you want to run a local challenge (that is, not over a network). RoboResearch will auto-detect the operating system; you need to pass a new command line flag to run battles over a network. -- AaronR * Very nice! I just committed a quick fix: the runOverSever? flag was not getting set when a .cfg file was specified. Thanks! -- Simonton ** Thanks! Actually, from the SVN history, it looks like you just committed quite a few quick fixes... what are all of those other changes? -- AaronR And here I still ahve a rather ancient (in development terms) version of this for doing networked battles. --Chase-san * Actually, AaronR meant to connect to a database server in a different process (or machine), not running distributed battles. I don't know as I'd recommend updating, I have no idea whether distributed battle running still works. -- Simonton Hmm, I'm trying to use RoboResarch? here but I'm getting the following error: Exception in thread "Thread-1" java.lang.IllegalArgumentException: It's not worth storing a battle with less than 2 participantsAnyone have any ideas what could be going on? -- Rednaxela Hmm, nevermind, it started working when I used a clean robocode_bots directory with the necessary bots instead of symlinking to the main robots directory. -- Rednaxela Hmm, for some reason, I get problems like "pez.rumble.CassiusClay 2pi.08TC still has not started after 100000 ms... giving up." even though CassiusClay 2pi.08TC seems to work fine outside of RoboResearch. Anyone have any suggestions? -- Rednaxela Gah, nevermind. I misspelled my own bot's version and that caused the problem... -- Rednaxela Hmm, well I don't have anything near the nice computer labs of Simonton, but I am trying to run this in a distributed way but I can't seem to work out how. I've successfully set up a shared install of RoboResearch within reach of both computers, but I can't seem to figure out how to get the instances running on each computer to cooperate. Anyone know how to get RoboResearch to work in a distributed mode? -- Rednaxela I know the earlier version worked for distributed, but the later versions haven't been tested yet, now that multi-threading and such have been added. But take a look at [the code], you can probably figure it out. At first glance it seems it is specifically designed for the computer lab at Simonton and Chase-san's university, but with a bit of tweaking of hostnames I'm sure you could get it to work. From all appearances you have to edit the actual code to get it to load the distributed battle code, which is how all the stuff in RoboResearch was originally. If you want to add a hosts configuration file and some code to load it, email Simonton and he'll add you as a developer. -- Skilgannon Hmm, the code there looks like a bit of a bother. Actually, I think I'm more interested in trying to get started some time on the "communal RoboResearch server" idea that Simonton brought up above, than trying to fix that old distributed code :) -- Rednaxela * Still interested in that, Red? If so, drop me an email (ContactInfo). -- Simonton * Mail sent. :-) -- Rednaxela If anyone updates from SVN, be warned that the main class is now roboResearch.TUI, instead of roboResearch.BattleRunner?, so your scripts will need to be updated. Also, run roboResearch.GUI and let me know what you think of the design so far! Making the GUI is just preparation for running against a communal server. Rednaxela and I had a long discussion a while back about how the server should be designed; I still need to post a summary of our thoughts here to solicit feedback. -- Simonton |