[Home]RoboRumble/ServerDevelopment

Robo Home | RoboRumble | Changes | Preferences | AllPages

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

Changed: 117c117,119
Pulsar has put together a new Data Manager class that solves the file locking problems. The new data manager is now installed for tests and seems to work. The RR servlets responds much quicker now. The locking mechanism used in the new version are JVM 1.5 only so the RR servlets are now running on an JVM 1.5 beta. Help keep an eye on peculiarities please. -- PEZ
Pulsar has put together a new Data Manager class that solves the file locking problems. The new data manager is now installed for tests and seems to work. The RR servlets responds much quicker now. The locking mechanism used in the new version are JVM 1.5 only so the RR servlets are now running on an JVM 1.5 beta. Help keep an eye on peculiarities please. -- PEZ

If noone has seen anything strange regarding uploads or errors when listing rankings or details on bot scores I'll submit this and the comparison stuff to Albert tomorrow for inclusion in the real/official version. -- Pulsar

@PEZ: I just uploaded the server v.b8. It synchronizes some methods, fixes a bug that was preventing RR server to write the log file, fixes another bug that allowed update of the rating files when someone was reading, and introduces a new class that will be used to remove old participants from the ratings file (it also filters bots that don't have battles for the last 5 days - I'w remove the filter when the new client is ready). Please, could you install them? -- Albert

I have a deadline at work to meet, but we can make a trade. I install the new servlets and someone can please tell me how to make the SRC for an html IFRAME element inline. I don't want to have to make little files or ASP scripts to feed the IFRAME since I would like the pages standalone (that is, not dependent on a server to create them) if possible. Target audience can be assumed to have a reasonably modern web browser with JavaScript activated. -- PEZ

OK, new servlets are installed and activated. I miss the color coding of the %share column in details though: http://rumble.robowiki.dyndns.org/servlet/RatingDetails?game=minirumble&name=pez.mini.VertiLeach%200.2.2 The new filtering seems to work, because now the only minibot that beats VertiLeach doesn't show any more. =) And, I still think it's strange that VertiLeach is not ranked #1 ... -- PEZ

It seems that now concurrent update is treated properly, but upload results performance has downgraded, specially when a new bot enters competition and all clients try to update results for the same bot. May be someone experienced with servlets could take a look into the current implementation? --Albert

How bad is the performance of uploads then? Maybe if the client ran the upload in a thread of its own it could continue running battles and hopefully the data will have been uploaded once the client is ready with new results. -- PEZ

Probably it could be a solution. Right now the client fails to upload about a 10-15% of the results for a new bot, just because it times out. It doesn't happen when it runs "normal" battles, because the same bot is not frecuently uploaded twice in a row. Anyway, I don't think it is a critical issue right now. The first priority is to fix RR@H to correctly deal with robot versions. -- Albert

@PEZ: I just uploaded the new server classes v.b9. They fix the problem with ratings (bots entering and leaving) and implement a definitive solution to the participants update, by allowing the client to tell the server when a participant has been removed (right now the only client that does it is mine. I'w release the new one as soon as I'm sure there are no bugs). They also fix the bug that made the colors associated to win/lose dissapear. -- Albert

Cool! I've installed and actived the new servlets. If you want material for a wall size poster: http://rumble.robowiki.dyndns.org/servlet/RatingDetails?game=minirumble&name=pez.mini.VertiLeach%200.2.2 =) -- PEZ

