Difference between revisions of "Polylunar"

From Robowiki
Jump to navigation Jump to search
(Add bot page stub)
 
(Migrate from the old RoboWiki)
Line 2: Line 2:
 
| author          = [[Rednaxela]]
 
| author          = [[Rednaxela]]
 
| extends        = [[TeamRobot]]
 
| extends        = [[TeamRobot]]
| targeting      = [[Circular Targeting]], Guaranteed Hit Targeting
+
| targeting      = [[Linear Targeting]], Guaranteed Hit Targeting
| movement        = [[Aggressive Movement]], [[Anti-Gravity Movement]]
+
| movement        = [[Ramming Movement]], [[Anti-Gravity Movement]]
 
| current_version = 1.6
 
| current_version = 1.6
 +
| released        = 2008
 
| download_link  = http://robocode-archive.strangeautomata.com/robots/ags.polylunar.Polylunar_1.6.jar
 
| download_link  = http://robocode-archive.strangeautomata.com/robots/ags.polylunar.Polylunar_1.6.jar
 
| isOpenSource    = yes
 
| isOpenSource    = yes
| isOneOnOne      = yes
+
| isOneOnOne      = no
| isMelee        = yes
+
| isMelee        = no
 
| isTeam          = yes
 
| isTeam          = yes
 +
}}
 +
{{Navbox small
 +
| title = Sub-pages
 +
| page1 = Version History
 +
| page2 = Archived Talk
 
}}
 
}}
  
Line 22: Line 28:
 
:* It has a [[Precise Prediction]] [[Robocode/Game Physics|Robocode physics]] bot simulator.
 
:* It has a [[Precise Prediction]] [[Robocode/Game Physics|Robocode physics]] bot simulator.
 
:* It uses [[Waves/Precise Intersection|precise wave intersection]] to perform Guaranteed Hit Targeting, where it finds firing angles that are 100% certain to hit (only occurs at close range).
 
:* It uses [[Waves/Precise Intersection|precise wave intersection]] to perform Guaranteed Hit Targeting, where it finds firing angles that are 100% certain to hit (only occurs at close range).
:* It implements a "tag-team movement" where it picks bots to chase other bots. It has a "combination optimizer" for that, as well.
+
: This is a level of complexity on par with some of the top 1v1 bots.
:* As a backup movement, it implements [[Anti-Gravity Movement]], repelling from enemies, teammates (slightly less), corners, and walls.
 
:* Seriously, just ''look'' at the source code. It's incredible.
 
  
 
; How competitive is it?
 
; How competitive is it?
: It's #5 in TeamRumble, as of August 2017.
+
: '''{{RumbleStatsDefault|link=http://literumble.appspot.com/BotDetails?game=teamrumble&name=ags.polylunar.Polylunar%201.6|rumble=TeamRumble|scorelabel=APS|score=71.47|rank=5th|win=40|loss=3|plrank=3rd|glicko2=N/A|pwin=93.02|vote=0|anpp=83.26|score2label=Survival|score2=81.52}}'''
 +
 
 +
== Strategy ==
 +
; How does it [[Movement|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/Game Physics|Robocode physics]] to fire shots that are guaranteed to hit.
 +
 
 +
; How does it [[Dodging Bullets|dodge bullets]]?
 +
: Currently, it does not.
 +
 
 +
; 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.
 +
:* Make chasing slightly predictive (instead of chasing a 2-tick-old "shadow" which is delayed one tick by scan delay and a second tick by team communication).
 +
:* And whatever else comes to mind.
 +
 
 +
; Does it have any [[White Whale]]s?
 +
: [[Phoenix|PhoenixTeam]] and Xmen.
  
{{stub}}
+
; 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]].
 +
__NOTOC__ __NOEDITSECTION__

Revision as of 19:20, 6 September 2017

Polylunar
Author(s) Rednaxela
Extends TeamRobot
Targeting Linear Targeting, Guaranteed Hit Targeting
Movement Ramming Movement, Anti-Gravity Movement
Released 2008
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 broadcast systems are completely separated.
  • It has a distributed team radar system, where each robot scans one 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 bot 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.47% (5th), PL: 40-3 (3rd), Survival: 81.52%

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 does not.
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.
  • Make chasing slightly predictive (instead of chasing a 2-tick-old "shadow" which is delayed one tick by scan delay and a second tick by team communication).
  • 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.