|Targeting||Linear Targeting, Guaranteed Hit Targeting|
|Movement||Ramming Movement, Anti-Gravity Movement|
|Best Rating||#4 (2011)|
- What's special about it?
- On the surface, it just appears to be LunarTwins with more bots, but internally it's far more sophisticated than you would think.
- The core code is made of 37 classes in 8 different packages.
- All 5 of its robots have different names and color schemes, but share the same code.
- It has a custom, extensible robot framework (
polylunar.base). Its radar, gun, movement, and team control systems are completely separated.
- It has a distributed team radar system, where each robot locks onto one opponent bot and uses message-passing to communicate its details to its teammates. It has a "combination optimizer" to enhance this system. Each bot broadcasts its own status as well.
- It has a kd-tree implementation.
- It has a Precise Prediction Robocode physics simulator.
- It uses precise wave intersection to perform Guaranteed Hit Targeting, where it finds firing angles that are 100% certain to hit (only occurs at close range).
- This is a level of complexity on par with some of the top 1v1 bots.
- How competitive is it?
- TeamRumble ‒ APS: 71.14% (6th), PL: 41-3 (4th), Survival: 80.44%
- How does it move?
- The team members team up into tag-teams to gang up on enemies, similar to LunarTwins. It has a "combination optimizer" for this. Unpaired team members use Anti-Gravity Movement, repelling from enemies, teammates (slightly less), corners, and walls with no randomization or bullet dodging (yet).
- How does it fire?
- Linear Targeting with Precise Prediction. At close range, it uses its knowledge of Robocode physics to fire shots that are guaranteed to hit.
- How does it dodge bullets?
- Currently, it has no explicit bullet-dodging code.
- How does the melee strategy differ from One-on-one strategy?
- Unpaired team members (bots that are not chasing an opponent) do not fire unless they are the only one left, or are very close to an enemy (which they try not to be).
- How does it select a target to attack/avoid in melee?
- Whichever configuration that allows the optimal creation of tag teams (shortest total distance necessary for team members to travel).
- What does it save between rounds and matches?
- Static variables between rounds, nothing between matches.
- Where did you get the name?
- Its tactics are derived from LunarTwins, and it works for things besides 2v2 with no limit on the numbers so... Polylunar. For the individual bot names, I thought it would be cute to name them after various moons.
- Can I use your code?
- I'm releasing it under the RWPCL, but I stress that the best way to really fully understand algorithms is to implement them yourself.
- What's next for your robot?
- Plenty of things!
- Better solo-targeting.
- Better solo-behaviors.
- And whatever else comes to mind.