Difference between revisions of "Diamond"
Jump to navigation
Jump to search
(updates) |
m (Update rankings) |
||
(5 intermediate revisions by 2 users not shown) | |||
Line 4: | Line 4: | ||
| caption = [[:Image:Diamond_collage.png|Full Size]] | | caption = [[:Image:Diamond_collage.png|Full Size]] | ||
| extends = [[AdvancedRobot]] | | extends = [[AdvancedRobot]] | ||
− | | targeting = [[Dynamic Clustering]], | + | | targeting = [[Dynamic Clustering]], [[Displacement Vector]]s, [[GuessFactor]]s |
− | [[Displacement Vector]]s, [[GuessFactor]]s | + | | movement = [[Minimum Risk Movement|Minimum Risk]], [[Dynamic Clustering|DC]]/[[GuessFactor|GF]]-[[Wave Surfing]] |
− | | movement = [[Minimum Risk Movement|Minimum Risk]], | + | | current_version = 1.8.28 |
− | [[Dynamic Clustering|DC]]/[[GuessFactor|GF]]-[[Wave Surfing]] | + | | released = 2009 |
− | | current_version = 1. | + | | best_rating = 2nd 1v1 (2017), |
+ | 1st Melee (2012) | ||
| license = [http://www.gzip.org/zlib/zlib_license.html zlib] | | license = [http://www.gzip.org/zlib/zlib_license.html zlib] | ||
− | | download_link = http:// | + | | download_link = http://robocode-archive.strangeautomata.com/robots/voidious.Diamond_1.8.28.jar |
+ | | source_link = https://github.com/Voidious/Diamond | ||
| isOpenSource = yes | | isOpenSource = yes | ||
| isMelee = yes | | isMelee = yes | ||
Line 35: | Line 37: | ||
; How competitive is it? | ; How competitive is it? | ||
− | : Very! #2 in | + | : Very! #2 in 1v1 behind [[DrussGT]], #3 in Melee behind [[Firestarter]] and [[Neuromancer]]. |
== Strategy == | == Strategy == | ||
Line 76: | Line 78: | ||
; Can I use your code? | ; Can I use your code? | ||
− | : Yes, it's released under the [http://www.gzip.org/zlib/zlib_license.html zlib license]. | + | : Yes, it's released under the [http://www.gzip.org/zlib/zlib_license.html zlib license]. You can find it in the JAR and I put v1.8.28 up at [https://github.com/Voidious/Diamond GitHub/Voidious/Diamond]. |
; What's next for your robot? | ; What's next for your robot? | ||
− | : I'd love to take the 1v1 throne. A lot. =) I'm | + | : I'd love to take the 1v1 throne. A lot. =) But I'm probably retired from writing Robocode bots. |
; Does it have any [[White Whale|White Whales]]? | ; Does it have any [[White Whale|White Whales]]? |
Latest revision as of 20:45, 1 October 2017
Diamond | |
Full Size | |
Author(s) | Voidious |
Extends | AdvancedRobot |
Targeting | Dynamic Clustering, Displacement Vectors, GuessFactors |
Movement | Minimum Risk, DC/GF-Wave Surfing |
Released | 2009 |
Best Rating | 2nd 1v1 (2017),
1st Melee (2012) |
Current Version | 1.8.28 |
Code License | zlib |
Download | |
Source |
- Sub-pages:
- Version History - DiamondHawk
Background Information
- What's special about it?
- Oh, nothing, really. Well, since you asked...
- Took the Melee throne from Shadow.
- By far the top DC surfer.
- Pioneered using Bullet Shadows in Wave Surfing.
- The Melee Wall Smoothing is quite graceful.
- Melee guns use displacement vectors and fire lots of waves from alternate sources.
- Pretty debugging graphics.
- Two alternate color schemes!
- The source code is available under a permissive license - have fun! (And try to learn something!)
- How competitive is it?
- Very! #2 in 1v1 behind DrussGT, #3 in Melee behind Firestarter and Neuromancer.
Strategy
- How does it move?
- In melee, it uses a Minimum Risk Movement, evaluating a bunch of points around itself and choosing the best one. I'm always tweaking the parameters, but some of them are:
- Stay far away from other bots.
- Stay perpendicular to other bots.
- Don't be the closest bot to any other bots (to avoid being targeted).
- Weight risks by energy and bullet damage factors.
- Some randomizing based on past locations.
- In 1v1, it uses Wave Surfing with Dynamic Clustering.
- Predicts where he would intersect the enemy wave if he orbits clockwise, counter-clockwise, or slams on the brakes. Calculate the danger for this position based on where we've detected enemy bullets.
- For each predicted spot on the first wave, branch from that position and predict clockwise/counter-clockwise/stop on the second wave. Take the lowest danger.
- Weight the wave dangers by time to impact and bullet power.
- Multiply in a distancing factor.
- Choose the safest of the 3 movement options.
- How does it fire?
- The gun uses Dynamic Clustering for data analysis - i.e., k-nearest neighbors to find similar states, and kernel density among those states to settle on a firing angle.
- In Melee, it uses displacement vectors for recording and reconstructing firing angles - I think that makes more sense than GuessFactors since enemies aren't necessarily moving relative to you, and it's a lot simpler and more efficient than real Play It Forward. In 1v1, it uses GuessFactors with precise MEA. It uses precise intersection and interpolates missed scans when necessary.
- I also experiment with gun stuff quite a bit with WaveSim. My latest experiments involve using a RetroGirl/Gun for the first few shots of a 1v1 battle.
- How does it select a target to attack/avoid in melee?
- As of 1.30, it no longer does. It aims at everyone on the battle field at once and tries to hit as many enemies as possible. (Big thanks to Shadow/Melee Gun for the excellent idea.)
- How does the melee strategy differ from one-on-one strategy?
- In 1v1, it switches to a Wave Surfing movement and to its 1v1 Virtual Guns.
- What does it save between rounds and matches?
- Nothing between matches. Between rounds, it saves all its targeting and movement data, which includes general info about each enemy, a bunch of kd-trees, and maps of the trees' data points to displacement vectors and GuessFactors.
Additional Information
- Where did you get the name?
- Diamond is the ex-superhero name of the main character in Powers, my favorite comic book series. I like to name all my bots after warriors of some sort, but I'd be lying if I said I didn't just think it sounds cool.
- Can I use your code?
- Yes, it's released under the zlib license. You can find it in the JAR and I put v1.8.28 up at GitHub/Voidious/Diamond.
- What's next for your robot?
- I'd love to take the 1v1 throne. A lot. =) But I'm probably retired from writing Robocode bots.
- Does it have any White Whales?
- DrussGT
- What other robot(s) is it based on?
- I tried to start with a clean slate on this one. But I've taken plenty of ideas from the wiki and utility code from a few places.
- BrokenSword - General guidance on various things, especially the minimum risk movement.
- Dookious - Diamond's surfing algorithm was originally ported from Dookious, along with a variety of utility functions, including precise prediction code based on Albert's FuturePosition.
- HawkOnFire - No code, but it deserves a nod for the wisdom rozu shared about minimum risk movement via this bot.
- Corbos, Simonton - Corbos for the idea to use a kd-tree to speed up our DC guns, Simonton for the bucket variant.
- Shadow - Pioneered the Shadow/Melee Gun, which is an amazing advancement in Melee targeting.
- Rednaxela - Introduced us to precise intersection and Gun Heat Waves, and I also use his lightning fast kd-tree.