Difference between revisions of "Innovations since 2005"

From Robowiki
Jump to navigation Jump to search
(→‎Innovations: add precise MEA, Bullet Shadows)
(two more innovations)
(9 intermediate revisions by 2 users not shown)
Line 4: Line 4:
  
 
== Innovations ==
 
== Innovations ==
 +
<onlyinclude>
 
* '''[[User:rozu|rozu]]'s [[Apollon]] mini-predictor''' - Apollon never caught [[Pugilist]], but this tiny [[Precise Prediction]] code paved the way for really good  [[Wave Surfing]] [[:Category:MiniBots|MiniBots]]. Its descendants are now at the top of the MiniRumble, far ahead of Pugilist.
 
* '''[[User:rozu|rozu]]'s [[Apollon]] mini-predictor''' - Apollon never caught [[Pugilist]], but this tiny [[Precise Prediction]] code paved the way for really good  [[Wave Surfing]] [[:Category:MiniBots|MiniBots]]. Its descendants are now at the top of the MiniRumble, far ahead of Pugilist.
 
* '''[[Anti-Surfer Targeting|Anti-Surfer guns]]''' - In 2005, [[Ascendant]] added an Anti-Surfer gun, making it the only bot that could hang with [[Shadow]] near the top of the PL. (Shadow didn't have one, but benefited from its unique gun and excellent movement to beat down surfers.) Now this is a standard practice.
 
* '''[[Anti-Surfer Targeting|Anti-Surfer guns]]''' - In 2005, [[Ascendant]] added an Anti-Surfer gun, making it the only bot that could hang with [[Shadow]] near the top of the PL. (Shadow didn't have one, but benefited from its unique gun and excellent movement to beat down surfers.) Now this is a standard practice.
* '''Precisely surfing multiple waves''' - In 2005, most bots precisely predicted until next wave intercept. Ascendant may have predicted over two waves, but this wasn't well known at the time. [[Dookious]] predicted over two waves, branching at first wave intercept to more intelligently gauge the second wave's danger. [[Phoenix]] did similarly and [[Chalk]] followed suit.  This also led to the development of faster [[Wall Smoothing]] methods (out of necessity).
+
* '''[[Multisurf|Precisely surfing multiple waves]]''' - In 2005, most bots precisely predicted until next wave intercept. Ascendant may have predicted over two waves, but this wasn't well known at the time. [[Dookious]] predicted over two waves, branching at first wave intercept to more intelligently gauge the second wave's danger. [[Phoenix]] did similarly and [[Chalk]] followed suit.  This also led to the development of faster [[Wall Smoothing]] methods (out of necessity).
* '''Non-explicit [[Dive Protection]]''' - Bots like [[CassiusClay]], Phoenix, and many older surfers have special cases in their movement to avoid moving directly at enemies, sometimes with more special cases for when they are cornered. Dookious instead multiplied the predicted distance to enemy right into the danger for each movement option, which creates a natural and fluid form of distancing control and dive protection.
+
* '''[[Non-explicit Dive Protection]]''' - Bots like [[CassiusClay]], Phoenix, and many older surfers have special cases in their movement to avoid moving directly at enemies, sometimes with more special cases for when they are cornered. Dookious instead multiplied the predicted distance to enemy right into the danger for each movement option, which creates a natural and fluid form of distancing control and dive protection.
 
* '''Lots of surfing buffers!''' - An innovation that happened gradually is that of using many, many [[Visit Count Stats|VCS]] buffers in surfing stats. (DrussGT uses 100+.)
 
* '''Lots of surfing buffers!''' - An innovation that happened gradually is that of using many, many [[Visit Count Stats|VCS]] buffers in surfing stats. (DrussGT uses 100+.)
 
* '''[[Maximum Escape Angle/Precise|Precise Max Escape Angles]]''' - Instead of using the theoretical maximum escape angle for a bullet power (<code>Math.asin(8/bulletSpeed)</code>), using [[Precise Prediction]] to calculate a "real world" MEA for each situation can improve your targeting.
 
* '''[[Maximum Escape Angle/Precise|Precise Max Escape Angles]]''' - Instead of using the theoretical maximum escape angle for a bullet power (<code>Math.asin(8/bulletSpeed)</code>), using [[Precise Prediction]] to calculate a "real world" MEA for each situation can improve your targeting.
Line 18: Line 19:
 
* '''[[Bullet Shielding]]''' - An idea that has been around a long time with little success. But in mid-2009, [[BulletCatcher]] came along. It introduced a great version of bullet shielding that crushed many bots, including some top bots like [[Phoenix]] and [[Hydra]].
 
* '''[[Bullet Shielding]]''' - An idea that has been around a long time with little success. But in mid-2009, [[BulletCatcher]] came along. It introduced a great version of bullet shielding that crushed many bots, including some top bots like [[Phoenix]] and [[Hydra]].
 
* '''[[Bullet Shadow]]s''' - Accounting for the safety bullet shadows in your Wave Surfing dangers is apparently a really good thing to do!
 
* '''[[Bullet Shadow]]s''' - Accounting for the safety bullet shadows in your Wave Surfing dangers is apparently a really good thing to do!
----
+
* '''[[Bullet Shadow/Correct]]''' - Bullet shadow can be probabilistic! This further improved the effect of [[Bullet Shadow]]
(If we get this polished up and others think it's a good page to have, we can move it to the main namespace later.)
+
* '''Tuning KNN models with genetic algorithms''' - Used with great success by [[DrussGT]] and [[ScalarR]]!
 +
* '''[[BeepBoop/Understanding BeepBoop#Gradient-based learning of KNN models | Gradient-based learning of KNN models]]''' - KNN models can be learned using gradients as well!
 +
* '''Simulated Enemy Targeting''' - Running simple targeting strategies such as [[LinearTargeting]] from the enemy's perspective can help dodge bullets in melee (e.g., [[Portia]] and [[Glacier]]) and 1v1 (e.g, [[BeepBoop]] and [[ScalarR]]).
 +
</onlyinclude>
  
 
[[Category:Robocode history]]
 
[[Category:Robocode history]]

Revision as of 22:42, 20 July 2021

One thing that discourages many new Robocoders is that there are "no breakthroughs left to discover". As Robocode bots evolve, it inevitably becomes harder to innovate. But many important improvements have been made since the advent of Wave Surfing. They may not be seen as breakthroughs, but they add up to a huge net improvement in the Robocode state of the art.

Depending on when you came to Robocode, some of this stuff may seem like "it's been that way forever" or "that's obvious, anyway". But that's part of the problem, isn't it? =) Hopefully, by pointing out the many small but important innovations since ~2005, it will be clear that innovation is still alive and well in Robocode.

Innovations

  • rozu's Apollon mini-predictor - Apollon never caught Pugilist, but this tiny Precise Prediction code paved the way for really good Wave Surfing MiniBots. Its descendants are now at the top of the MiniRumble, far ahead of Pugilist.
  • Anti-Surfer guns - In 2005, Ascendant added an Anti-Surfer gun, making it the only bot that could hang with Shadow near the top of the PL. (Shadow didn't have one, but benefited from its unique gun and excellent movement to beat down surfers.) Now this is a standard practice.
  • Precisely surfing multiple waves - In 2005, most bots precisely predicted until next wave intercept. Ascendant may have predicted over two waves, but this wasn't well known at the time. Dookious predicted over two waves, branching at first wave intercept to more intelligently gauge the second wave's danger. Phoenix did similarly and Chalk followed suit. This also led to the development of faster Wall Smoothing methods (out of necessity).
  • Non-explicit Dive Protection - Bots like CassiusClay, Phoenix, and many older surfers have special cases in their movement to avoid moving directly at enemies, sometimes with more special cases for when they are cornered. Dookious instead multiplied the predicted distance to enemy right into the danger for each movement option, which creates a natural and fluid form of distancing control and dive protection.
  • Lots of surfing buffers! - An innovation that happened gradually is that of using many, many VCS buffers in surfing stats. (DrussGT uses 100+.)
  • Precise Max Escape Angles - Instead of using the theoretical maximum escape angle for a bullet power (Math.asin(8/bulletSpeed)), using Precise Prediction to calculate a "real world" MEA for each situation can improve your targeting.
  • Go-To Surfing - Once upon a time, SilverSurfer was the flag bearer for go-to surfing and he had the best movement around. It was a while before anyone tried it again, but Skilgannon developed a killer go-to surfing in DrussGT that (since 2008) is by far the best 1v1 movement in Robocode.
  • Stop And Go MicroBots - Reaching the top of the MicroRumble now requires very finely tuned stop and go movement to crush simple targeters. The first bot to use this was Thorn by Kev. Skilgannon expanded upon the idea, making the stop and go distance vary depending on the enemy firepower.
  • kd-trees - Blew the door open for better Dynamic Clustering bots. Credit to Corbos for mentioning them on the wiki; Simonton and Chase-san for being first to apply them to Robocode; Rednaxela for taking it up a notch with his lightning fast kd-tree.
  • Shadow/Melee Gun - ABC came out of nowhere to find a breakthrough in Melee targeting by aiming at everyone at once!
  • Waves/Precise Intersection - Identify exactly what range of firing angles would have hit the target bot. Allows for much more precise danger calculations in surfing.
  • Gun Heat Waves - Assume the enemy will fire as soon as possible and estimate the bullet power used. Allows surfing of (estimated) enemy waves 1-2 ticks sooner, which is very helpful at close ranges.
  • Bullet Shielding - An idea that has been around a long time with little success. But in mid-2009, BulletCatcher came along. It introduced a great version of bullet shielding that crushed many bots, including some top bots like Phoenix and Hydra.
  • Bullet Shadows - Accounting for the safety bullet shadows in your Wave Surfing dangers is apparently a really good thing to do!
  • Bullet Shadow/Correct - Bullet shadow can be probabilistic! This further improved the effect of Bullet Shadow
  • Tuning KNN models with genetic algorithms - Used with great success by DrussGT and ScalarR!
  • Gradient-based learning of KNN models - KNN models can be learned using gradients as well!
  • Simulated Enemy Targeting - Running simple targeting strategies such as LinearTargeting from the enemy's perspective can help dodge bullets in melee (e.g., Portia and Glacier) and 1v1 (e.g, BeepBoop and ScalarR).