Difference between revisions of "IWillFireNoBullet"
m (→TODO) |
(Update for latest version) |
||
(5 intermediate revisions by one other user not shown) | |||
Line 6: | Line 6: | ||
| imagesize = | | imagesize = | ||
| caption = | | caption = | ||
− | | author = [[Beaming]] | + | | author = [[User:Beaming|Beaming]] |
| extends = [[AdvancedRobot]] | | extends = [[AdvancedRobot]] | ||
| targeting = none | | targeting = none | ||
− | | movement = | + | | movement = Exact path predictor |
| released = 2015 | | released = 2015 | ||
| best_rating = | | best_rating = | ||
| rating = | | rating = | ||
− | | current_version = | + | | current_version = v2.8 |
| codesize = [[MegaBot]] | | codesize = [[MegaBot]] | ||
| license = open source and comes with no string attached | | license = open source and comes with no string attached | ||
− | | download_link = | + | | download_link = http://robocode-archive.strangeautomata.com/robots/eem.IWillFireNoBullet_v2.8.jar |
− | | source_link = | + | | source_link = https://github.com/evgmik/robocode_bots.IWillFireNoBullet |
| isOneOnOne = true | | isOneOnOne = true | ||
| isMelee = true | | isMelee = true | ||
Line 31: | Line 31: | ||
In 1 on 1 it is naturally quite mediocre. Though it will outlive many quite strong bots, it does not collect the damage points and thus its APS is low. | In 1 on 1 it is naturally quite mediocre. Though it will outlive many quite strong bots, it does not collect the damage points and thus its APS is low. | ||
− | But look at its melee rating, here is where the '''surprise''' is coming. | + | But look at its melee rating, here is where the '''surprise''' is coming. At version v2.8, it sits at 120th place out of 397 participating bots. I.e., it is better than the two-thirds of the croud. |
=== What is under the hood? === | === What is under the hood? === | ||
Line 37: | Line 37: | ||
=== How does it move? === | === How does it move? === | ||
− | It tries to | + | |
+ | It tries to take in account all waves fired at it. Starting from version v0.3 it uses exact path simulation (which gives amazing bust in surviving scores: +23% rumble and +6% in melee), , i.e. it find the safest path within time constrains with attempt to cross all waves. This means if bots are in opposite corners and an enemy fires the highest energy (thus slowest) bullet, it will take about 100 clicks to reach it and this is the longest path needed to be predicted. This of course will used up all allocated CPU time, so one need to be smart to how far in future to predict, clearly, one need to calculate at least to the first to hit wave. | ||
+ | |||
+ | Older versions (v0.1 and v0.2) use bullets danger precursor concept, instead of full simulation of the wave interception. Which is similar to [[Anti-Gravity Movement]] but called [[Minimum Risk Movement]] in robowiki. Main difference, it uses force potentials (for those who remember physics) instead of repelling forces of enemy bullets and bots. | ||
=== How does it fire === | === How does it fire === |
Latest revision as of 16:15, 1 August 2017
IWillFireNoBullet | |
Author(s) | Beaming |
Extends | AdvancedRobot |
Targeting | none |
Movement | Exact path predictor |
Released | 2015 |
Current Version | v2.8 |
Code Size | MegaBot |
Code License | open source and comes with no string attached |
Download | |
Source |
Contents
Background Information
What's special about it?
It is ultimate pacifist. As name implies, it will not fire a bullet.
How competitive is it?
In 1 on 1 it is naturally quite mediocre. Though it will outlive many quite strong bots, it does not collect the damage points and thus its APS is low.
But look at its melee rating, here is where the surprise is coming. At version v2.8, it sits at 120th place out of 397 participating bots. I.e., it is better than the two-thirds of the croud.
What is under the hood?
It has a game simulator inside, where each bot see others. Based of course on this bot radar information and its ability to analyze it: guns fired, etc. Thus when I want to see how enemy fired, I just ask the simulator to provide firing solutions, from the enemy point of view.Though, enemy drivers are routed to a dummy proxy, which blocks motion and firing commands to the robocode engine.
How does it move?
It tries to take in account all waves fired at it. Starting from version v0.3 it uses exact path simulation (which gives amazing bust in surviving scores: +23% rumble and +6% in melee), , i.e. it find the safest path within time constrains with attempt to cross all waves. This means if bots are in opposite corners and an enemy fires the highest energy (thus slowest) bullet, it will take about 100 clicks to reach it and this is the longest path needed to be predicted. This of course will used up all allocated CPU time, so one need to be smart to how far in future to predict, clearly, one need to calculate at least to the first to hit wave.
Older versions (v0.1 and v0.2) use bullets danger precursor concept, instead of full simulation of the wave interception. Which is similar to Anti-Gravity Movement but called Minimum Risk Movement in robowiki. Main difference, it uses force potentials (for those who remember physics) instead of repelling forces of enemy bullets and bots.
How does it fire
It does not. But it predicts incoming wave danger, based on guns which might be used by enemy.
Great, I want to try it. Where can I download it?
It is in official roborumble and melee listings, look for eem.IWillFireNoBullet there. Alternatively, feel free to download the source code and play with it.
Thanks
I suffer from "not coded here syndrome" so my code is quite original. Though, I took a lot from my own EvBot. You might see uncleaned leftovers of that bot scattered in the source.
Nevertheless, I owe to many people who made this wiki and its content available. Special thanks to Voidious and his wonderful RoboRunner tool which I used.
Also, its design was influenced by the ideas behind the XanderCat, i.e., modular design and, yet not well implemented by me, idea of components registration for custom calls/events.
TODO
- More guns and targeting
Head-On Targeting, since v0.1Linear Targeting, since v0.2- circular
- guess factor
- pattern matching
- Motion
Minimal Risk, since v0.1danger path motion, i.e. exact calculation of danger for the path point at proper time, semi done since v0.3- The algorithm still miscalculate predicted path, around flipped velocity vector