From Robowiki
Revision as of 08:46, 26 May 2013 by Nz.jdc (talk | contribs)
Jump to navigation Jump to search


Bot Name
Aral, AralR

Aral (adaptive rolling average linear)

Another hopefully innovative nano gun, grafted on to my venerable an unoriginal Neophyte movement.

It uses the rolling average of absolute linear velocity feeding into linear targeting, which hits orbit and stop/go movement well.
Some additional time-since-direction-change logic to detect and adapt to oscillating movement (generally a hard counter to linear targeting) so it gets decent hits against bullet dodge oscillation.

Wave surfing, random movement or non-bullet-reacting oscillation is a problem for the oscillate detection, so it is slightly fudged using some variation (T_GF_OSCx, T_GF_0 etc) in the table lookup, which would otherwise just be T_GF_OSC for the first 20 ticks then T_GF_1.

Movement is semi stop and go, but using a clever direction change idea from dft.Freddie by Alcatraz271. This same movement is also used in NeophytePattern, NeophyteSRAL and NeophytePRAL.


The story of AralR is a bit of a cautionary tale for nanobot authors. When I wrote Aral I though the idea was pretty cool and expected it to be quite effective. In testing however I soon discovered that while it hit stop and go, orbit and bullet-dodge-oscillating movement types as intended, it was very weak against random. In the end I had to fudge the osc and linear targeting offsets in the table a bit so that it would not completely fail against random movers.

That of course lead me to wonder what a similar bot which just used random determination for it's offsets would work (rather than something 'smart' like time since direction change or a lateral velocity rolling average).

I had hoped taking that out would save enough space for some ramming code, but in the end all I could fir was a bit of bullet power management. Despite that Aral's dumb brother AralR is currently ranked 3 places higher :-/

The moral of this story is that while being smart is good, being a little bit smart is often worse then just being dumb or random. And obviously in a nanobot you usually only have enough space to be a 'little bit' smart, so you have have to choose that 'little bit' very carefully.