How does it feel to be beaten by a Girl
(I guess it's about time this bot had a page...)
1.0 - Created for Alcatraz
. Most of the code is ExtendsRobot
-ized from a dev version of Coriantumr
I happened to have handy at the time. No real
one-on-one movement yet, but since it's the first GF gun in the Robot
world, and it's melee movement stays out of HOT's way reasonably well, I don't think it will matter. I was a bit late for the first ERC, but I was in the second one (which was the next day), and started the first ERC "dynasty" :-), winning 1-on-1 and melee for a month.
1.1 - Now has a one-on-one movement and radar. Made to beat Krazy 1.4. Back to the drawing board, Alcatraz! (that was my remark at the time, anyways) Looks like this version was on top for 6 months, but only 3 tournaments happened in this time (what? Robots are fun!)
1.2 - It's been awhile, and Alcatraz didn't tell me he started beating Girl again. I improved the accuracy of the gun a bit and tweaked the one-on-one movement. This should give me back the ExtendsRobot crown! Currently on the longest winning streak in ERC history, winning 4 straight tournaments (and it plans on winning the next, probably giving it the all-time highest 1-on-1 "career score" (for lack of a better name), or at least tying for it).
What's special about it?
Look above. It extends Robot
. And it kicks your Robot
's butt. Or it would if your Robot
had a butt. Yeah. I'm witty.
Great, I want to try it. Where can I download it?
How competitive is it?
s, it's the opponent they have nightmares about. If they slept that is. Man, this personification thing on this page isn't working. Against AdvancedRobot
s, it's closer to the middle of the field. It's a solid bot, but it doesn't move quite well enough or fire frequently enough to be a great bot.
In the ExtendsRobotCompetition, it has won every melee/skirmish battle that's been run, often by some margin. This isn't surprising, really, since it's based on Coriantumr's movement (and gun). Various versions of Girl have also won more than half of the 1-on-1 tournaments (but Krazy typically comes out with a version to annoy me periodically).
How does it move?
Originally, it used MinimumRiskMovement
for everything, very similar to that described in MeleeStrategy/UnderstandingCoriantumr
. Since then, it has evolved the 1-on-1 movement to be more like what you would get if you took Fhqwhgads
, added WallSmoothing
, and converted it into discrete, linear, jerky movements. It also has a Musashi
-esque behavior to avoid HeadOnTargeting
until it gets hit a few times.
How does it fire?
Very carefully. It features the *very first* (to my knowledge) GuessFactorTargeting
gun for a Robot
. It is adapted to Robot
-ism as well as Melee
-ism because it uses FloodMini
's waves, which are resilient to missed scans (they interpolate movement linearly during the missed scans, which, one would think, would be a reasonable approximation for Robot
s). This is good, because I only am really guaranteed to scan enemies every 50 scans or so (but sometimes I get lucky and steal a scan while I'm turning or moving).
In the beginning of a 1-on-1 battle, it doesn't change direction unless it feels like it has to (and don't say it doesn't have feelings, it's a Girl
after all), for sort of a MusashiTrick
effect of avoiding HeadOnTargeting
. After that it moves randomly and hopefully more unpredictably than your bot does, so it can kick the crap out of it.
In melee, it tries more to avoid getting fired at, but if there is someone it thinks is firing at it, it moves more-or-less perpendicularly to that bot.
How does the melee strategy differ from one-on-one strategy?
Aside from what's described elsewhere on this page, the radar strategy is mildly interesting. Basically between movements, it spins its radar a full circle in melee, or spins it about as far as it thinks it needs to in 1-on-1 (maybe it spins it the rest of the way if it doesn't see the enemy?)
How does it select a target to attack/avoid in melee?
I think it aims at the target closest to it if it knows which that is.
What does it save between rounds and matches?
Between rounds, it saves GuessFactorTargeting
and probably some other trivial things. Between matches, it can't save anything, because it's a Robot
Where did you get the name?
Actually, I really didn't know what to call it (I don't even remember what the working name was), but I decided this one seemed funny.
Can I use your code?
Sure, but don't make a better bot with it (at least without showing me!)
What's next for your robot?
Probably beating some future version of Krazy
again, or someone else's new kick-butt Robot
. I suspect the next version will hold a more aggressive distance in OneOnOne
Nope. It's the best in its class! It is Krazy
What other robot(s) is it based on?
Comments, questions, feedback:
Interesting. How did you manage the radar? (as you can't use setTurnRadarRight
(....) in extends Robot)--Starrynte
If you watch Girl closely (and in slow motion), you'll notice she spins her radar between motions (in one-on-one, I think the radar management is a little bit smarter, too). Also, when she turns or moves, sometimes she picks up a free scan :-) The reason the targeting still works alright is because of something I've done for a long time, which is linear interpolation of missed scans in my waves (which is an especially good estimation against ExtendsRobots. -- Kawigi
How do you end the tick with extends Robot? --Starrynte
lol. Have you ever written an ExtendsRobot? The basic idea with a Robot is that you don't have "setXXX" calls, so every movement call is blocking. Calling "ahead(x);" is the same as calling "setAhead(x);while (getDistanceRemaining?() != 0)execute();" and calling "fire(x);" is the same as calling "setFire(x);execute();". That makes it so that you can move at the same time as you turn, or turn your radar at the same time as you move, or even fire at the same time as you do anything else, with the exception that you can do things concurrently if you do some of them in an event handler (for instance, if you get a scan while you're moving, you could turn your gun and shoot in onScannedRobt?, but you'd still be moving, presumably from your run method). -- Kawigi