PureAggression

From Robowiki
Revision as of 03:46, 18 August 2017 by MultiplyByZer0 (talk | contribs) (Mass-edit Robocode Repository URLs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

PureAggression

I hope it can live up to it's name.


BenHorner


Extends

AdvancedRobot, I just couldn't make any sense out of how to make a Robot...


What's special about it?

Not much.


Great, I want to try it. Where can I download it?

http://robocode-archive.strangeautomata.com/robots/benhorner.PureAggression_0.2.6.jar


How competitive is it?

It's getting better, debuted at 442. Then I added a crappy linear projection piece, and extended the range of the gun a little, and used the linear projection to cut the corners when chasing people down to ram them. That jumped it up to 421 or so, but the projection would get caught in an infinite loop all the time, on my local battles it said it would enter no score, don't know how the rumble would handle it. But I just got that fixed, re-entered it, and now it's sitting at 368/567.


How does it move?

It now uses linear projection for it's movement, it finds a collision point (in time and space) if the enemy stays on it's current course at it's current speed, and heads for that point, readjusting the projection every turn. I think of it as cutting corners, if I was behind Walls, chasing it up the right side, and then it turned the corner, I should be able to smash him against the top, rather than chasing behind him across the top.

I just made a little scaled down constraint programming system for figuring the turns. I pass the priorities between robot, gun, and radar to the constructor, then I can just pass in the effective turns I'd like to make, and it gives me back the turns I should make i.e. if radar is the highest priority, and I pass in (radar: 83, gun: -14, robot: -6), I get back out (radar: 45, gun: 20, robot: 10) for effective turns of (radar: 75, gun: 30, robot: 10) which is not what the gun and robot wanted to do... but that's what the priorities were. If someone has some simple way of doing this kind of thing, I wouldn't mind hearing about it, there's a bit of processing involved with this way... propagating constraints and domain reductions around and such.

The reason I separated it out from the run() of the robot is that I'd like to incorporate the reverse of direction when it makes sense, and the coasting at near (but not equal to) zero, for the acceleration boost. As well as, even later, when to slow down to turn sharper... I needed a place for all that to live. Not complex choices about where on the field to move, just simple mechanical type choices.


How does it fire?

It fires power 3's at fairly close range, limiting the firepower only to try to finish with a ram, but if near death (< 16.0) it fires to kill. It figures a collision point for the bullet, same as for a ram and fires at the angle to get it there. It aims for the center of the bot, I haven't worked in the dimensions of the bot yet. To keep it from running itself out of energy, it only fires if it would hit within 12 turns if the enemy stayed on course, that seems like it's pushing it to me.


How does it dodge bullets?

It uses the "soak up punishment" dodging scheme at the moment, that's a really easy one to program!


How does the melee strategy differ from one-on-one strategy?

OneOnOne only for now.


= What does it save between rounds and matches?

Nothing.


Where did you get the name?

From the strategy... I want to make a nice elegant, intelligent bot, with very good defense... but I think that will take a long time. Eventually I would have to start adding the offense anyway. I thought I could get something out relatively fast at the other end of the spectrum. (Dumb and brutal...)


What's next for your robot?

Probably some rudimentary dodging, and the guts to fire from range, and some rotational projection... I think I will probably keep a history of enemy positions and velocities, and project with an average of the most recent turns, equal to the number of turns it will take for the bullet to hit the projected point.