IWillFireNoBullet
IWillFireNoBullet | |
Author(s) | Beaming |
Extends | AdvancedRobot |
Targeting | none |
Movement | Minimal Risk with shrapnel dodging |
Released | 2015 |
Current Version | v0.3 |
Code Size | MegaBot |
Code License | open source and comes with no string attached |
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. Even version v0.1, sits at 232nd place out of 389 participating bots. I.e., it is better than the 3rd 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: +16% rumble and +10% 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