Melee ranking ...
The highlighted comment was created in this revision.
Hi mates... (sorry for my bad english) Can i suggest a discussion about the melee ranking in mini, micro, nano weight? Maybe i don't fully understand how the ranking is working, please correct me if i'm wrong.
To me it looks like, that the lower weight classes are influenced by the battles against the higher weights. Lets say we have a nano bot who is specialized on close combat. Against the own class bots it could survive very well because the other bots are also limited and you can put more code in the gun than the movement. If it now comes to pairings against the, lets say mega bots, it has to die very quickly because it goes still close to the enemy (not the best idear against a heavy gun). This is just an example. What it shows, is that you have to deal with the mega bots and there is only one option - improve the avoid movement. If you improve the movement you have no codesize left for a competitive gun against your own class and so on. I think the current ranking system fafors the movement more than it should. One more point is that the current ranking favors mega weight (more bots) and so you get way more battles where you are paired against bots of other classes (it looks like 3:1 battles against higher classes). My suggest is to make the weight classes indepentend. I think you can still be paired against the higher classes but it shoul'nd count for your current class if there is another bot of your class within this pairing.
I hope it is clear what i meant and you should see what i want to say. My english writing isn't that good and i wished i could explain it a little more ... but well you know:)
Wompi
You want nanobot rankings to use battles with nanobots only.
I think it is not being done mostly because of historical reasons. 10 years ago there was barely enough CPU to process a single melee league, much less 4 independent melee leagues.
Today it might be viable. But the client needs to be modified and the melee rankings in the server needs a reset.
Yes this is what i want. Aswell mini and micro. Hmm are you sure about the historical reasons? Because the single bot weight classes are independent as far as i can see this. My thought was that the battle pairing script isn't capable of matching the bots on weight classes for melee.
I'm not sure if the client has to be changed, would'nt it be the same logic just with other battle pairings? I mean if the client is ready to run shuffled melee it should be ready to run weight class battles just as good. I think there might be some work on server side to bring the right battlepairings up, but i could be wrong. About the reset of the current ranking results, well i have'nt thougt about this. I'm not sure how big the influence would be on the current results. On the other hand, maybe a reset brings back some vets to work on there bots again - who knows.
All in all i really would like to see a ranking by classes. I find it very educational to start with the lower classes, because there is plenty to learn from.
Sidenote: MN can you do something with your mn.SuperSittingDuck 1.0 it says on both (1.7.3.0 and 1.7.3.2) clients that i cannot handle this bot. It is something around version minor/major. (not quit sure i can recheck this if you want) ... no offense. It would just be nice.
Did someone find a bug in my single-line-of-code bot?
That bot was generated with the internal Robocode IDE. The only causes I can think of are Java 1.5 incompatibility, or corrupted downloads.
Todays download (1.7.3.4 client) .. rebuild database Got an error with mn.SuperSittingDuck: java.lang.ClassNotFoundException: mn/SuperSittingDuck : Unsupported major.minor version 51.0
I think there are quite a few bots compiled with Java 6. Any chance you can upgrade? Java 5's pretty old. Even us Mac users have Java 6 now. =)
Hmmm .... i got:
Terminal: java -version java version "1.6.0_29" Java(TM) SE Runtime Environment (build 1.6.0_29-b11-402-10M3527) Java HotSpot(TM) 64-Bit Server VM (build 20.4-b02-402, mixed mode)
Robocode About: Running on Java 1.6.0_29 (64-bit) by Apple Inc.
So i'm almost half sure :) that i'm runing on 1.6 ... i will recheck this. And SuperSittingDuck is the only bot who gives me this exception.
Edit: looks like you used 1.7 ... according to wiki - class version 51 is 1.7.
One thing to be clear about: while a battle containing MegaBots is not ignored in the NanoBot rankings, only the relative score of two NanoBots in that battle is contributed to NanoMeleeRumble. If NanoBot A gets 9th with 500 points and NanoBot B gets 10th with 300 points, what's logged to the NanoMeleeRumble is A winning over B with 62.5%. NanoBots that do particularly well or poorly against MegaBots will still have their rumble score impacted by how many NanoBot-only battles they get, though.
Since most bots in a weight class have similar weaknesses against bigger bots, I don't think it's having a huge effect, but it isn't zero either. I've seen MicroBots have their MicroMeleeRumble score change by maybe 0.5 APS from the time they have 2000 Mega-battles to the time they have 2000 Micro-battles.
I agree counting only all-NanoBot battles for NanoMeleeRumble would be better, and that the CPU load is probably not a huge issue. (Non-MegaBots tend to be so much faster, Melee rumbles have less activity than 1v1, and our CPUs have gotten much faster, too.) I think the biggest hurdle is how much work it would take to implement vs how much it would really change scores. I think it would require client changes, too, because the client is what decides which pairing data gets uploaded to which rumble.
Those 2000 Micro-battles all have megabots in them.
In a nanobot only league, nanobots will be killed by other nanobots. Simple targeting against simple movement. It might completely change survival scores and rankings. If you watch a samplebot only melee battle, Walls usually survives last. Add a single megabot and Crazy tends to survive longer. (flatter movement profiles tends to be ignored by top bots in melee)
I could volunteer to update the client, although there are other things in the rumble bothering me more, like slow client uploads. I would prefer to fix those first.
What do you mean? As far as I know, it works like this:
- MegaBot battles until 2000 battles in MeleeRumble.
- Battles against lowest weight class bots only until 2000 battles in lowest weight class.
It used to go MiniBots until 2k in MiniMeleeRumble, then Micros, then Nanos, but it was changed to result in less overall battles for Nanos/Micros, since they're already getting so many extra before they've stabilized in every weight class.
Currently, all melee battles mix all weight classes.
All bots battles until there are 2000 battles in megabot ranking. 2000 is the sum of all pairings against nanobots to megabots.
But in nanobot rankings the sum of all nanobot pairings is still lower than 2000. Then all bots battles until there are 2000 battles in nanobot rankings. Which means the sum of all nanobot pairings is 2000, but all those battles in nanorumble still include megabots.
Almost no battles have 10 nanobots. A battle with 2 nanobots and 8 megabots also counts for nanorumble. And those 8 megabots affect the APS between the 2 nanos. Those 2 will be crushed before having the chance to interact with each other, the nano with worse movement profile being crushed first.
I was very strongly under the impression "but all those battles in nanorumble still include megabots" is not the way it is. Yes, the battles from when megabots are getting to 2000 score *are* still counted, but new battles made specially for the smaller league only include smaller league bots. At very least, that's how it used to be I believe.
Really? Definitely not how it used to work, and sounds like it could even be a bug in the client. Maybe Darkcanuck can comment.
I had a look at the client source and to me it looks that the battle generator works a little bit different. As allways i might be wrong with that but to me it looks that the client pairs allways first bots out of the "prioritymelee.txt" (send by the server) against the whole competition. If the server sends no priority file (does that ever happen?) the client checks the bots current battles against the BATTLESPERBOT property. The client checks this property from top down GENERAL,MINI,MICRO,NANO. If you have the standard property of 2000 battles this means by the way you come to the nano class you have 2000 general (all bots) 2000 mini (mini,micro,nano) and so on battles until you reach your own class weight. Til then it it is very possible that you have the 2000 battles reached in your own class and you never come against your own class only. You can recheck this by having a look at the "PrepareBattles.java" class.
Beside the battlegeneration i still find there is another reason while we should think about weight class only competitions. Voidious stated above with his example of bot A and bot B only the relation between this two bots. But if you take all bots of your weight class into account you see that bot a might be better in this particular battle and might be the best bot in his class. But if bot B has an overall better movement he will sum up scorepoints against all weaker bots of his class and so in the end he will be better than A. Maybe the example is'nt so good but i would just show that you have to look on the influence on the whole weight class. If a bot has a stronger movement it is most likely that he will gain an overall more score than one bot with a weaker movement but a strong class releated gun. Moreover, how the client picks the opponents is very random and it can be that bot B allways (or at least more) become weaker mega bots then bot A and this can generate another influence on the overall scoring.
Please feel free to correct me if i'm wrong. I'm still very new to robocode/roborumble and it might be this lack of experience that took me the wrong way.
Slow upload isn't client problem; it's the server. I believe darkcanuck is throttling the upload on the server because the server can't handle the load,
Although if we do this we should clear all the battle data from nano/micro/minimeleerumble, too.
Its how the protocol works which slows down uploads. According to Bwbaugh, the server can handle about 30 clients. Or can handle 30 times what a single client uploads.
The ideal would be to adapt the protocol for batch uploads, but it is also possible to achieve a similar speed up changing the client alone.
Faster uploads would benefit all leagues, melee leagues even more, since a single melee battle generates about 45 to 180 pairings.