|16:54, 10 June 2013
|02:49, 6 June 2013
|Another one off the production line
|01:53, 29 May 2013
|03:02, 21 May 2013
|Best laid plans
|05:03, 18 May 2013
|03:45, 10 May 2013
So I did a quick survey of the top 52 nanobots.
I was not particularly surprised to find that a lot used pattern matching guns of one kind or another, but I was a little surprised that "a lot" was really A LOT !.
I counted 33 pattern guns in the top 52. 33! Many predate it, but quite a few are derived from WeekendObsession, which was one of the first to really shrink the pattern gun code.
Less little black book (a special case) and rammers like Sabreur and Caligula (also a special case) that is an overwhelming dominance of pattern guns in the nano arena.
This leads me to a few conclusions:
- I had better put a bit more movement effort into combating pattern guns.
- I'm glad I have contributed some new non-pattern guns to the store of nano-robo knowledge.
- I'm kinda proud that I have 5 bots with non-pattern guns in the top 20.
- This has now removed any remaining qualms I had about stealing Yatagan's movement and using it in PralDeGuerre.
I now fully intend to see how high I can push the PRAL gun up the rankings. 3rd is likely. 2nd is possible. 1st is probably out of reach, but let Yatagan and his devilish pattern gun sit uneasily on his throne...
Cool info, thanks! Nano-land is pretty interesting and such a different ecosystem than the other rumbles. I feel like we lack a lot of this kind of high level analysis here on the wiki, with everyone usually just focused on the next thing they're working on.
This has been a painful process. I have tried at least 10 variations of my old neophyte movement without any improvement.
I have also tried 4 variations of Yatagan movement, some at a substantial codesize cost, also without improvement. I am resisting copying Yatagan's movement until I can actually make it better, but that is looking ulikely.
Two or three other move ideas also proved fruitless. I even spent a night extending my benchmarking test harness to provide better data on movement performance so I could analyse multi mode options, but that really only told me what I already knew: Yatagan movement is pretty strong...
Somewhere in there, along with the discussion on Talk:Yatagan/Source I found a byte or 3, which is always nice.
But finally in between the caffeine and the sleep deprivation I got a new idea, which now has 5 variants. Two of the variants I might be able to fit in the codesize. Fingers crossed they survive benchmarking. If so there might be a decent new bot in there somewhere.
The new movement has been christened "Adept" and is now being trialled in AralT, AralR and soon in PralDeGuerre. It borrows a few ideas from the Neophyte movement, tries to combine them with some ideas from Yatagan movement and ends up being larger than both and still worse than Yatagan.
Adept is a little disappointing, I had high hopes for it, but in the end it did not quite deliver. Nor did the other 4 ideas I was considering at the time or the 3 new ideas I had since.
Are you sure it isn't just tuning? Yatagan gained a lot just by things like adjusting whether to do Orbit or Oscillate first, and adjusting optimal distance.
Probably not. It is based on the old neophyte move with the addition of orbit/osc stolen from yatagan, so the movent modes it is using are both well established.
And I do actually do a little testing. I benchmark (reporting several different stats) over the full 200+ nanobots and usually do in excess of 30 different combinations of tunable parameters. Fortunately my test harness will take parameters, so at least I can set a batch of tests running and then have a cofee :)
I could always have missed something, but some attempt has been made to tune it.
The bottom line is just that Yatagan movement is very good. Orbit will totally defeat some weak targetting, oscillate will defeat most other weak targetting. Once you have removed the weak ones, what is left is generally random, good or very good targetting, against which random movement appears to be the best answer. Hence Yatagan's success. Neophyte movement, while a good general strategy, is not really all that random since it still triggers on bullet detect, so it is slightly less effective against good guns than truly random movement.
PralDeGuerre with the new move is up to 3rd. PatternAdept (due soon) might make it to 2nd, but neither will catch Yatagan. PatternAdept cannot "borrow" the Yatagan movement, because it already has a pattern gun, so would effectively be the same bot. It remains to be seen if StatMan (in early development) will be strong, but if not then in the end PralDeGuerre will probably have to take the low road.
StatMan did not turn out as well as hoped, so I tried some had tuning of the recorded stats, but that was worse again. I estimate it would have ranked around 10-14, so since it was not particularly good or notably innovative (it was basicly a general purpose rather than opponent specific version of LittleBlackBook's canned guess factors) I have scrapped it.
Currently I am almost finished GridFu my first and probably only nano melee bot. Following that is a probable update to PralDeGuerre (the inevitable theft of Yatagan's movement, it will be interesting to see how my PRAL gun stacks up against the current best pattern gun on a movement-levelled playing field) before moving on to updating my microbots.
Aral, my new nanobot has just been released to fight it out in the rumble.
I do not expect it to rank highly, indeed I almost discarded it, but I haven't seen a gun like this before, so being novel is a good enough reason for it to see the light of day.
I have another nanobot(yes, another unusual gun) and perhaps a melee nanobot planned before I start work revising my microbots.
And also its dumber random brother AralR which perversely is ranked higher, currently 18 to Aral's 21.
And the microbots have to wait, I have a few more nano ideas, firstly the extra segmentation for NeophytePRAL which has already been released, getting it up to 5th, and some new movement under development.
The new versions of NeophytePattern and NeophyteSRAL are up and in the rumble.
Managed to advance Pattern a couple of spots, which is about what I was expecting from my own tests, but the SRAL changes are working surprisingly well. It has risen quite a distance and is now around 8 or 9. It will be interesting to see where it settles down.
 whoops, dropped down to 10. Oh well, still a slight improvement.
I have found a few useful changes to make to PRAL, so hope to have those updates done soon.
 The new PRAL is now up. It looks strong in my testing. I hope the improvements pan out in real competition.
Actually PRAL is my baby, it was one of the first decent ideas I had and I was always disappointed it didn't do better. I found a substantial change and a few tunings to make. This time it might even pass the new and improved version of SRAL :)
Cool, nice that my updates were good for a place or two, though no chance of catching yatagan or LBB without stealing all their ideas, in which case they would be the same bot, so I'll have to be content where I am unless I get some serious divine inspiration happening.
Actually I am very impressed with Sabreur (and also caligula). Way back I noted I had problems with SledgeHammer and other rambots. Sabreur has very strong movement and quite close range. Anything that its linear gun and luck can't hit eventually gets rammed into a draw. Amazing how highly that simple logic can place when its movement is good enough.
NeophytePRAL seems to have stabilised at 7th, which I am very happy with. I think it is the highest ranked nano that does not use a pattern gun or ramming. Ironicly now I have re-analysed/corrected/improved the gun logic in SRAL and PRAL it is now evident (doh! supprised I managed not to realise for years) that they are actually very similar and use different mechanisms to achieve a similar result. Cousins indeed.
I can't take too much credit for the success of Sabreur's strategy, because that was definitely taken from Caligula. Although, I did make several tactical improvements, which are exemplified by the almost 1.7% difference between their scores. :) I even made room for colors, making it the highest ranking nano with colors.
It's actually an interesting story. The first version of Sabreur was, strategically, a lot like Bicephal, in that it used Stop and Go followed by ramming movement, and linear and HOT targeting. Basically, it would switch randomly between HOT and LT while in SAG mode, but only use LT when it was ramming. Despite sounding cool, this strategy only got it to 9th place. So the next day I took Caligula's code, shrank it by about 50 bytes, made it much more aggressive, improved mode selection and energy management, and added colors. And after one more tweak, I got it to where it is today. Sabreur 1.0 is still somewhere on the repository, if you care.
Getting to 7th place with averaged linear is quite an accomplishment, even if your movement isn't that original.
So I started with an idea for a simple extension to my micro bot to extend it to a mini.
That plan expanded as I saw some space savings that would allow me to make a few changes to the micro bot.
Then I had an idea for a new nano variant of my venerable NeophyteSRAL bot, which then turned into two ideas and then 4 new bots!
Fortunately preliminary testing caused 3 of those to be discarded :)
Swiftly followed by another idea which also proved workable :(
Then I decided while I was at it I might as well update (and hopefully improve) my old nanobots, before updating the micro and then starting work on the mini. So much for this being a quick update. So the current count is:
- Updates to 3 old nanos (1 almost done so far).
- Finish the 2 new nanos (both written, but not tuned/optimised yet).
- Update microbot (pages of notes, not much progress yet).
- Write minibot (pages of notes, no actual code yet, waiting for the micro as that will be the start point).
One thing you may want to look into for SRAL and PRAL is either switching to
onBulletHit enemy energy adjustment, which is more effective than making sure the energy drop is less than 3.0, or using Miked0801's char trick to save 6 bytes over your current method of checking the enemy bullet power.
Also, I think SRAL's scores against oscillators would be greatly improved by increasing the rolling depth to about 30. That way you average both the positive and the negative, and shoot closer to GF0.
Just for fun, I doodled a bot that kept rolling averages of the enemy's lateral velocity at every rolling depth between 1 and 100, and then picked one at random at which it would aim. If you're interested, I could post the code on the wiki.
You're welcome to use any trick you see in my bots, as long as you give credit and keep your bot open-source.
Yes, I've seen the char trick and will be _borrowing_ it ;-)
Not sure about the averages. Oscillators were not that common back when I first wrote these bots, but now the orbit/osc/random move pattern is common amongst top bots and powerful, so something to combat it is required.
One of the new experimental nanos specificly detects and can combat osc, unfortunately that then tends to make it weaker against true random and longer osc periods. C'est la vie. It and the other updates will require some extensive benchmarking to find the best values. It is a pity my test harness is not multithreaded.