User:Dsekercioglu/Thoughts on targeting
When your robot fights against a weaker robot about %55 - %65 of the score comes from damage.
There are mainly 2 ways for predicting where the enemy will be.
- 1. Angular Systems.
- 2. Positional Systems.
- Angular Systems
- Positional Systems
- Linear Targeting, Circular Targeting, Pattern Matching are used.
- The most efficient system so far is Play It Forward.
Choosing the Correct Angle/Position
- Oscillators change their direction periodically.
- When close to walls some bots change direction.
- Many bots tries to get away from the enemy when close.
- Stop And Go bots move less when bullet float time is low.
- Decelerating bots generally change direction.
- Classification algorithms are used here to get the best prediction.
- The most used 2 algorithms are KNN(DC) and VCS.
- Lateral Velocity
- Lateral Velocity has a direct affect on enemy movement.
- Simple movements generally keeps the velocity while moving.
- It will be one of the highest weighted attributes you will have in your KNN algorithm. Lateral Velocity is always a good point to start with.
- Lateral Acceleration
- Lateral acceleration tells you if the bot is changing its direction.
- It is one of the most important attributes as lateral acceleration makes a huge difference when combined with lateral velocity. There is a huge difference between (LatVel = 4, LatAcc = 1) and (LatVel = 4, LatAcc = -2).
- Advancing Velocity
- Advancing velocity helps you to understand if enemy is coming closer or moving away.
- Useful against: Bots doing distancing, bots moving non-perpendicularly.
- Advancing velocity is one of the less useful attributes in targeting but it is always useful.
- Bullet Float Time
- Helps to hit non perpendicular movement.
- For example Walls, SpinBot.
- If you are using guess factors Bullet Float Time is a must. Alone, it won't help much but combined it is arguably the most useful attribute.
- Forward/Backward Wall MEA
- Helps hit nearly any type of movement.
- If a bot changes direction after hitting or before hitting the wall.
- If a bot does wall smoothing
- If a bot gets stuck in the corners
- Forward MEA is a must if you want to have a powerful targeting system. Every bot will change how they react near walls as they are the boundaries of where you can move to.
- Time Since Attributes
- Useful against Oscillator,Stop And Go, Direction Based Random Movement.
- Randomly Moving bots will probably have a random direction change algorithm based on a constant. Time since attributes will help your targeting system find the tendency of a bot changing directions.
- I would say they are one of the less useful attributes but it certainly helps.
- Lateral Distance Last X
- Lateral Distance Last X is equivalent to Average Velocity Last X and gives you valuable information.
- It works great against random movement.
- It increased my bot's accuracy against robots like Aspid, DuelistMicro that stop and move randomly.
- Shots Fired /Shots hit
- These attributes will help you with data decay. Even if you are aiming to hit simple bots data decay helps.
- Data decay is one of the attributes which will boost your score against learning movements.
- Attribute Importance Ranking
- This is more of a fun part but after having WhiteFang trained against multiple robots with the given attributes I found out that they were simply the how important the given attributes are.
- Disclaimer: These are not perfect values nor the best ones since they have been generated by a Genetic Algorithm in less than one hour. However, it can give you a general idea about the attributes.
- Lateral Acceleration: 9.02
- Bullet Float Time: 8.151
- Lateral Distance Last 10: 6.68
- Lateral Velocity: 6.47
- Wall Distance Forwards: 6.32
- Advancing Velocity: 3.64
- Time Since Deceleration: 2.74
- Wall Distance Backwards: 0.98
- Profile Matching
- Different movement profiles of different class of bots are coded into the robot.
- The movement profile for last X shots are saved.
- When it's time to shoot, we search for the closest matching pre-saved profile and use it for targeting.