[Home]PureAggression

Robo Home | Changes | Preferences | AllPages


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?

https://www.robocoderepository.com/BotDetail.jsp?id=3421


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.

Comments, questions, feedback:


For future refinements, you may want to investigate the RamBots and RambotChallenge2K6 pages, and see how its kin approach this tactic. -- Martin

There is one way of defending against this type of attack - PerpendicularMovement. The trick to dodging a straight-on rambot is to move perpendicular and orbit it. Effectively, you wait for it to get close, then sidestep out of the way. So basically, any WaveSurfing bot or anything using the MusashiTrick will kill the bot you are proposing. ;-) Consider looking at GrubbmThree for a rambot that doesn't die easily. -- AaronR

I knew there might be some refinements in the close quarters movement necessary... but if I just slow down... then I can turn and pursue quite easily, and if they are standing still, then I should be able to shoot them quite a bit... Actually I'm glad to hear, I pretty much assumed, but I'm glad to have another confirmation that RamBots are not as tough as they might seem. That means there will be many challenges to come. What is the highest ranking RamBot? Or are they even competitive at all? --BenHorner

The highest one I can name off the top of my head is GrubbmThree, which is ranked #226. So no, they aren't really competitive. If you want a good start for a movement, you can get a basic PerpendicularMovement just by adding Math.PI/2 (or 90, if you are using degrees) to your setTurnXXX() line. -- AaronR

The best one to come along was KC's MaxRisk. He withdrew it from the rumble but the rumble has a long memory: ( https://rumble.fervir.com/rumble/RatingDetails?game=roborumble&name=kc.micro.rammer.MaxRisk%200.6 ) 1641 rating is pretty solid, given an approximate average of 1600 across the rumble. The top bots really really hate rambots, because they tend to be problem bots for them, draging their rating down. -- Martin


I've got my gun / radar / robot turning all working together now, and a rudimentary chase'em down movement in place, I notice that when I merely use setAhead(8.0) each turn that my robot only moves at a velocity of 4.0... Does anyone know the reason for this? When I use setAhead(16.0) it's velocity goes up to 7.0... So I've been using setAhead(1000.0) so that it will just go the full 8.0. Do most people just do something like that, and use setMaxVelocity?() when they want to slow down? --BenHorner


It's not perfect, but it never will be. It stomps the sample bots! I will have it in the Rumble as soon as I can figure out how to get it in there. :) --BenHorner


I've got an official rank, that seems to move around a bit in the low 440's. Disappointing, it was inevitable I suppose, the realist in me expected this, and is actually quite satisfied, the optimist however is crushed. :) The twentieth percentile, it's a good baseline, lots of room for improvement. Now I can see how smallish tweaks affect overall performance... --BenHorner

One quite obvious improvement you can make, is firing at a greater distance than point-blank only. A lot of bots move away (or at least move) when you get close, so there are only a few moments that you actually ram the opponent. Starting to fire (maybe somewhat lighter bullets) from a distance of lets say 200 pixels would increase your bulletdamage done and therefor your score. Remember that 36 pixels is as close you can get (2 times half botwidth). I found it a good way to start simple and understand the mechanisms of this 'game' instead of trying to fight against the best immediately. My first entrance was a lot worse than yours, so there still is hope. Good luck with your improvements! -- GrubbmGait

One more suggestion, this time on movement. There is a very usefull piece of code to be found at BackAsFront. Short said: If your destination lies behind you, and your turnangle is more than 90 degrees, just drive backward and turn 180-turnangle degrees. -- GrubbmGait

I just wrote something to do just what you've said above, if it's closer to the rear, switch perspectives, an go that way... but I think either the slowdown in transition, or the fact that it can sometimes bounce back and forth a bit when switching directions is a bit of a disadvantage, enough that it counteracts the advantage of following the more direct route... my rating is almost identical (1 spot lower as of now with around 1500 battles...) Does that seem reasonable? Or would you guess I've introduced some other bugs? --BenHorner

If BackAsFront doesn't help for a RamBot, then there are definitely still bugs. And since you're using linear projection for your movement, how about using it for your gun as well? Then you could also take shots (with smaller power bullets) until you get there, because your linear projection will have a better chance of hitting them. But get the bugs out before you add new features =) -- Skilgannon

I don't know if you've noticed, but you are 50 points below the top RamBot. Nice! -- Skilgannon



Robo Home | Changes | Preferences | AllPages
Edit text of this page | View other revisions
Last edited October 8, 2007 11:10 EST by BenHorner (diff)
Search: