|Thread title||Replies||Last modified|
|6.7||3||11:50, 22 October 2017|
|Performance Enhancing Bugs||8||10:04, 5 October 2017|
|Tradeoff between Survical and APS||4||18:22, 4 October 2017|
|4.7 - wow, one more percent to APS||5||12:20, 5 December 2015|
|3.4 - congrats||3||09:13, 11 October 2012|
|2.8 - nice work!||1||18:44, 25 September 2012|
Congratulations to this great APS improvement with 6.7! I was already feeling safe to be able to stop the development of Firestarter for a while, but Neuromancer's improvements come fast and I am wondering how far scores can be pushed in melee. A few months ago, I thought more than 72% APS is impossible :)
My deepest admiration for both of you, you both push each other beyond limits no-one has ever gone before. As most of you do is unexplored terrain, your dedication and stamina is admirable. Maybe this is the start of a revolution in the Melee field, in one-on-one we have had several since the start.
I think the melee revolution has already started!
Unfortunately, the complexity of melee surfing is so high I really don't think a BasicMeleeSurfer is really feasible. Just to have something that outperforms a random movement is a lot of code. This really raises the barrier to entry.
Thanks! Being at the top is never safe ;)
I think it is possible to get to maybe 75%, but the crazy 90% scores in the 1v1 will never be possible because you can't starve the enemies with a good movement like you can in 1v1 - they can just get points against other enemies. There are still major advances to be made in both movement and targeting in melee I think, but unlike 1v1 once you get to a point where your movement can enable a survival of 100%, all further advances will all come from the gun.
I just ran into a pretty strange one. The old prediction code I was using for my wave-intersections gave NaN hit points under certain conditions (reversing and turning a lot simultaneously). Fixing it raises my 1v1 score, but lowers my melee score a lot. The new method also also allows me to re-use my prediction paths, so I really want it because it means I might have a chance at multi-branch multi-wave surfing, but the score drop right now means that it isn't at all worth it. Crazy...
Figure out why it was raising your score and re-tune so that it has the same behavior for melee, but not for 1v1.
This old Performance Enhancing Bug just came back to bite me... I thought gunheat waves would fix it, but clearly not!
So is the bug fixed and re-tuned at that time? Or did u just leave it in, or branching on 1v1 and melee?
IMO, there always lies another bug behind one performance enhancing bug. The bug behind scene maybe in code, or it is just the assumptions you made when writing the code. e.g. ScalarBot’s gun is using far smaller cluster size nearly randomly (actually, it depends on the structure of the tree, which is not consistent over battles) in the past, but that bug helps against surfers dramatically. That bug is performance enhancing because the assumptions I made before using kNN with huge cluster size breaks when facing surfers. And using smaller cluster size is generally a rule-of-thumb of Anti-Surfer Guns.
Agreed. And from the rumble score, it seems that the rumble thinks re-introducing the bug didn't actually change anything, which means that it might be something else. Melee wavesuffering is so much worse than 1v1...
Sorry to hear that the recent experiment on bullet power does not improve performance. Anyway, my research gives me similar result — it seems that, when you are in significant disadvantage, the best chioce is to bet on bullet damage, which also prevents opponent from scoring as well. But when you are in little advantage — the best choice is to keep that.
This strategy feels the same as stock, where percentage energy is analog to market value. When the market value drops, it indicates the company has something wrong, then you’d better sell the stock (fire relatively high power bullets). While when the market value increases, the company is good now and may continuing increase, then you’d better keep it (fire reltively low power bullets). Note that high and low here is compared to the opponent.
Agreed, if there is no chance of getting the survival bonus then it makes sense to try to get some damage at least. However if for a very small reduction in damage you can get some guaranteed bonus, it can make sense to try for the bonus. Judging where that point is, is difficult though =)
Yes, and that’s what separates a good energy management from ordinary ones. For where that point is, my experience told me that, it depends. For those don’t react on your bullet power (and firing relatively high power bullets), reducing bullet power earlier (e.g. immediately when having noticeable disadvantages) generally works, even for the extreme case iirc, e.g. reduce to 0.1 suddenly. I think that’s because the opponent is losing advantage shortly (for wasting energy), then you can fire normal power bullets again. (this increases both survival and bullet damage, some of the time). But for those reacting on your bullet power, this trick only cause them to keep their advantage, therefore making you lose the last chance to win.
Also in my observation, ScalarBot wins RaikoMicro sometimes even with a huge disadvantage in energy (e.g. RaikoMicro has 10x more energy, and ScalarBot will die even with one shot). While against Diamond, when in huge disadvantage, even giving away every point of energy gives no return at all (but still better than giving that score to the opponent). It seems that the best energy strategy really differs among different opponents. Against weaker opponents, especially with relatively weaker guns (especially guns that change slowly), bet on survival seems to be the best choice, since my movement could be already learning their targeting very well after performing bad for a while.
Then maybe the best strategy overall is already what everyone is doing now — be conservative when low in energy, as even against those you have no chance to beat, giving the last few points to opponent should not make a real difference. But the best point may be different for different guns & movements.
Then may be the best way is to just find it out in a rather brute-force way — and re-do after doing big changes in guns or movement.
Congrats, for pushing already the best melee bot one step further away from the rest of us. I am still digging through 4.6 source code (thanks for opening the code). It is amazing how so powerful bot is done with relatively compact and simple code. I was expecting very large class tree and was shocked to see only 6 relevant files besides libs.
I am thinking that I should through away half of the logic in my code. I am clearly overthinking the problem.
Yeah I've always found, with this and other machine learning problems, that big ideas and better data help more than all the little bits of tuning which tend to take up the most space. Although the lack of classes is also just my style of coding, I actually find I can hold more of it in my head if I don't devote too much of the bot to structure, even if it is messier. It allows me to focus on algorithm and behaviour, rather than implementation details and constant refactoring.
Yeah, congrats! Might be interesting to see a re-release of 4.6 - its APS could be significantly different if released right now.
Good call - it might be time to wipe the melee results again. The inter-battle relations really screw things up as the rumble population changes, perhaps I should add some sort of rolling average to it so that the entire database doesn't need to be wiped every time. Maybe just the last 20k battles or something, or the last 20k/participants pairings.
I thought about a year ago we had a restart when we switched the allowed robocode version. Since than, there are only handful of new bots.
However, if it can drop the score of two of you even a bit, I am all for it :).
Melee would settle within couple days anyway, so why not to restart. I also presume that 1on1 is not affected by it. We can also upgrade the allowed to upload version to the newest robocode version at the same time. I am afraid it currently stops new comers from contributing their CPU cycles.
I'd rather fix the problem permanently than do a full reset again. I've updated the rumble to have a rolling average of 10k/participants per pairing. This should allow the rumble to catch up with slow drift. I've also added 188.8.131.52 to the list of allowed clients.
Thanks! And there's still so much to do! Heh... melee seems to me like it has more space to optimise than 1v1, because you get to choose who you want to fight =)
Well, it could also seem that way because you (and some other folks) have already optimized the living crap out of 1v1. =)
Wow, nice job! Usually I wouldn't think it's a big enough margin for the MeleeRumble, but our battle counts are off the charts these days, so it's probably accurate. =) I was wondering if I could make it through all of September only running my RoboRumble 1v1 clients - maybe I'll just stop when I get to a million for September. ;)
Thanks! And wow - that had more of an effect than I thought it would.
Considering the number of stupid bugs I suspect are still hiding, I think melee surfing still has huge potential to go further. There are still a lot of improvements in the surfing that could happen as well, which will make the whole thing much more accurate. Using overlapping firing/hit windows to figure out when fire and hit actually happened more accurately, using post-interpolated snapshots of the field for accurate firing data, all sorts of things which would potentially bring it up to 1v1 standards. Oh, and my surfing attributes are pretty terrible at the moment as well, as is reflected in my PL score =)
I think it just took a bit of initiative to push it further by taking into account every data and modelling it as accurately as possible. Others have done basic fire-at-me melee surfing, and I'm not sure why they didn't try a fire-at-everybody approach. Then again, I'm not sure if it is my fire-at-everybody approach which is giving me my success (although I'd like to think it is =) ).