# Jokester

Robo Home | Changes | Preferences | AllPages

## Jokester

My Robots

Goals
• Complete
• Make gun detect and beat wave surfers
• Complete movement
• Release a bot with both gun and movement

Projects

1. An anti-GF movement strategy, combining the best of cool movement, surfing, and flattening
2. GuessFactor2D - Currently seeing if I can get it to score well at the PMC...
4. ReWrite? the wiki! After reading it there were alot of things I want to change, so Im going about it bit by bit.
5. Design Overhaul
1. State machine
2. Utility collection for all calculations
4. GoTo? based movement

Movement

My movement and targeting are based around an algorithm im working on for the possible positions of movement, based on the robots current velocity and the time it has to move. If a robot is perpendicular to you when you fire and is moving with a velocity of 8, it can travel 24 in 3 ticks, but if it is stationary it can only move 6. Likewise, if it changes direction at the time of fire, the bot moving at 8 will still have traveled 12 forward, while the stationary bot would have traveled 6 backwards. While general forward and backwards movement is relatively easy to model, I am currently working on calculating maximum distance if the bot was to turn. Once I am able to graph the area possible for the bot to move in the time until impact, the graph can then be translated according to the bots current heading. From there I project a curve onto the graph which represents my variation in the target distance from the enemy (if I want to maintain around 300 away, I will have arcs radiating 325 and 275 away from the enemy). I then segment the target space by guess factor, and choose the polygon least likely to be fired upon. I go to the center of that polygon in order to avoid being hit.

I am also toying thinking about doing some 2D flattening or a multi dimensional random movement, as a counter to my current targeting. I am not sure how well it will work, but it could mess with some of the guess factor guns.

I think the usefulness of 2D flattening might not be so great, because the premise of it as well as your targeting is probably wrong unless you 1-dimensionalize it. In your targeting algorithm, you should be checking angles to see which set of 2D GF buckets they hit and look at the sum of hits in each bucket that each possible angle can hit when you're looking for a shot angle. In the end, the important part of the flattening is 2D. -- Kawigi

Ya, your probably right. My targeting is mostly based around selecting the firing angle that intersects the highest number of buckets. That probably wouldnt work too well for movement, but I really need to look at another good guess factor gun. I have a vague idea about how most of them work, and I am trying to fix the flaws I see with that generalization, but Im sure that other people have done things to fix the same flaws in their guns, so I need to know exactly what I am up against rather than designing a movement around some imagined problems. -- Jokester

;-) My GuessFactorTargeting/Tutorial might be a fine place to look to see how alot of those sorts of things are solved in guess factor guns. -- Kawigi

My Questions

Currently this is mostly theoretical, but some basic tests look fairly promising. I just need to have a few questions answered before I can continue.

1. I understand that acceleration, velocity, position, etc occur as a result of discrete ticks, in the order that I wrote them, but how does turning get factored into this. Turning speed is a factor of velocity, but is the robots heading changed before or after the velocity is calculated, etc??
2. I am a little unsure as to how most guess factor guns scale the -1 to 1 arc. For those that base it off of the bots heading, wouldnt it return the same angle no matter what guess factor if the bot was heading towards you? Do the good guns take into account the maximum area the bot could travel, or do they assume a circle for a velocity of 8 in all directions? I would really like to know this so that I can decide whether to apply my firing data directly onto my possible arc, or whether I should apply it as if I was able to move at full velocity in all directions.
3. Is there a way I can use Java's geometry to make my calculations easier. Can I use Circle, Elipse and etc to give me the polygons, or is that too much to ask...
-- Jokester

(Fixing your formatting on the questions to use a wiki-style ordered list)

1. Turning is done before the new velocity is calculated, so your turning speed for the next tick is based on your velocity on the current tick.
2. What you are describing sounds like the linear guessfactors that SandboxMini has. What has been more common (especially since FloodMini) is to make GF 1 the angle they could get to if they could instantly move at speed 8 at the optimal angle in the lateral direction that they are currently moving in. GF -1 is just the negative of that. The theoretical GF 1 (also known as the "max escape angle") is offset asin(8/bullet speed) from head-on (in one direction or another), which should actually make some sense if you've figured out how you calculate the gf based on their going in a straight line (however it's not obvious, and there's been a reasonable amount of arguing about it).
3. Yes. You'll see plenty of Robocode code use at least Rectangle2D, Point2D and Line2D. As for Polygons, you could use a java.awt.Polygon (but you're limited to integer coordinates). There also might be a general shape that's semi-useful. I'm not sure how much functionality java.awt.Polygon gives you aside from letting you check if a single point is contained by the polygon.
--Kawigi

Thanks alot. So I just want to check this, is this the correct order for events. Robots get updated in order of the list, with the ticks increasing when the list is ended. First events. Second while loop stuff then at end of turn: Turning (not sure the order of Radar, gun, bot, I think simultaneously) Acceleration Velocity Position -- Jokester

The GamePhysics page would be the place to check that. -- Kawigi

Now that you completely read the wiki, is there any info missing and/or hidden in obscure pages? -- GrubbmGait

Well I am still processing, but theres alot of interesting stuff out there. Theres alot of stuff I would love to go through and restructure, and I plan on making a significant contribution to GoodWikiPages soon. I have found a couple of obscure/hidden pages dealing with some theory, a ton of open source code I plan on poking through, and alot of great stuff on segmentation (a pet project of mine while I implement GuessFactor2D) the two pages that have struck me at the moment are WikiTargeting and MeleeStrategy but there are several others -- Jokester

Well, those are pretty theory-centric pages - I'm honored to have written one of your favorites :-) -- Kawigi

Congratulations for the good work on rewriting the wiki. Pretty awesome. -- lRem

Thanks, I have been a little unsure lately about some of the changes. Its mostly been trying to balance getting the most information out in the clearest way with keeping the roots and brainstorming of the past. Also, if anyone knows if I can have links to topics within a page (ie a link that will take you lower down etc) that would be great. -- Jokester

Check CassiusClay for links to topics within a page. Your effort really makes things easier to find. -- GrubbmGait

Excellent, thank you. You wouldnt happen to know how I could access those from an external link (eg link to one of those from this page) -- Jokester

Simply add CassiusClay#Design metaphore, or maybe [some words to be link text] like this. -- Kawigi

I'd like to extend a thanks to Jokester for his work with tidying up the wiki. Great work dude. It sure is needed. -- PEZ

Hear, hear -- GrubbmGait

OK, I have gone through my preliminary work. I am fairly satisfied with the home page (I would like to remove the resources section, but that will be done when I better organize the Resources page). I think I will leave the wiki alone for a little bit, because with all these pages I have a ton of ideas, and its been nearly 2 weeks since I have done some actual coding. -- Jokester

Gotten pretty bored this summer and decided to play around with this stuff again. Any big changes in the past year? BTW, i managed to fail the consciousness check on my first try to post... hehe -- Jokester

I may not be the most qualified to recap, but we've definitely got some new challenges and a half dozen more bots above 2K in general 1v1. There was also a killer SPAM attack that resulted in the Consciousess Check that's now in place. Welcome back ;) -- Voidious

Robo Home | Changes | Preferences | AllPages