@PEZ: I just uploaded the server classes v.beta 10, which include the classes that implement the /PremierLeague rating system. To install, just proceed as usually, AND configure Tomcat to run the GenerateLeagueResults? class on server start-up (it's very time consuming to calculate the league results on-line, so it is set-up to calculate them every 12h). In my system, I made Tomcat to run the class at start-up by adding the following lines to the file web.xml in the directory WEB-INF:

    <servlet>
      <servlet-name>GenerateLeagueResults</servlet-name>
      <servlet-class>GenerateLeagueResults</servlet-class>
      <load-on-startup>5</load-on-startup>
    </servlet>
-- Albert

BTW - If correctly installed Tomcat should output a message ROBORUMBLE@HOME: Scheduling tasks ... when you restart it. -- Albert

OK. The new servlets are activated. Good work Albert! A question; How should this table be interpreted: http://rumble.robowiki.dyndns.org/servlet/PremierLeague?version=1&game=minirumble I had expected here to see VertiLeach have a rating of 100, but you have skipped the index I think? -- PEZ

Yes. Just to keep thing as "real world" as possible, it skipped the index. The score column is the total score of the bot (3 points for eacg win, 1 point for a tie). The wins/ties/loses is the number of pairings the bot wins/ties/loses. The pairings is the total number of pairings fought (note that new bots have a lower number of pairings, so they are handicaped till they fight against every one - but that's fine, they have to demonstrate they are good ...). Total %wins is just the sum of all the %wins against all the enemies (it is used when there is a tie). Bots are ranked:

  1. by its score (like in the premier league).
  2. if there is a tie, by the number of battles fought (the lower the number the higher the ranking). But I can see there is a bug there and the app is doing it in the opposite way.
  3. if there is a tie, by its %wins (it is equivalent to the "difference of goals" in the premier league).
  4. if there is a tie, bots are just sorted alphabetically !!!

-- Albert

This is great. Is the last column actually "Average % score share"? -- PEZ

No, I can see it isn't. So I instead ask. What's the last column? -- PEZ

It's just the sum of the %scores. Let's say that a bot fought 3 enemies. It got a 70% againt the first, a 30% against the second, and a 50% against the 3rd. The last column will be 1,5 (rounded). It is analog to adding the total goals scored in the soccer league. -- Albert

@PEZ: I just uploaded the new server classes for RR@H. They support targeted pairings, correct some bugs in the /PremierLeague and change the ranking system: Now it is 2 points for wins, 1 for ties (but it is almost impossible, since now a tie requires an exact 50%) and 0 for lossing. -- Albert

I've activated them now. You work fast Albert! -- PEZ

Hmph. I just completely reinstalled robocode and RR@H to fix the problem I was getting (which fixed it by the way), and about 12 hours later a new beta comes out. Just my luck ;). Interesting:

C:\rrhome\robocode\robots>java -Xmx256M -cp .;../robocode.jar;../codesize.jar; roborumble.RoboRumbleAtHome ./roborumble/roborumble.txt
Iteration number 0
Downloading participants list ...
Downloading missing bots ...
Downloading rating files ...
Removing old participants from server ...
Removing entry ... pez.mini.Tityus_0.4.1 from roborumble
OK. pez.mini.Tityus_0.4.1 will be removed from roborumble
Removing entry ... pez.mini.Tityus_0.4.1 from minirumble
OK. pez.mini.Tityus_0.4.1 will be removed from minirumble
Preparing battles list ... Using smart battles is true
Prioritary battles file not found ...
Executing battles ...
Fighting battle 0 ... Noran.RandomTargeting 1.0,bvh.micro.Svadilfari 0.2

Nice... But, why can't it find 'prioritary battles file'? -- Vuen

Not a problem at all. The first iteration the client runs battles as usual. Then, when it uploads results, the server tells the client which battles to run. So it runs focused pairings starting the second iteration. The message just says the first time there are no focused pairings. -- Albert

Are the new servlets in place? It seems that the premier league page has been generated by the old ones. -- Albert

I'll check again. -- PEZ

It is b11 that's the most recent right? I installed those again now and restarted. But the PL page looks like it's the old rules anyway. (Which is remarkably like the ELO-style rankings.) -- PEZ

Oh! I think I forgot to include the

GenerateLeagueResults$1.class
into the server, so it is using the old one. I'w upload the server again with all the files. -- Albert

OK. I Just uploaded the server classes again, this time with the missing file. I didn't changed the version name, so it is the same zip (server b11 with client b7). -- Albert

I actually noticed that this file had an older time stamp than the others and thought it strange. Should have asked about it. =) Anyways, now things are in place. I kinda like the PL mini rankings!!!! -- PEZ

