Polylunar

From Robowiki
Jump to navigation Jump to search
Polylunar
Author(s) Rednaxela
Extends TeamRobot
Targeting Linear Targeting, Guaranteed Hit Targeting
Movement Ramming Movement, Anti-Gravity Movement
Released 2008
Best Rating #4 (2011)
Current Version 1.6
Download
Sub-pages:
Version History - Archived Talk

Background Information

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%

Strategy

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.

Additional Information

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.
Does it have any White Whales?
PhoenixTeam and Xmen.
What other robot(s) is it based on?
The larger part of it is from scratch, but in concept is a descendant of LunarTwins. Also a little bit of event handling code from RougeDC.