Best laid plans
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.
Good luck
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.