Wow. Every single bot has full pairings. Good work Albert! Also kinda comforting to see DT back on top in the PremierLeague :D Strange, you'd think I'd be fed up of that bot by now... -- Vuen

Is there a possibility you could get the clients to try level the number of pairings? I mean that a particular bot would have been fighting all other bots about the same number of times. I tried to read the source code to see if this was possible, but I got lost somewhere when I didn't know what the server tells the client, or how. -- PEZ

The server passes the pairings to the client when the client uploads the results (servlet UploadedResults?), using the format "[bot1,bot2]". Note that it is only able to pass pairing for the bots the client has uploaded, because otherwise it would have to open lots of files (this way, the server reuses the files opened to calculate the ratings change to check if there is some missing pairing for the bots). Also, feeding the clients with pairings can lead to duplication of matches (it happens when two or more clients upload results for the same bot, and the first client is not able to send the results before the second one uploads its results). It is not a real problem now, because the "server pairings" are sporadic (note that the first 500 battles for a bot are fought against random enemies, and the server skips bots that have less than 500 battles, to avoid an excesive number of "server pairings") but it could be a problem if almost all pairings are decided by the server. So to implement it means to put in place a synchronization infrastructure (keep track of pairings send, allow for client to return results, check to time-outs, etc.) that would require a lot of work. Also, right now there are about 5.000 to 10.000 matches fought every day, but a complete league (ie. executing all possible pairings) requires 40.000 matches. It means 4 to 8 days to increase the number of battles fought (per pairing) by 1. It would take a long time to level the number of matches! In the mean time, probably there would be many bots that would starve. So, even if possible, I don't think it is worth the effort.

P.D. My bots have been going down for some months, without any major update. I plan to dedicate my time now to put a bot into the top-10, so I'w slow down any further development of RR@H (except for bugs), since I think it is fully functional now.

-- Albert

Indeed it is. Good luck hunting for that top-10 spot! -- PEZ

I agree; the RoboRumble as is is extremely well functional. Good work Albert. Maybe after a few weeks we could start on melee! :D -- Vuen

@PEZ: I just uploaded server b.12. The only difference is in the class UploadedResults?, that allows the upload of results for 1000x1000 fields (for melee). -- Albert

So that leaves the rankings and client, yes? -- Tango

Once the client will be able to upload results, the Melee rankings should be OK. I'm testing the new client now ... but I need the server to accept results. -- Albert

The new upload servlet is in operation. I hope it works. It's x-mas eve here and late. =) Merry christmas everyone. -- PEZ

Indeed! Merry Christmas! (1hr 20mins to go here, so i guess that's only 20 mins for you, PEZ) -- Tango

@ PEZ: Merry Xmas! It seems RR@H needs the rating files created in the server in order to work (I think the data manager doesn't deal with new files). The following files should be created in the server: ratings_meleerumble.txt, ratings_minimeleerumble.txt, ratings_micromeleerumble.txt and ratings_nanomeleerumble.txt. The easier way would be to copy any existing ratings file (ie. ratings_teamrumble.txt) and then delete its contents to keep only the header (first two lines, starting by #). -- Albert

OK, now the stub files are in place. -- PEZ

Pulsar has put together a new Data Manager class that solves the file locking problems. The new data manager is now installed for tests and seems to work. The RR servlets responds much quicker now. The locking mechanism used in the new version are JVM 1.5 only so the RR servlets are now running on an JVM 1.5 beta. Help keep an eye on peculiarities please. -- PEZ

If noone has seen anything strange regarding uploads or errors when listing rankings or details on bot scores I'll submit this and the comparison stuff to Albert tomorrow for inclusion in the real/official version. -- Pulsar


Robo Home | RoboRumble | Changes | Preferences | AllPages
Edit text of this page | View other revisions
Last edited August 14, 2004 3:31 EST by Pulsar (diff)
Search: