<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://robowiki.net/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=D414</id>
	<title>Robowiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="http://robowiki.net/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=D414"/>
	<link rel="alternate" type="text/html" href="http://robowiki.net/wiki/Special:Contributions/D414"/>
	<updated>2026-04-19T13:57:46Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.34.1</generator>
	<entry>
		<id>http://robowiki.net/w/index.php?title=Head-On_Targeting&amp;diff=58049</id>
		<title>Head-On Targeting</title>
		<link rel="alternate" type="text/html" href="http://robowiki.net/w/index.php?title=Head-On_Targeting&amp;diff=58049"/>
		<updated>2025-08-25T12:51:34Z</updated>

		<summary type="html">&lt;p&gt;D414: Fix syntax highlighting&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Youtube|C9Wmo94TUpw}}&lt;br /&gt;
&lt;br /&gt;
The simple strategy of aiming where you last saw the enemy. Works surprisingly well against surprisingly many bots (Mainly against Oscillator Movement and sometimes random movement). It also works especially well in [[Melee]] battles. [[HawkOnFire]] and [[Shiz]] both use it.&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
In &amp;lt;code&amp;gt;onScannedRobot&amp;lt;/code&amp;gt;, add:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
double absoluteBearing = getHeadingRadians() + e.getBearingRadians();&lt;br /&gt;
setTurnGunRightRadians(&lt;br /&gt;
    robocode.util.Utils.normalRelativeAngle(absoluteBearing - &lt;br /&gt;
        getGunHeadingRadians()));&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A code like this was found in &amp;lt;code&amp;gt;sample.Fire&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
double turnGunAmt = (getHeadingRadians() + e.getBearingRadians()) - getGunHeadingRadians();&lt;br /&gt;
//You can make this setTurnGunRight(...) or setTurnGunRightRadians(...) with an AdvancedRobot&lt;br /&gt;
turnGunRight(turnGunAmt);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
* [[Musashi Trick]]&lt;br /&gt;
&lt;br /&gt;
{{Targeting Navbox}}&lt;br /&gt;
[[Category:Simple Targeting Strategies]]&lt;br /&gt;
[[Category:Code Snippets]]&lt;/div&gt;</summary>
		<author><name>D414</name></author>
		
	</entry>
	<entry>
		<id>http://robowiki.net/w/index.php?title=One_on_One_Radar&amp;diff=58047</id>
		<title>One on One Radar</title>
		<link rel="alternate" type="text/html" href="http://robowiki.net/w/index.php?title=One_on_One_Radar&amp;diff=58047"/>
		<updated>2025-08-22T21:36:53Z</updated>

		<summary type="html">&lt;p&gt;D414: Fix syntax highlighting&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''One on One Radars''' are [[Radar|radars]] that are used for [[One on One]] battles. They usually produce a perfect lock by scanning an enemy every turn.&lt;br /&gt;
&lt;br /&gt;
== Simple Radar Locks == {{Youtube|75sU-AJxZm0|Simple Radar Locks}}&lt;br /&gt;
These radars are the simplest to write and usually produce the smallest bytecode, which is useful with codesize restrictions.&lt;br /&gt;
&lt;br /&gt;
=== Spinning radar ===&lt;br /&gt;
A simple spin of the radar, this is very ineffective in one on one, but still used in [[NanoBot]]s.&lt;br /&gt;
&lt;br /&gt;
Here is an example of this type of radar:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
public void run() {&lt;br /&gt;
    // ...&lt;br /&gt;
&lt;br /&gt;
    do {&lt;br /&gt;
        turnRadarRightRadians(Double.POSITIVE_INFINITY);&lt;br /&gt;
    } while (true);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A slightly smaller implementation can be achieved with using onStatus(..) instead of run(). This saves the bytes for the loop and can also be used for turn multiplier and width lock radars.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
public void onStatus( StatusEvent e) {&lt;br /&gt;
    // you can also put all setAdjustXX(..) methods here &lt;br /&gt;
    setTurnRadarRightRadians(Double.POSITIVE_INFINITY);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The Infinity Lock ===&lt;br /&gt;
The infinity lock is the simplest radar lock and it is used frequently in [[NanoBots]]. It has the disadvantage of &amp;quot;slipping&amp;quot; and losing its lock frequently. But is a much better alternative to the Spinning radar in one on one combat.&lt;br /&gt;
&lt;br /&gt;
Here is an example of this type of radar:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
public void run() {&lt;br /&gt;
    // ...&lt;br /&gt;
    turnRadarRightRadians(Double.POSITIVE_INFINITY);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
public void onScannedRobot(ScannedRobotEvent e) {&lt;br /&gt;
    // ...&lt;br /&gt;
    setTurnRadarLeftRadians(getRadarTurnRemainingRadians());&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Perfect Radar Locks == {{Youtube|4TUwwjP4KNk|Perfect Radar Locks}}&lt;br /&gt;
There are several &amp;quot;perfect&amp;quot; radar locks that will not slip once they have a lock.&lt;br /&gt;
&lt;br /&gt;
=== Turn Multiplier Lock ===&lt;br /&gt;
Point the radar at the enemy's last known location. This results in a thin beam which follows the enemy around the battlefield. Many recent one on one bots use this type of radar. This radar lock is similar to, and considered an enhancement on the wide radar lock described below.&lt;br /&gt;
&lt;br /&gt;
If implemented correctly, it is not possible for the enemy escape this lock. A robot's width is 36px (that's 18px from the middle) and it can only move at up to 8px/turn, so if your beam is pointing at its centre, it won't be able to move entirely out of it in one turn. However, a robot will only automatically scan for enemies if its radar is turning, which might not happen if you are using a Narrow Lock and your enemy decides to stay still for 2 turns. For this reason, if you decide to use an unmultiplied lock, you must call &amp;lt;code&amp;gt;scan()&amp;lt;/code&amp;gt; yourself to avoid losing lock. Furthermore, if you skip turns, your enemy might be able to move out from your radar beam before you recover.&lt;br /&gt;
&lt;br /&gt;
To overcome these issues, a Narrow Lock is often multiplied by a factor (as described below) to keep the radar moving and ensure the enemy does not escape the scan arc.&lt;br /&gt;
&lt;br /&gt;
Here is an example of this kind of radar:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
import robocode.util.Utils;&lt;br /&gt;
&lt;br /&gt;
public void run() {&lt;br /&gt;
    // ...&lt;br /&gt;
&lt;br /&gt;
    turnRadarRightRadians(Double.POSITIVE_INFINITY);&lt;br /&gt;
    do {&lt;br /&gt;
        // Check for new targets.&lt;br /&gt;
        // Only necessary for Narrow Lock because sometimes our radar is already&lt;br /&gt;
        // pointed at the enemy and our onScannedRobot code doesn't end up telling&lt;br /&gt;
        // it to turn, so the system doesn't automatically call scan() for us&lt;br /&gt;
        // [see the javadocs for scan()].&lt;br /&gt;
        scan();&lt;br /&gt;
    } while (true);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
public void onScannedRobot(ScannedRobotEvent e) {&lt;br /&gt;
    double radarTurn =&lt;br /&gt;
        // Absolute bearing to target&lt;br /&gt;
        getHeadingRadians() + e.getBearingRadians()&lt;br /&gt;
        // Subtract current radar heading to get turn required&lt;br /&gt;
        - getRadarHeadingRadians();&lt;br /&gt;
&lt;br /&gt;
    setTurnRadarRightRadians(Utils.normalRelativeAngle(radarTurn));&lt;br /&gt;
&lt;br /&gt;
    // ...&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following factors affect the behaviour in the following ways (eg. &amp;lt;code&amp;gt;factor * Utils.normalRelativeAngle(radarTurn)&amp;lt;/code&amp;gt;)&lt;br /&gt;
* 1.0 - Thin radar lock. Must call scan() to avoid losing lock. God help you if you ever skip a turn.&lt;br /&gt;
* 1.9 - Radar arc starts wide and slowly narrows as much as possible while staying on target.&lt;br /&gt;
* 2.0 - Radar arc sweeps through a fixed angle. Exact angle chosen depends on positions of enemy and radar when enemy is first picked up. Angle will be increased if necessary to maintain a lock. Most used corrective factor.&lt;br /&gt;
&lt;br /&gt;
=== Width Lock ===&lt;br /&gt;
The Width Radar Lock or Wide Radar Lock tries to scan a fixed distance to either side of the enemy. It was to the best of knowledge created before the Turn Multiplier or Narrow Radar Lock. Its constant motion means the radar will not slip as long as you don't miss any turns.&lt;br /&gt;
&lt;br /&gt;
Here is an example of this type of radar:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
import robocode.util.Utils;&lt;br /&gt;
&lt;br /&gt;
public void run() {&lt;br /&gt;
    // ...&lt;br /&gt;
&lt;br /&gt;
    do {&lt;br /&gt;
        // ...&lt;br /&gt;
        // Turn the radar if we have no more turn, starts it if it stops and at the start of round&lt;br /&gt;
        if ( getRadarTurnRemaining() == 0.0 )&lt;br /&gt;
            setTurnRadarRightRadians( Double.POSITIVE_INFINITY );&lt;br /&gt;
        &lt;br /&gt;
        execute();&lt;br /&gt;
    } while ( true );&lt;br /&gt;
    &lt;br /&gt;
    // ...&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
public void onScannedRobot(ScannedRobotEvent e) {&lt;br /&gt;
    // ...&lt;br /&gt;
&lt;br /&gt;
    // Absolute angle towards target&lt;br /&gt;
    double angleToEnemy = getHeadingRadians() + e.getBearingRadians();&lt;br /&gt;
&lt;br /&gt;
    // Subtract current radar heading to get the turn required to face the enemy, be sure it is normalized&lt;br /&gt;
    double radarTurn = Utils.normalRelativeAngle( angleToEnemy - getRadarHeadingRadians() );&lt;br /&gt;
&lt;br /&gt;
    // Distance we want to scan from middle of enemy to either side&lt;br /&gt;
    // The 36.0 is how many units from the center of the enemy robot it scans.&lt;br /&gt;
    double extraTurn = Math.min( Math.atan( 36.0 / e.getDistance() ), Rules.RADAR_TURN_RATE_RADIANS );&lt;br /&gt;
&lt;br /&gt;
    // Adjust the radar turn so it goes that much further in the direction it is going to turn&lt;br /&gt;
    // Basically if we were going to turn it left, turn it even more left, if right, turn more right.&lt;br /&gt;
    // This allows us to overshoot our enemy so that we get a good sweep that will not slip.&lt;br /&gt;
    if (radarTurn &amp;lt; 0)&lt;br /&gt;
        radarTurn -= extraTurn;&lt;br /&gt;
    else&lt;br /&gt;
        radarTurn += extraTurn;&lt;br /&gt;
    &lt;br /&gt;
    //Turn the radar&lt;br /&gt;
    setTurnRadarRightRadians(radarTurn);&lt;br /&gt;
&lt;br /&gt;
    // ...&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can replace &amp;lt;code&amp;gt;36.0&amp;lt;/code&amp;gt; with any distance you want covered.&lt;/div&gt;</summary>
		<author><name>D414</name></author>
		
	</entry>
	<entry>
		<id>http://robowiki.net/w/index.php?title=GoTo&amp;diff=58046</id>
		<title>GoTo</title>
		<link rel="alternate" type="text/html" href="http://robowiki.net/w/index.php?title=GoTo&amp;diff=58046"/>
		<updated>2025-08-19T23:14:11Z</updated>

		<summary type="html">&lt;p&gt;D414: Fix syntax highlighting&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{stub}}&lt;br /&gt;
&lt;br /&gt;
Some robots use the coordinate system to move. These robots are called GoTo robots and usually use a type of GoTo code. Such as a [[Wave_Surfing/GoTo_Surfing|GoTo Surfer]]. By using a GoTo method, a robot can go directly to a set of desired coordinates. &lt;br /&gt;
&lt;br /&gt;
== Standard GoTo ==&lt;br /&gt;
This is your standard GoTo method. It is fairly accurate on a single call.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
/**&lt;br /&gt;
 * This method is very verbose to explain how things work.&lt;br /&gt;
 * Do not obfuscate/optimize this sample.&lt;br /&gt;
 */&lt;br /&gt;
private void goTo(double x, double y) {&lt;br /&gt;
	/* Transform our coordinates into a vector */&lt;br /&gt;
	x -= getX();&lt;br /&gt;
	y -= getY();&lt;br /&gt;
	&lt;br /&gt;
	/* Calculate the angle to the target position */&lt;br /&gt;
	double angleToTarget = Math.atan2(x, y);&lt;br /&gt;
	&lt;br /&gt;
	/* Calculate the turn required get there */&lt;br /&gt;
	double targetAngle = Utils.normalRelativeAngle(angleToTarget - getHeadingRadians());&lt;br /&gt;
	&lt;br /&gt;
	/* &lt;br /&gt;
	 * The Java Hypot method is a quick way of getting the length&lt;br /&gt;
	 * of a vector. Which in this case is also the distance between&lt;br /&gt;
	 * our robot and the target location.&lt;br /&gt;
	 */&lt;br /&gt;
	double distance = Math.hypot(x, y);&lt;br /&gt;
	&lt;br /&gt;
	/* This is a simple method of performing set front as back */&lt;br /&gt;
	double turnAngle = Math.atan(Math.tan(targetAngle));&lt;br /&gt;
	setTurnRightRadians(turnAngle);&lt;br /&gt;
	if(targetAngle == turnAngle) {&lt;br /&gt;
		setAhead(distance);&lt;br /&gt;
	} else {&lt;br /&gt;
		setBack(distance);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Advanced GoTo ==&lt;br /&gt;
This GoTo function uses cosine to prevent moving when not facing in the desired direction.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
private void go(double x, double y) {&lt;br /&gt;
    /* Calculate the difference bettwen the current position and the target position. */&lt;br /&gt;
    x = x - getX();&lt;br /&gt;
    y = y - getY();&lt;br /&gt;
    &lt;br /&gt;
    /* Calculate the angle relative to the current heading. */&lt;br /&gt;
    double goAngle = Utils.normalRelativeAngle(Math.atan2(x, y) - getHeadingRadians());&lt;br /&gt;
	&lt;br /&gt;
    /*&lt;br /&gt;
     * Apply a tangent to the turn this is a cheap way of achieving back to front turn angle as tangents period is PI.&lt;br /&gt;
     * The output is very close to doing it correctly under most inputs. Applying the arctan will reverse the function&lt;br /&gt;
     * back into a normal value, correcting the value. The arctan is not needed if code size is required, the error from&lt;br /&gt;
     * tangent evening out over multiple turns.&lt;br /&gt;
     */&lt;br /&gt;
    setTurnRightRadians(Math.atan(Math.tan(goAngle)));&lt;br /&gt;
	&lt;br /&gt;
    /* &lt;br /&gt;
     * The cosine call reduces the amount moved more the more perpendicular it is to the desired angle of travel. The&lt;br /&gt;
     * hypot is a quick way of calculating the distance to move as it calculates the length of the given coordinates&lt;br /&gt;
     * from 0.&lt;br /&gt;
     */&lt;br /&gt;
    setAhead(Math.cos(goAngle) * Math.hypot(x, y));&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Smallest Codesize GoTo ==&lt;br /&gt;
This GoTo method has been optimized for codesize. It will not start moving full speed until generally pointing in the correct direction, and depending on how far away the go-to point is. This method should be called every round.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
private void goTo(int x, int y) {&lt;br /&gt;
    double a;&lt;br /&gt;
    setTurnRightRadians(Math.tan(&lt;br /&gt;
        a = Math.atan2(x -= (int) getX(), y -= (int) getY()) &lt;br /&gt;
              - getHeadingRadians()));&lt;br /&gt;
    setAhead(Math.hypot(x, y) * Math.cos(a));&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Movement]]&lt;/div&gt;</summary>
		<author><name>D414</name></author>
		
	</entry>
	<entry>
		<id>http://robowiki.net/w/index.php?title=User:D414/Diary_of_a_Robocoder&amp;diff=58045</id>
		<title>User:D414/Diary of a Robocoder</title>
		<link rel="alternate" type="text/html" href="http://robowiki.net/w/index.php?title=User:D414/Diary_of_a_Robocoder&amp;diff=58045"/>
		<updated>2025-08-19T22:24:42Z</updated>

		<summary type="html">&lt;p&gt;D414: Some ramblings about neural networks&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;; 19th August 2025&lt;br /&gt;
For the past few days I've been trying to squeeze a neural network capable of &amp;quot;learning&amp;quot; into a nanobot, and I seem to have succeeded with [[Neutrino]]. I say &amp;quot;learning&amp;quot; because actually training mid-battle like [[Gaff]] is utterly infeasible in a nanobot. Instead I've been looking at echo state networks (See [https://www.ai.rug.nl/minds/uploads/PracticalESN.pdf A Practical Guide to Applying Echo State Networks]) as a way of maintaining state on multiple time scales.&lt;br /&gt;
&lt;br /&gt;
In the process of shrinking down the inference code to a measly ~90 bytes I ended up accidentally designing something significantly more powerful that supports the following:&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Multilayer_perceptron Multi layer perceptrons] (MLP)&lt;br /&gt;
* Echo state networks (ESN)&lt;br /&gt;
* Special cases and/or approximations of a handful of other types of neural network&lt;br /&gt;
* Any of the above connected in arbitrary ways (eg MLPs feeding multiple ESNs tuned to different timescales that then feed into another MLP)&lt;br /&gt;
* Doesn't require the network to be organised in layers - it can handle an arbitrary [https://en.wikipedia.org/wiki/Directed_acyclic_graph DAG]&lt;br /&gt;
* Handles sparsely connected networks efficiently&lt;br /&gt;
* Can save state from one round to the next, and supports training a completely separate network that is only run once per round&lt;br /&gt;
&lt;br /&gt;
These capabilities only emerged after I finally managed to flatten the typical nested loops needed for matrix multiplication down to this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
static void doNN(double[] inout, int i) {&lt;br /&gt;
    try {&lt;br /&gt;
        while (true) {&lt;br /&gt;
            double leak;&lt;br /&gt;
            inout[OUT_ORDER.charAt(i)] = ((1 - (leak = decode(LEAK, i))) * inout[IN_ORDER_1.charAt(i)])&lt;br /&gt;
                + (leak * Math.tanh((inout[ACCUMULATOR_INDEX] += decode(WEIGHTS, i) * inout[IN_ORDER_2.charAt(i)]) + decode(BIASES, i++)));&lt;br /&gt;
        }&lt;br /&gt;
    } catch (ArrayIndexOutOfBoundsException e) {&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I've still got an enormous amount of work to go before I can turn [[Neutrino]] into a fully functioning bot, let alone a competitive one.&lt;br /&gt;
&lt;br /&gt;
; 16th August 2025&lt;br /&gt;
I've been doing some exploratory work for an entirely different approach for [[Quantum]] worthy of being called version 2. Something I'm trying to add is storing data about my enemies.&lt;br /&gt;
&lt;br /&gt;
The typical way of tracking data about enemies would be to use a Map, an example of which can be seen in [[HawkOnFire]] but this uses up far too much space to put into a nanobot. [[User:Kev|Kev]] uses an imaginative approach in [[Mirage]] that stores the data in arrays instead and uses a static function to give each enemy a unique integer id to index into those arrays. I shaved 11 bytes off of [[Mirage]]'s approach in [[FireHammer]] (my attempt to fit [[Mirage]]'s gun into a micro) and then [[User:Kev|Kev]] found a way to shave a whopping 26 bytes(!) off of that in [[Figment]].&lt;br /&gt;
&lt;br /&gt;
Unfortunately the [[Figment]] method has some drawbacks that could make it unsuitable for how I'm hoping to use enemy data in [[Quantum]] v2 but I have been able to shave another 5 bytes off of [[FireHammer]]'s code.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
// Mirage&lt;br /&gt;
// Size: 46 bytes&lt;br /&gt;
// Stable IDs: Yes&lt;br /&gt;
// Contiguous IDs: Yes, from 1-10 in a 10 bot melee match&lt;br /&gt;
// Clashing IDs: Theoretically possible, but unlikely (uses 18bits of the 32bit .hashcode())&lt;br /&gt;
// Memory usage: Low. Constant 1mb overhead for IDs. 1-based indexing wastes one enemy's worth of space in the data arrays.&lt;br /&gt;
static final int OPPONENT_HASHES = 262144; // 18 bits&lt;br /&gt;
static int[] opponentIDs = new int[OPPONENT_HASHES];&lt;br /&gt;
static int opponentsSeen;&lt;br /&gt;
&lt;br /&gt;
static int getOpponentID(String name) {&lt;br /&gt;
    int code = name.hashCode() &amp;amp; (OPPONENT_HASHES - 1);&lt;br /&gt;
    int id = opponentIDs[code];&lt;br /&gt;
    return opponentIDs[code] = (id == 0 ? ++opponentsSeen : id);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// FireHammer&lt;br /&gt;
// Size: 35 bytes&lt;br /&gt;
// Stable IDs: Yes&lt;br /&gt;
// Contiguous IDs: Yes, from 0-9 in a 10 bot melee match&lt;br /&gt;
// Clashing IDs: No&lt;br /&gt;
// Memory usage: Extremely low. Almost zero overhead and no wasted space in the data arrays.&lt;br /&gt;
static ArrayList&amp;lt;String&amp;gt; opponentIDs = new ArrayList&amp;lt;&amp;gt;();&lt;br /&gt;
&lt;br /&gt;
static int getOpponentID(String name) {&lt;br /&gt;
    ArrayList&amp;lt;String&amp;gt; list;&lt;br /&gt;
    if (!(list = opponentIDs).contains(name)) {&lt;br /&gt;
        list.add(name);&lt;br /&gt;
    }&lt;br /&gt;
    return list.indexOf(name);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Figment&lt;br /&gt;
// Size: 9 bytes&lt;br /&gt;
// Stable IDs: Yes&lt;br /&gt;
// Contiguous IDs: No, could be anything from 0 - 255&lt;br /&gt;
// Clashing IDs: Theoretically possible, more likely than Mirage&lt;br /&gt;
// Memory usage: Potentially high, increases data size by 246x&lt;br /&gt;
static final int OPPONENT_HASHES = 256; // 8 bits&lt;br /&gt;
&lt;br /&gt;
static int getOpponentID(String name) {&lt;br /&gt;
    return name.hashCode() &amp;amp; (OPPONENT_HASHES - 1);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Quantum v2&lt;br /&gt;
// Size: 30 bytes&lt;br /&gt;
// Stable IDs: Can be unstable at the start of the first round until each enemy has been scanned for the first time.&lt;br /&gt;
// Contiguous IDs: Yes, from 0-9 in a 10 bot melee match&lt;br /&gt;
// Clashing IDs: No&lt;br /&gt;
// Memory usage: Extremely low. Almost zero overhead and no wasted space in the data arrays.&lt;br /&gt;
static TreeSet&amp;lt;String&amp;gt; index = new TreeSet&amp;lt;String&amp;gt;();&lt;br /&gt;
&lt;br /&gt;
static int getOpponentID(String name) {&lt;br /&gt;
    index.add(name);&lt;br /&gt;
    return Arrays.binarySearch(index.toArray(), name);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; 8th August 2025&lt;br /&gt;
It's been over a year since my last update! I got disheartened by the inadequacies of my testing framework and the fact that the melee [[RoboRumble]]s for [[Code Size]] restricted bots include results for battles involving bots from outside of the weight class - I think we'd see some interesting changes to the leaderboards and which strategies are and aren't successful.&lt;br /&gt;
&lt;br /&gt;
Since the itch to robocode returned I think I've found ways to squeeze a few more bytes out of [[Quantum]], perhaps as many as 4-8. Sadly without a robust testing strategy it seems infeasible to find anything to actually do with those bytes besides adding colours back.&lt;br /&gt;
&lt;br /&gt;
I've also spent some time watching [[IWillFireNoBullet]] move and have to say it's a thing of beauty. I highly recommend it to anybody with even a passing interest in [[Melee]] battles.&lt;br /&gt;
&lt;br /&gt;
; 7th June 2024&lt;br /&gt;
My last couple of updates to [[Quantum]] have hammered home the point that my test benches don't reflect rumble performance nearly as well as I'd like - v1.2.1 and v1.2.2 performed similarly in my testing but quite differently to each other in the rumble. They both outperformed v1.0.0 by around 1% APS in testing but failed to live up to that when released. I don't think I can get away with putting off building a good testing framework any longer!&lt;br /&gt;
&lt;br /&gt;
It's not a complete loss though. I've learned a lot, found a few more bytes to play with and I'm still confident that the approach to bullet power selection will yield better performance (eventually).&lt;br /&gt;
&lt;br /&gt;
; 14th May 2024&lt;br /&gt;
Well, that was unexpected! The minor update to [[Quantum]] that I released reduced the codesize enough to allow me to fix the radar bug I added in v0.2.2 to make room for colours (Each time an opponent died there was a 50% chance the radar would switch directions). That bugfix was worth around 0.7 APS in the micro melee rumble, which was enough to push [[Quantum]] above [[HawkOnFire]]! I'm ''very'' excited to tune the gun...&lt;br /&gt;
&lt;br /&gt;
; 13th May 2024&lt;br /&gt;
ProGuard didn’t manage to shrink [[Quantum]] at all and installing Jikes is a bit of a faff these days (on an Arm MacBook anyway) so I decided to try out [https://github.com/Storyyeller/Krakatau Krakatau] to work with the assembly code directly. It looks like I can make room for the gun to use quite a few attributes - distance, bullet power, number of opponents, lateral velocity and lateral acceleration should all fit. I definitely need to improve on the spaghetti shaped shell scripts I’m using to build and test my bots if I’m going to successfully tune the gun, but I reckon it’ll be worth it. Whether or not it’s enough to outperform [[HawkOnFire]] with a nano remains to be seen, but I’m hopeful.&lt;br /&gt;
&lt;br /&gt;
; 10th May 2024&lt;br /&gt;
[[User:Sheldor2|Sheldor]]'s adaptation of [[Quantum]] (NaturalScience) motivated me to put development of a micro bot on hold. I had space for table based bullet power selection, albeit much simpler than [[User:Sheldor2|Sheldor]]'s, but only found marginal gains and tuning it by hand was both tedious and slow. I did manage to squeeze another 3 bytes out of my code though, bringing [[Quantum]] down to 239 bytes (without colours). There is room now for several different table based approaches but I'm going to need an automated way of tuning them. This leaves me with a nice todo list that will also benefit the development of other bots:&lt;br /&gt;
&lt;br /&gt;
* Try some other compilers, Jikes in particular&lt;br /&gt;
* Add ProGuard to my build scripts&lt;br /&gt;
* Build a test system that allows me to tune tables genetically&lt;br /&gt;
&lt;br /&gt;
; 4th May 2024&lt;br /&gt;
I managed to find another half-dozen or so bytes in [[FireHammer]] which was enough to improve the movement a bit. I've entered it into the rumble and will run some battles overnight so we'll see where it ranks when I wake up in the morning.&lt;br /&gt;
&lt;br /&gt;
Update: Can't complain about top 5 in the micros, although I was hoping to edge out Sprout to make top 3. This has confirmed my belief that a good circular gun is the way to go in a micro; 116 bytes for movement really isn't much to work with!&lt;br /&gt;
&lt;br /&gt;
; 2nd May 2024&lt;br /&gt;
I've finally given [[FireHammer]] a better (but not good) movement without going over 749 bytes. Once I've tidied the code up it will be ready to enter the rumble! I'm torn on whether to release it now versus waiting until I have a minibot ready to challenge [[Mirage]], I don't like to think about how much stronger [[User:Kev|Kev]] could make [[Mirage]] with all the extra space to play with!&lt;br /&gt;
&lt;br /&gt;
; 26th April 2024&lt;br /&gt;
My experimentation with micro sized melee guns is paying off; I've finally managed to squeeze [[Mirage]]'s amazing gun into a micro! The only (intended) functional changes are switching to [[Quantum]]'s bullet power selection and going back to a fixed size for bot width as per [[Mirage]] v0.1.&lt;br /&gt;
&lt;br /&gt;
So far I'm down to 733 bytes from a starting point of 919 (both without colours).&lt;br /&gt;
&lt;br /&gt;
Results are promising despite only spending 21 bytes on movement to move in an [[Infinity]] style box pattern.&lt;br /&gt;
&lt;br /&gt;
; 18th April 2024&lt;br /&gt;
I've started playing around with ideas for an entrant to the micro melee rumble. For now I'm looking at guns and mostly finding that [[DustBunny]]'s gun seems to give excellent performance per byte and is difficult to improve upon. The next best thing seems to be a good implementation of [[Circular Targeting]] but ultimately I think that movement is where the money is.&lt;br /&gt;
&lt;br /&gt;
I should probably turn my attention to finding the most efficient way I can to track enemy state, rather than relying on rolling averages, since the obvious HashMap approach introduces a lot of overhead. I'd also like to see if there's much to gain by switching from a basic nano style radar to something a little bit more sophisticated.&lt;br /&gt;
&lt;br /&gt;
In short, challenging [[Wallaby]] for the micro crown isn't going to be easy!&lt;br /&gt;
&lt;br /&gt;
; 14th April 2024&lt;br /&gt;
It turns out that Quantum is rather competetive! It knocked DustBunny off of the nano melee throne for a few days before settling in to second place. It still achieves a 100% PWIN and has by far the best survival score of any nano melee bot (and it has colours!). If I remove the colours I have 7 bytes to play with but I've not been able to find any changes that make a significant improvement. It would be interesting to see how the table looks once Quantum has run a similar number of battle to the other nanos (currently it's at less than 10%) however my rumble client has stopped working, which is a pain. Once we have internet again I'll see if I can get one of my low power machines setup as a dedicated client.&lt;br /&gt;
&lt;br /&gt;
; 6th April 2024&lt;br /&gt;
I haven't had much time for robocode over the last month but I have been able to experiment a little with a nano melee bot, heavily inspired by [[DustBunny]] and [[Infinity]]. I'm quite pleased with the idea to calculate [[Anti-Gravity Movement|anti-gravity]] forces based on the angle my bot would fire at instead of the angle to the enemy's current position. This bot (Quantum) is my first entry into the [[Roborumble]]!&lt;br /&gt;
&lt;br /&gt;
; 5th March 2024&lt;br /&gt;
My experiments with a nano [[Shadow/Melee Gun]] haven't gotten me the results I'd expected and I got a bit burned out from debugging it so I tried throwing a PM gun on which was okay but nothing to write home about. I think I'm going to experiment with different movements for a while for a change of pace. I've found I enjoy codesize restricted bots much more than megabots - I was getting a bit bogged down in top down development when I was allowed as much code as I liked.&lt;br /&gt;
&lt;br /&gt;
; 28th February 2024&lt;br /&gt;
[[File:Quantum Painting Firing Angles.png|thumb|Targeting everybody at once, Nanobot version!]]&lt;br /&gt;
I've managed to get a (very) basic version of [[Shadow/Melee Gun]] squeezed into my Nanobot. At the moment it only aims (at everybody) with [[Head-On Targeting]] weighted by distance. Once I'm done with bug fixing I think I'll be able to find room to add another gun or two and/or better energy management into the mix.&lt;br /&gt;
&lt;br /&gt;
; 27th February 2024&lt;br /&gt;
For the past couple of evenings I've been playing with nanobots for the first time. I'm interested in developing guns so decided to start by borrowing a movement from somewhere. [[Infinity]] was most appealing because its movement doesn't depend on the radar and only requires 68 bytes. I've managed to shrink the movement code by a further 15 bytes, giving me almost 200 bytes to use for a gun. ::Edit:: I've gotten it down to 35 bytes!&lt;br /&gt;
&lt;br /&gt;
; 23rd February 2024&lt;br /&gt;
I'm wondering if there should be an equivalent page to [[Wave Suffering]] for [[Displacement Vector|Displacement Vectors]]. My early efforts at collecting displacement vectors with a codesize restricted gun have resulted in some interesting and wild arrows being drawn all over the place. I'm making progress but I'm sure that subtle bugs will continue to be found for quite some time. Still not sure I'll make it work with enough space left to pair it with decent movement but the experience will be helpful either way.&lt;br /&gt;
&lt;br /&gt;
; 19th February 2024&lt;br /&gt;
[[File:Risk Function Painting.png|thumb|A picture is worth a thousand words]]&lt;br /&gt;
Over the last couple of days I've fallen face first into the &amp;lt;big&amp;gt;''pit of premature optimisation''&amp;lt;/big&amp;gt;. I noticed some interesting behaviour emerging as a result of my risk function and got carried away tweaking parameters and adding cobbled together versions of bits of code I'd not implemented in the hope of perfecting it. This predictably led to another pile of spaghetti code that needs (another) rewrite. /sigh.&lt;br /&gt;
&lt;br /&gt;
; 15th February 2024&lt;br /&gt;
My experimental bot had become a pile of spaghetti so it got a rewrite today. I'm still pleased with core design principle, especially given how quickly I was able to experiment with an idea I've not seen mentioned on the wiki before (no spoilers :p). My initial assessment is that it shows promise but definitely needs refinement as my bot now has the tendency under certain conditions to turn into a melee rambot...&lt;br /&gt;
&lt;br /&gt;
; 14th February 2024&lt;br /&gt;
My Robocoding time has been quite sporadic lately so it's been difficult to make progress on the ideas I have for a build system, testing framework and modular robot class. On the one hand that's disappointing because it's greatly slowing my efforts to develop an advanced melee contender however a few throwaway experiments have led to some interesting ideas for movement in mini (or possibly even micro) bots.&lt;br /&gt;
&lt;br /&gt;
The movement appears to be doing a good job at evaluating risk despite using a spinning radar and tracking very little information on enemies. The code is a bit buggy and needs some improvement but I think a half-decent gun could be implemented that mostly reuses the movement code, which is very interesting.&lt;br /&gt;
&lt;br /&gt;
At the very least the graphics displaying the risk evaluation are very satisfying to watch, even if these experiments don't find their way into a released bot.&lt;/div&gt;</summary>
		<author><name>D414</name></author>
		
	</entry>
	<entry>
		<id>http://robowiki.net/w/index.php?title=User:D414&amp;diff=58044</id>
		<title>User:D414</title>
		<link rel="alternate" type="text/html" href="http://robowiki.net/w/index.php?title=User:D414&amp;diff=58044"/>
		<updated>2025-08-19T01:42:53Z</updated>

		<summary type="html">&lt;p&gt;D414: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Navbox small&lt;br /&gt;
| title = Sub-pages&lt;br /&gt;
| page1 = Diary of a Robocoder&lt;br /&gt;
| page2 = Personal Gotchas&lt;br /&gt;
}}&lt;br /&gt;
= Background =&lt;br /&gt;
I was first introduced to robocode in around 2010 as an undergraduate. For our class competition I wrote a simple melee bot using minimum risk movement and a buggy linear targeting gun which came second overall. I've been fascinated with robocode ever since but it wasn't until 2024 that I finally entered the [[RoboRumble]] with [[Quantum]].&lt;br /&gt;
&lt;br /&gt;
= My bots =&lt;br /&gt;
== Active ==&lt;br /&gt;
[[Quantum]] - A nano melee specialist written in assembly with a novel take on [[Anti-Gravity Movement]].&lt;br /&gt;
&lt;br /&gt;
== Retired ==&lt;br /&gt;
[[FireHammer]] - My attempt at squeezing [[Mirage]]'s gun into a micro bot. Retired after the release of [[Figment]] which did the same, but more effectively.&lt;br /&gt;
&lt;br /&gt;
== In Development ==&lt;br /&gt;
[[Neutrino]] - An attempt at squeezing neural networks into a nanobot. As of August 2025 I have a proof of concept that the code fits ... so I'm about 1% of the way there!&lt;/div&gt;</summary>
		<author><name>D414</name></author>
		
	</entry>
	<entry>
		<id>http://robowiki.net/w/index.php?title=User:D414&amp;diff=58043</id>
		<title>User:D414</title>
		<link rel="alternate" type="text/html" href="http://robowiki.net/w/index.php?title=User:D414&amp;diff=58043"/>
		<updated>2025-08-19T01:42:11Z</updated>

		<summary type="html">&lt;p&gt;D414: Update my bots&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Navbox small&lt;br /&gt;
| title = Sub-pages&lt;br /&gt;
| page1 = Diary of a Robocoder&lt;br /&gt;
| page2 = Personal Gotchas&lt;br /&gt;
}}&lt;br /&gt;
= Background =&lt;br /&gt;
I was first introduced to robocode in around 2010 as an undergraduate. For our class competition I wrote a simple melee bot using minimum risk movement and a buggy linear targeting gun which came second overall. I've been fascinated with robocode ever since but it wasn't until 2024 that I finally entered the [[RoboRumble]] with [[Quantum]].&lt;br /&gt;
&lt;br /&gt;
= My bots =&lt;br /&gt;
== Active ==&lt;br /&gt;
[[Quantum]] - A nano melee specialist written in assembly with a novel take on [[Anti-Gravity Movement]].&lt;br /&gt;
&lt;br /&gt;
== Retired ==&lt;br /&gt;
[[FireHammer]] - My attempt at squeezing [[Mirage]]'s gun into a micro bot. Retired after the release of [[Figment]] which did the same, but more effectively.&lt;br /&gt;
&lt;br /&gt;
== In development ==&lt;br /&gt;
[[Neutrino]] - An attempt at squeezing neural networks into a nanobot. As of August 2025 I have a proof of concept that the code fits ... so I'm about 1% of the way there!&lt;/div&gt;</summary>
		<author><name>D414</name></author>
		
	</entry>
	<entry>
		<id>http://robowiki.net/w/index.php?title=BasicSurfer/Code&amp;diff=58042</id>
		<title>BasicSurfer/Code</title>
		<link rel="alternate" type="text/html" href="http://robowiki.net/w/index.php?title=BasicSurfer/Code&amp;diff=58042"/>
		<updated>2025-08-18T18:23:12Z</updated>

		<summary type="html">&lt;p&gt;D414: Fix syntax highlighting&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Navbox small&lt;br /&gt;
| parent       = BasicSurfer&lt;br /&gt;
| title        = BasicSurfer Sub-pages&lt;br /&gt;
| page1        = Code&lt;br /&gt;
}}&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
package wiki;&lt;br /&gt;
&lt;br /&gt;
import robocode.*;&lt;br /&gt;
import robocode.util.Utils;&lt;br /&gt;
import java.awt.geom.*;     // for Point2D's&lt;br /&gt;
import java.lang.*;         // for Double and Integer objects&lt;br /&gt;
import java.util.ArrayList; // for collection of waves&lt;br /&gt;
&lt;br /&gt;
public class BasicSurfer extends AdvancedRobot {&lt;br /&gt;
    public static int BINS = 47;&lt;br /&gt;
    public static double _surfStats[] = new double[BINS]; // we'll use 47 bins&lt;br /&gt;
    public Point2D.Double _myLocation;     // our bot's location&lt;br /&gt;
    public Point2D.Double _enemyLocation;  // enemy bot's location&lt;br /&gt;
&lt;br /&gt;
    public ArrayList _enemyWaves;&lt;br /&gt;
    public ArrayList _surfDirections;&lt;br /&gt;
    public ArrayList _surfAbsBearings;&lt;br /&gt;
&lt;br /&gt;
    // We must keep track of the enemy's energy level to detect EnergyDrop,&lt;br /&gt;
    // indicating a bullet is fired&lt;br /&gt;
    public static double _oppEnergy = 100.0;&lt;br /&gt;
&lt;br /&gt;
    // This is a rectangle that represents an 800x600 battle field,&lt;br /&gt;
    // used for a simple, iterative WallSmoothing method (by Kawigi).&lt;br /&gt;
    // If you're not familiar with WallSmoothing, the wall stick indicates&lt;br /&gt;
    // the amount of space we try to always have on either end of the tank&lt;br /&gt;
    // (extending straight out the front or back) before touching a wall.&lt;br /&gt;
    public static Rectangle2D.Double _fieldRect&lt;br /&gt;
        = new java.awt.geom.Rectangle2D.Double(18, 18, 764, 564);&lt;br /&gt;
    public static double WALL_STICK = 160;&lt;br /&gt;
&lt;br /&gt;
    public void run() {&lt;br /&gt;
        _enemyWaves = new ArrayList();&lt;br /&gt;
        _surfDirections = new ArrayList();&lt;br /&gt;
        _surfAbsBearings = new ArrayList();&lt;br /&gt;
&lt;br /&gt;
        setAdjustGunForRobotTurn(true);&lt;br /&gt;
        setAdjustRadarForGunTurn(true);&lt;br /&gt;
&lt;br /&gt;
        do {&lt;br /&gt;
            // basic mini-radar code&lt;br /&gt;
            turnRadarRightRadians(Double.POSITIVE_INFINITY);&lt;br /&gt;
        } while (true);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public void onScannedRobot(ScannedRobotEvent e) {&lt;br /&gt;
        _myLocation = new Point2D.Double(getX(), getY());&lt;br /&gt;
&lt;br /&gt;
        double lateralVelocity = getVelocity()*Math.sin(e.getBearingRadians());&lt;br /&gt;
        double absBearing = e.getBearingRadians() + getHeadingRadians();&lt;br /&gt;
&lt;br /&gt;
        setTurnRadarRightRadians(Utils.normalRelativeAngle(absBearing - getRadarHeadingRadians()) * 2);&lt;br /&gt;
&lt;br /&gt;
        _surfDirections.add(0,&lt;br /&gt;
            new Integer((lateralVelocity &amp;gt;= 0) ? 1 : -1));&lt;br /&gt;
        _surfAbsBearings.add(0, new Double(absBearing + Math.PI));&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        double bulletPower = _oppEnergy - e.getEnergy();&lt;br /&gt;
        if (bulletPower &amp;lt; 3.01 &amp;amp;&amp;amp; bulletPower &amp;gt; 0.09&lt;br /&gt;
            &amp;amp;&amp;amp; _surfDirections.size() &amp;gt; 2) {&lt;br /&gt;
            EnemyWave ew = new EnemyWave();&lt;br /&gt;
            ew.fireTime = getTime() - 1;&lt;br /&gt;
            ew.bulletVelocity = bulletVelocity(bulletPower);&lt;br /&gt;
            ew.distanceTraveled = bulletVelocity(bulletPower);&lt;br /&gt;
            ew.direction = ((Integer)_surfDirections.get(2)).intValue();&lt;br /&gt;
            ew.directAngle = ((Double)_surfAbsBearings.get(2)).doubleValue();&lt;br /&gt;
            ew.fireLocation = (Point2D.Double)_enemyLocation.clone(); // last tick&lt;br /&gt;
&lt;br /&gt;
            _enemyWaves.add(ew);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        _oppEnergy = e.getEnergy();&lt;br /&gt;
&lt;br /&gt;
        // update after EnemyWave detection, because that needs the previous&lt;br /&gt;
        // enemy location as the source of the wave&lt;br /&gt;
        _enemyLocation = project(_myLocation, absBearing, e.getDistance());&lt;br /&gt;
&lt;br /&gt;
        updateWaves();&lt;br /&gt;
        doSurfing();&lt;br /&gt;
&lt;br /&gt;
        // gun code would go here...&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public void updateWaves() {&lt;br /&gt;
        for (int x = 0; x &amp;lt; _enemyWaves.size(); x++) {&lt;br /&gt;
            EnemyWave ew = (EnemyWave)_enemyWaves.get(x);&lt;br /&gt;
&lt;br /&gt;
            ew.distanceTraveled = (getTime() - ew.fireTime) * ew.bulletVelocity;&lt;br /&gt;
            if (ew.distanceTraveled &amp;gt;&lt;br /&gt;
                _myLocation.distance(ew.fireLocation) + 50) {&lt;br /&gt;
                _enemyWaves.remove(x);&lt;br /&gt;
                x--;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public EnemyWave getClosestSurfableWave() {&lt;br /&gt;
        double closestDistance = 50000; // I juse use some very big number here&lt;br /&gt;
        EnemyWave surfWave = null;&lt;br /&gt;
&lt;br /&gt;
        for (int x = 0; x &amp;lt; _enemyWaves.size(); x++) {&lt;br /&gt;
            EnemyWave ew = (EnemyWave)_enemyWaves.get(x);&lt;br /&gt;
            double distance = _myLocation.distance(ew.fireLocation)&lt;br /&gt;
                - ew.distanceTraveled;&lt;br /&gt;
&lt;br /&gt;
            if (distance &amp;gt; ew.bulletVelocity &amp;amp;&amp;amp; distance &amp;lt; closestDistance) {&lt;br /&gt;
                surfWave = ew;&lt;br /&gt;
                closestDistance = distance;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        return surfWave;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // Given the EnemyWave that the bullet was on, and the point where we&lt;br /&gt;
    // were hit, calculate the index into our stat array for that factor.&lt;br /&gt;
    public static int getFactorIndex(EnemyWave ew, Point2D.Double targetLocation) {&lt;br /&gt;
        double offsetAngle = (absoluteBearing(ew.fireLocation, targetLocation)&lt;br /&gt;
            - ew.directAngle);&lt;br /&gt;
        double factor = Utils.normalRelativeAngle(offsetAngle)&lt;br /&gt;
            / maxEscapeAngle(ew.bulletVelocity) * ew.direction;&lt;br /&gt;
&lt;br /&gt;
        return (int)limit(0,&lt;br /&gt;
            (factor * ((BINS - 1) / 2)) + ((BINS - 1) / 2),&lt;br /&gt;
            BINS - 1);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // Given the EnemyWave that the bullet was on, and the point where we&lt;br /&gt;
    // were hit, update our stat array to reflect the danger in that area.&lt;br /&gt;
    public void logHit(EnemyWave ew, Point2D.Double targetLocation) {&lt;br /&gt;
        int index = getFactorIndex(ew, targetLocation);&lt;br /&gt;
&lt;br /&gt;
        for (int x = 0; x &amp;lt; BINS; x++) {&lt;br /&gt;
            // for the spot bin that we were hit on, add 1;&lt;br /&gt;
            // for the bins next to it, add 1 / 2;&lt;br /&gt;
            // the next one, add 1 / 5; and so on...&lt;br /&gt;
            _surfStats[x] += 1.0 / (Math.pow(index - x, 2) + 1);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public void onHitByBullet(HitByBulletEvent e) {&lt;br /&gt;
        // If the _enemyWaves collection is empty, we must have missed the&lt;br /&gt;
        // detection of this wave somehow.&lt;br /&gt;
        if (!_enemyWaves.isEmpty()) {&lt;br /&gt;
            Point2D.Double hitBulletLocation = new Point2D.Double(&lt;br /&gt;
                e.getBullet().getX(), e.getBullet().getY());&lt;br /&gt;
            EnemyWave hitWave = null;&lt;br /&gt;
&lt;br /&gt;
            // look through the EnemyWaves, and find one that could've hit us.&lt;br /&gt;
            for (int x = 0; x &amp;lt; _enemyWaves.size(); x++) {&lt;br /&gt;
                EnemyWave ew = (EnemyWave)_enemyWaves.get(x);&lt;br /&gt;
&lt;br /&gt;
                if (Math.abs(ew.distanceTraveled -&lt;br /&gt;
                    _myLocation.distance(ew.fireLocation)) &amp;lt; 50&lt;br /&gt;
                    &amp;amp;&amp;amp; Math.abs(bulletVelocity(e.getBullet().getPower()) &lt;br /&gt;
                        - ew.bulletVelocity) &amp;lt; 0.001) {&lt;br /&gt;
                    hitWave = ew;&lt;br /&gt;
                    break;&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            if (hitWave != null) {&lt;br /&gt;
                logHit(hitWave, hitBulletLocation);&lt;br /&gt;
&lt;br /&gt;
                // We can remove this wave now, of course.&lt;br /&gt;
                _enemyWaves.remove(_enemyWaves.lastIndexOf(hitWave));&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // CREDIT: mini sized predictor from Apollon, by rozu&lt;br /&gt;
    // http://robowiki.net?Apollon&lt;br /&gt;
    public Point2D.Double predictPosition(EnemyWave surfWave, int direction) {&lt;br /&gt;
    	Point2D.Double predictedPosition = (Point2D.Double)_myLocation.clone();&lt;br /&gt;
    	double predictedVelocity = getVelocity();&lt;br /&gt;
    	double predictedHeading = getHeadingRadians();&lt;br /&gt;
    	double maxTurning, moveAngle, moveDir;&lt;br /&gt;
&lt;br /&gt;
        int counter = 0; // number of ticks in the future&lt;br /&gt;
        boolean intercepted = false;&lt;br /&gt;
&lt;br /&gt;
    	do {&lt;br /&gt;
    		moveAngle =&lt;br /&gt;
                wallSmoothing(predictedPosition, absoluteBearing(surfWave.fireLocation,&lt;br /&gt;
                predictedPosition) + (direction * (Math.PI/2)), direction)&lt;br /&gt;
                - predictedHeading;&lt;br /&gt;
    		moveDir = 1;&lt;br /&gt;
&lt;br /&gt;
    		if(Math.cos(moveAngle) &amp;lt; 0) {&lt;br /&gt;
    			moveAngle += Math.PI;&lt;br /&gt;
    			moveDir = -1;&lt;br /&gt;
    		}&lt;br /&gt;
&lt;br /&gt;
    		moveAngle = Utils.normalRelativeAngle(moveAngle);&lt;br /&gt;
&lt;br /&gt;
    		// maxTurning is built in like this, you can't turn more then this in one tick&lt;br /&gt;
    		maxTurning = Math.PI/720d*(40d - 3d*Math.abs(predictedVelocity));&lt;br /&gt;
    		predictedHeading = Utils.normalRelativeAngle(predictedHeading&lt;br /&gt;
                + limit(-maxTurning, moveAngle, maxTurning));&lt;br /&gt;
&lt;br /&gt;
    		// this one is nice ;). if predictedVelocity and moveDir have&lt;br /&gt;
            // different signs you want to breack down&lt;br /&gt;
    		// otherwise you want to accelerate (look at the factor &amp;quot;2&amp;quot;)&lt;br /&gt;
    		predictedVelocity += (predictedVelocity * moveDir &amp;lt; 0 ? 2*moveDir : moveDir);&lt;br /&gt;
    		predictedVelocity = limit(-8, predictedVelocity, 8);&lt;br /&gt;
&lt;br /&gt;
    		// calculate the new predicted position&lt;br /&gt;
    		predictedPosition = project(predictedPosition, predictedHeading, predictedVelocity);&lt;br /&gt;
&lt;br /&gt;
            counter++;&lt;br /&gt;
&lt;br /&gt;
            if (predictedPosition.distance(surfWave.fireLocation) &amp;lt;&lt;br /&gt;
                surfWave.distanceTraveled + (counter * surfWave.bulletVelocity)&lt;br /&gt;
                + surfWave.bulletVelocity) {&lt;br /&gt;
                intercepted = true;&lt;br /&gt;
            }&lt;br /&gt;
    	} while(!intercepted &amp;amp;&amp;amp; counter &amp;lt; 500);&lt;br /&gt;
&lt;br /&gt;
    	return predictedPosition;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public double checkDanger(EnemyWave surfWave, int direction) {&lt;br /&gt;
        int index = getFactorIndex(surfWave,&lt;br /&gt;
            predictPosition(surfWave, direction));&lt;br /&gt;
&lt;br /&gt;
        return _surfStats[index];&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public void doSurfing() {&lt;br /&gt;
        EnemyWave surfWave = getClosestSurfableWave();&lt;br /&gt;
&lt;br /&gt;
        if (surfWave == null) { return; }&lt;br /&gt;
&lt;br /&gt;
        double dangerLeft = checkDanger(surfWave, -1);&lt;br /&gt;
        double dangerRight = checkDanger(surfWave, 1);&lt;br /&gt;
&lt;br /&gt;
        double goAngle = absoluteBearing(surfWave.fireLocation, _myLocation);&lt;br /&gt;
        if (dangerLeft &amp;lt; dangerRight) {&lt;br /&gt;
            goAngle = wallSmoothing(_myLocation, goAngle - (Math.PI/2), -1);&lt;br /&gt;
        } else {&lt;br /&gt;
            goAngle = wallSmoothing(_myLocation, goAngle + (Math.PI/2), 1);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        setBackAsFront(this, goAngle);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // This can be defined as an inner class if you want.&lt;br /&gt;
    class EnemyWave {&lt;br /&gt;
        Point2D.Double fireLocation;&lt;br /&gt;
        long fireTime;&lt;br /&gt;
        double bulletVelocity, directAngle, distanceTraveled;&lt;br /&gt;
        int direction;&lt;br /&gt;
&lt;br /&gt;
        public EnemyWave() { }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // CREDIT: Iterative WallSmoothing by Kawigi&lt;br /&gt;
    //   - return absolute angle to move at after account for WallSmoothing&lt;br /&gt;
    // robowiki.net?WallSmoothing&lt;br /&gt;
    public double wallSmoothing(Point2D.Double botLocation, double angle, int orientation) {&lt;br /&gt;
        while (!_fieldRect.contains(project(botLocation, angle, 160))) {&lt;br /&gt;
            angle += orientation*0.05;&lt;br /&gt;
        }&lt;br /&gt;
        return angle;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // CREDIT: from CassiusClay, by PEZ&lt;br /&gt;
    //   - returns point length away from sourceLocation, at angle&lt;br /&gt;
    // robowiki.net?CassiusClay&lt;br /&gt;
    public static Point2D.Double project(Point2D.Double sourceLocation, double angle, double length) {&lt;br /&gt;
        return new Point2D.Double(sourceLocation.x + Math.sin(angle) * length,&lt;br /&gt;
            sourceLocation.y + Math.cos(angle) * length);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // got this from RaikoMicro, by Jamougha, but I think it's used by many authors&lt;br /&gt;
    //  - returns the absolute angle (in radians) from source to target points&lt;br /&gt;
    public static double absoluteBearing(Point2D.Double source, Point2D.Double target) {&lt;br /&gt;
        return Math.atan2(target.x - source.x, target.y - source.y);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public static double limit(double min, double value, double max) {&lt;br /&gt;
        return Math.max(min, Math.min(value, max));&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public static double bulletVelocity(double power) {&lt;br /&gt;
        return (20D - (3D*power));&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public static double maxEscapeAngle(double velocity) {&lt;br /&gt;
        return Math.asin(8.0/velocity);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public static void setBackAsFront(AdvancedRobot robot, double goAngle) {&lt;br /&gt;
        double angle =&lt;br /&gt;
            Utils.normalRelativeAngle(goAngle - robot.getHeadingRadians());&lt;br /&gt;
        if (Math.abs(angle) &amp;gt; (Math.PI/2)) {&lt;br /&gt;
            if (angle &amp;lt; 0) {&lt;br /&gt;
                robot.setTurnRightRadians(Math.PI + angle);&lt;br /&gt;
            } else {&lt;br /&gt;
                robot.setTurnLeftRadians(Math.PI - angle);&lt;br /&gt;
            }&lt;br /&gt;
            robot.setBack(100);&lt;br /&gt;
        } else {&lt;br /&gt;
            if (angle &amp;lt; 0) {&lt;br /&gt;
                robot.setTurnLeftRadians(-1*angle);&lt;br /&gt;
           } else {&lt;br /&gt;
                robot.setTurnRightRadians(angle);&lt;br /&gt;
           }&lt;br /&gt;
            robot.setAhead(100);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public void onPaint(java.awt.Graphics2D g) {&lt;br /&gt;
         g.setColor(java.awt.Color.red);&lt;br /&gt;
         for(int i = 0; i &amp;lt; _enemyWaves.size(); i++){&lt;br /&gt;
            EnemyWave w = (EnemyWave)(_enemyWaves.get(i));&lt;br /&gt;
            Point2D.Double center = w.fireLocation;&lt;br /&gt;
&lt;br /&gt;
            //int radius = (int)(w.distanceTraveled + w.bulletVelocity);&lt;br /&gt;
            //hack to make waves line up visually, due to execution sequence in robocode engine&lt;br /&gt;
            //use this only if you advance waves in the event handlers (eg. in onScannedRobot())&lt;br /&gt;
            //NB! above hack is now only necessary for robocode versions before 1.4.2&lt;br /&gt;
            //otherwise use: &lt;br /&gt;
            int radius = (int)w.distanceTraveled;&lt;br /&gt;
&lt;br /&gt;
            //Point2D.Double center = w.fireLocation;&lt;br /&gt;
            if(radius - 40 &amp;lt; center.distance(_myLocation))&lt;br /&gt;
               g.drawOval((int)(center.x - radius ), (int)(center.y - radius), radius*2, radius*2);&lt;br /&gt;
         }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Source Code]]&lt;/div&gt;</summary>
		<author><name>D414</name></author>
		
	</entry>
	<entry>
		<id>http://robowiki.net/w/index.php?title=Wave_Surfing_Tutorial&amp;diff=58041</id>
		<title>Wave Surfing Tutorial</title>
		<link rel="alternate" type="text/html" href="http://robowiki.net/w/index.php?title=Wave_Surfing_Tutorial&amp;diff=58041"/>
		<updated>2025-08-17T19:18:00Z</updated>

		<summary type="html">&lt;p&gt;D414: Fix syntax highlighting&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
This tutorial is inspired by [[GuessFactor Targeting Tutorial|Kawigi's GuessFactor Targeting Tutorial]], which provides a very clear and concise description of how a basic GuessFactor gun works. All of the authors of existing Wave Surfers have, to varying degrees, gone through a lot of [[Wave Suffering]] to iron out many of these details, and I am sure they are all wiser for it. However, I think it would be helpful to many current and future bot authors to have some of these details more explicitly outlined for them. Without the pain of ironing out the myriad bugs, building a basic, functioning [[Wave Surfing]] movement is not that hard!&lt;br /&gt;
&lt;br /&gt;
First, you should have a basic understanding of [[GuessFactor Targeting (traditional)|GuessFactor Targeting]]. The mainstream implementation of Wave Surfing (i.e., using [[GuessFactor|GuessFactors]] and [[Visit Count Stats]]) is very much the inverse of GuessFactor Targeting; the key difference is that there are a lot more minor details that need to be accounted for on the movement end of things.&lt;br /&gt;
&lt;br /&gt;
Credits should go to:&lt;br /&gt;
* [[ABC]], the inventor of [[Wave Surfing]].&lt;br /&gt;
* [[PEZ]], whose [[CassiusClay]] style of Wave Surfing is used here, both in terms of the algorithm and the style of code.&lt;br /&gt;
* [[rozu]], the source of the mini-sized [[Wave Surfing/Precise Prediction|Precise Prediction]] method used here.&lt;br /&gt;
* [[PEZ]], [[rozu]], and [[Jamougha]] as the sources of most of the utility methods.&lt;br /&gt;
* [[Voidious]], author of this tutorial.&lt;br /&gt;
&lt;br /&gt;
== Coding a BasicSurfer ==&lt;br /&gt;
&lt;br /&gt;
=== Helper methods ===&lt;br /&gt;
&lt;br /&gt;
First, let's define a few utility classes and methods that we will need. These generally go at the end of my code, but for the sake of understanding, I'll post them at the top first:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
    class EnemyWave {&lt;br /&gt;
        Point2D.Double fireLocation;&lt;br /&gt;
        long fireTime;&lt;br /&gt;
        double bulletVelocity, directAngle, distanceTraveled;&lt;br /&gt;
        int direction;&lt;br /&gt;
&lt;br /&gt;
        public EnemyWave() { }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public double wallSmoothing(Point2D.Double botLocation, double angle, int orientation) {&lt;br /&gt;
        while (!_fieldRect.contains(project(botLocation, angle, WALL_STICK))) {&lt;br /&gt;
            angle += orientation*0.05;&lt;br /&gt;
        }&lt;br /&gt;
        return angle;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public static Point2D.Double project(Point2D.Double sourceLocation,&lt;br /&gt;
        double angle, double length) {&lt;br /&gt;
        return new Point2D.Double(sourceLocation.x + Math.sin(angle) * length,&lt;br /&gt;
            sourceLocation.y + Math.cos(angle) * length);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public static double absoluteBearing(Point2D.Double source, Point2D.Double target) {&lt;br /&gt;
        return Math.atan2(target.x - source.x, target.y - source.y);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public static double limit(double min, double value, double max) {&lt;br /&gt;
        return Math.max(min, Math.min(value, max));&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public static double bulletVelocity(double power) {&lt;br /&gt;
        return (20.0 - (3.0*power));&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public static double maxEscapeAngle(double velocity) {&lt;br /&gt;
        return Math.asin(8.0/velocity);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public static void setBackAsFront(AdvancedRobot robot, double goAngle) {&lt;br /&gt;
        double angle =&lt;br /&gt;
            Utils.normalRelativeAngle(goAngle - robot.getHeadingRadians());&lt;br /&gt;
        if (Math.abs(angle) &amp;gt; (Math.PI/2)) {&lt;br /&gt;
            if (angle &amp;lt; 0) {&lt;br /&gt;
                robot.setTurnRightRadians(Math.PI + angle);&lt;br /&gt;
            } else {&lt;br /&gt;
                robot.setTurnLeftRadians(Math.PI - angle);&lt;br /&gt;
            }&lt;br /&gt;
            robot.setBack(100);&lt;br /&gt;
        } else {&lt;br /&gt;
            if (angle &amp;lt; 0) {&lt;br /&gt;
                robot.setTurnLeftRadians(-1*angle);&lt;br /&gt;
           } else {&lt;br /&gt;
                robot.setTurnRightRadians(angle);&lt;br /&gt;
           }&lt;br /&gt;
            robot.setAhead(100);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
That's all pretty straightforward, so let's just move right on to the start of our new bot, [[BasicSurfer]].&lt;br /&gt;
&lt;br /&gt;
=== Variables needed, radar code, run() ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
package wiki;&lt;br /&gt;
&lt;br /&gt;
import robocode.*;&lt;br /&gt;
import robocode.util.Utils;&lt;br /&gt;
import java.awt.geom.*;     // for Point2D's&lt;br /&gt;
import java.util.ArrayList; // for collection of waves&lt;br /&gt;
&lt;br /&gt;
public class BasicSurfer extends AdvancedRobot {&lt;br /&gt;
    public static int BINS = 47;&lt;br /&gt;
    public static double _surfStats[] = new double[BINS];&lt;br /&gt;
    public Point2D.Double _myLocation;     // our bot's location&lt;br /&gt;
    public Point2D.Double _enemyLocation;  // enemy bot's location&lt;br /&gt;
&lt;br /&gt;
    public ArrayList _enemyWaves;&lt;br /&gt;
    public ArrayList _surfDirections;&lt;br /&gt;
    public ArrayList _surfAbsBearings;&lt;br /&gt;
&lt;br /&gt;
    public static double _oppEnergy = 100.0;&lt;br /&gt;
&lt;br /&gt;
   /** This is a rectangle that represents an 800x600 battle field,&lt;br /&gt;
    * used for a simple, iterative WallSmoothing method (by PEZ).&lt;br /&gt;
    * If you're not familiar with WallSmoothing, the wall stick indicates&lt;br /&gt;
    * the amount of space we try to always have on either end of the tank&lt;br /&gt;
    * (extending straight out the front or back) before touching a wall.&lt;br /&gt;
    */&lt;br /&gt;
    public static Rectangle2D.Double _fieldRect&lt;br /&gt;
        = new java.awt.geom.Rectangle2D.Double(18, 18, 764, 564);&lt;br /&gt;
    public static double WALL_STICK = 160;&lt;br /&gt;
&lt;br /&gt;
    public void run() {&lt;br /&gt;
        _enemyWaves = new ArrayList();&lt;br /&gt;
        _surfDirections = new ArrayList();&lt;br /&gt;
        _surfAbsBearings = new ArrayList();&lt;br /&gt;
&lt;br /&gt;
        setAdjustGunForRobotTurn(true);&lt;br /&gt;
        setAdjustRadarForGunTurn(true);&lt;br /&gt;
&lt;br /&gt;
        do {&lt;br /&gt;
            turnRadarRightRadians(Double.POSITIVE_INFINITY);&lt;br /&gt;
        } while (true);&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here, we just get all of our basic variables and objects setup, and part of the radar code. In order to wave surf, we need to keep track of:&lt;br /&gt;
* Our location and the enemy location (of course).&lt;br /&gt;
* The enemy's last known energy level (for detecting [[Energy Drop|energy drop]]).&lt;br /&gt;
* A collection of waves, to surf and gather stats on. In [[GuessFactor Targeting (traditional)|GuessFactor Targeting]], a [[GuessFactor]]'s visit count is increased with every wave that passes the enemy; in [[Wave Surfing]], when we are hit by a bullet, we increase the visit count for that [[GuessFactor]], and try to avoid it in the future.&lt;br /&gt;
* A collection of our direction in relation to the enemy in past ticks, 1 for clock-wise, -1 for counter-clockwise. The last direction he could have used for aiming is from 2 ticks before we saw the [[energy drop]].&lt;br /&gt;
* A collection of past absolute bearings to enemy. The one used in an [[Enemy Wave]] we detect is also from 2 ticks ago, as that's the last one he saw before his last gun turn.&lt;br /&gt;
* Some info about the battle field for [[Wall Smoothing]].&lt;br /&gt;
&lt;br /&gt;
=== Detecting enemy bullets, creating and managing waves ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
    public void onScannedRobot(ScannedRobotEvent e) {&lt;br /&gt;
        _myLocation = new Point2D.Double(getX(), getY());&lt;br /&gt;
&lt;br /&gt;
        double lateralVelocity = getVelocity()*Math.sin(e.getBearingRadians());&lt;br /&gt;
        double absBearing = e.getBearingRadians() + getHeadingRadians();&lt;br /&gt;
&lt;br /&gt;
        setTurnRadarRightRadians(Utils.normalRelativeAngle(absBearing&lt;br /&gt;
            - getRadarHeadingRadians()) * 2);&lt;br /&gt;
&lt;br /&gt;
        _surfDirections.add(0,&lt;br /&gt;
            new Integer((lateralVelocity &amp;gt;= 0) ? 1 : -1));&lt;br /&gt;
        _surfAbsBearings.add(0, new Double(absBearing + Math.PI));&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        double bulletPower = _oppEnergy - e.getEnergy();&lt;br /&gt;
        if (bulletPower &amp;lt; 3.01 &amp;amp;&amp;amp; bulletPower &amp;gt; 0.09&lt;br /&gt;
            &amp;amp;&amp;amp; _surfDirections.size() &amp;gt; 2) {&lt;br /&gt;
            EnemyWave ew = new EnemyWave();&lt;br /&gt;
            ew.fireTime = getTime() - 1;&lt;br /&gt;
            ew.bulletVelocity = bulletVelocity(bulletPower);&lt;br /&gt;
            ew.distanceTraveled = bulletVelocity(bulletPower);&lt;br /&gt;
            ew.direction = ((Integer)_surfDirections.get(2)).intValue();&lt;br /&gt;
            ew.directAngle = ((Double)_surfAbsBearings.get(2)).doubleValue();&lt;br /&gt;
            ew.fireLocation = (Point2D.Double)_enemyLocation.clone(); // last tick&lt;br /&gt;
&lt;br /&gt;
            _enemyWaves.add(ew);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        _oppEnergy = e.getEnergy();&lt;br /&gt;
&lt;br /&gt;
        // update after EnemyWave detection, because that needs the previous&lt;br /&gt;
        // enemy location as the source of the wave&lt;br /&gt;
        _enemyLocation = project(_myLocation, absBearing, e.getDistance());&lt;br /&gt;
&lt;br /&gt;
        updateWaves();&lt;br /&gt;
        doSurfing();&lt;br /&gt;
&lt;br /&gt;
        // gun code would go here...&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We are still only collecting data, but getting this stuff right is a crucial aspect of getting perfect (or nearly perfect) surfing. Assuming no skipped turns, you detect a bullet on the tick after it is fired. Its source is from the enemy's location on the previous tick (that's when he called &amp;lt;code&amp;gt;setFire&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;setFireBullet&amp;lt;/code&amp;gt;); it has already advanced by its velocity from that location; and the last data the enemy saw before turning his gun for this bullet is from two ticks ago -- because in the execution of one tick, bullets are fired before guns are turned. We aren't using any additional [[segmentation]] here, but that the last scan he could've aimed with was from 2 ticks ago is also important in segmenting your surf stats.&lt;br /&gt;
&lt;br /&gt;
For now, we will abstract the actual movement as the call to &amp;quot;doSurfing()&amp;quot;, since there are some other issues to cover before getting into the main Wave Surfing algorithm.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
    public void updateWaves() {&lt;br /&gt;
        for (int x = 0; x &amp;lt; _enemyWaves.size(); x++) {&lt;br /&gt;
            EnemyWave ew = (EnemyWave)_enemyWaves.get(x);&lt;br /&gt;
&lt;br /&gt;
            ew.distanceTraveled = (getTime() - ew.fireTime) * ew.bulletVelocity;&lt;br /&gt;
            if (ew.distanceTraveled &amp;gt;&lt;br /&gt;
                _myLocation.distance(ew.fireLocation) + 50) {&lt;br /&gt;
                _enemyWaves.remove(x);&lt;br /&gt;
                x--;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Each tick, we should update the distance that each wave has traveled from its source, and delete any waves that have clearly passed us. The reason for adding that extra 50 is just to give some extra space to track the onHitByBullet event; if we removed it when it passed 0, we could still run into a bullet and get hit near our rear edge, and we would have already deleted the appropriate wave to link it to.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
    public EnemyWave getClosestSurfableWave() {&lt;br /&gt;
        double closestDistance = 50000; // I juse use some very big number here&lt;br /&gt;
        EnemyWave surfWave = null;&lt;br /&gt;
&lt;br /&gt;
        for (int x = 0; x &amp;lt; _enemyWaves.size(); x++) {&lt;br /&gt;
            EnemyWave ew = (EnemyWave)_enemyWaves.get(x);&lt;br /&gt;
            double distance = _myLocation.distance(ew.fireLocation)&lt;br /&gt;
                - ew.distanceTraveled;&lt;br /&gt;
&lt;br /&gt;
            if (distance &amp;gt; ew.bulletVelocity &amp;amp;&amp;amp; distance &amp;lt; closestDistance) {&lt;br /&gt;
                surfWave = ew;&lt;br /&gt;
                closestDistance = distance;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        return surfWave;&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There is room for debate here, I feel, and you may prefer to tweak the &amp;quot;distance &amp;gt; bullet velocity&amp;quot; condition that I use. Since a bullet will advance by its velocity once more before checking for collisions (see [[Robocode/Game Physics]]), the above code is, in effect, surfing waves until they pass the center of your bot. Of course, depending on a bullet's velocity and your exact angle, a bullet could still hit you even past your center; but I believe (and have found) that, when surfing one wave at a time, there is more to gain by starting to surf the next wave than by continuing to surf the current one. If you are [[Bin Smoothing]] and using correct surfing, you should already be quite safe without an extra tick or two of surfing this wave. If you are surfing multiple waves and weighting them by time to impact, then by all means, you might as well account for this wave until it is actually totally past you.&lt;br /&gt;
&lt;br /&gt;
Other than that small detail, this method just finds the closest wave that hasn't passed us already, and returns it to the movement algorithm.&lt;br /&gt;
&lt;br /&gt;
=== Collecting data from your waves ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
    // Given the EnemyWave that the bullet was on, and the point where we&lt;br /&gt;
    // were hit, calculate the index into our stat array for that factor.&lt;br /&gt;
    public static int getFactorIndex(EnemyWave ew, Point2D.Double targetLocation) {&lt;br /&gt;
        double offsetAngle = (absoluteBearing(ew.fireLocation, targetLocation)&lt;br /&gt;
            - ew.directAngle);&lt;br /&gt;
        double factor = Utils.normalRelativeAngle(offsetAngle)&lt;br /&gt;
            / maxEscapeAngle(ew.bulletVelocity) * ew.direction;&lt;br /&gt;
&lt;br /&gt;
        return (int)limit(0,&lt;br /&gt;
            (factor * ((BINS - 1) / 2)) + ((BINS - 1) / 2),&lt;br /&gt;
            BINS - 1);&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I know this might look like a bit of Voodoo at first, but let's walk through it. The offset angle is the relative angle that he aimed at to hit us, and is simply the current angle from us to the wave source minus the original angle from us to the wave source (at fire time). The [[GuessFactor]] is this offset angle divided by the maximum escape angle, and we need to reverse the sign of this factor if we were traveling counter-clockwise at fire time. (You should know this from [[GuessFactor Targeting (traditional)|GuessFactor Targeting]], but GF1 = a clockwise angle if we were traveling clockwise, while GF1 = a counter-clockwise angle if we were traveling counter-clockwise, at fire time.)&lt;br /&gt;
&lt;br /&gt;
The conversion of this factor to an index in our array might not be so intuitive. With 47 bins, the middle bin (index 23) is GF 0, and we have 23 more bins on each side. So if you multiply the [[GuessFactor]] by 23, you will get a number from -23 to 23. Since we want a number from 0 to 46 to put in our array, we add another 23.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
    // Given the EnemyWave that the bullet was on, and the point where we&lt;br /&gt;
    // were hit, update our stat array to reflect the danger in that area.&lt;br /&gt;
    public void logHit(EnemyWave ew, Point2D.Double targetLocation) {&lt;br /&gt;
        int index = getFactorIndex(ew, targetLocation);&lt;br /&gt;
&lt;br /&gt;
        for (int x = 0; x &amp;lt; BINS; x++) {&lt;br /&gt;
            // for the spot bin that we were hit on, add 1;&lt;br /&gt;
            // for the bins next to it, add 1 / 2;&lt;br /&gt;
            // the next one, add 1 / 5; and so on...&lt;br /&gt;
            _surfStats[x] += 1.0 / (Math.pow(index - x, 2) + 1);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We haven't yet figured out which wave hit us, but once we have, we can pass it here along with the location of the bullet that hit us to update our stats. Just get the array index for this hit location on this wave (already coded in getFactorIndex()), and update our stat array using a simple [[Bin Smoothing]].&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
    public void onHitByBullet(HitByBulletEvent e) {&lt;br /&gt;
        // If the _enemyWaves collection is empty, we must have missed the&lt;br /&gt;
        // detection of this wave somehow.&lt;br /&gt;
        if (!_enemyWaves.isEmpty()) {&lt;br /&gt;
            Point2D.Double hitBulletLocation = new Point2D.Double(&lt;br /&gt;
                e.getBullet().getX(), e.getBullet().getY());&lt;br /&gt;
            EnemyWave hitWave = null;&lt;br /&gt;
&lt;br /&gt;
            // look through the EnemyWaves, and find one that could've hit us.&lt;br /&gt;
            for (int x = 0; x &amp;lt; _enemyWaves.size(); x++) {&lt;br /&gt;
                EnemyWave ew = (EnemyWave)_enemyWaves.get(x);&lt;br /&gt;
&lt;br /&gt;
                if (Math.abs(ew.distanceTraveled -&lt;br /&gt;
                    _myLocation.distance(ew.fireLocation)) &amp;lt; 50&lt;br /&gt;
                    &amp;amp;&amp;amp; Math.abs(bulletVelocity(e.getBullet().getPower()) &lt;br /&gt;
                        - ew.bulletVelocity) &amp;lt; 0.001) {&lt;br /&gt;
                    hitWave = ew;&lt;br /&gt;
                    break;&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            if (hitWave != null) {&lt;br /&gt;
                logHit(hitWave, hitBulletLocation);&lt;br /&gt;
&lt;br /&gt;
                // We can remove this wave now, of course.&lt;br /&gt;
                _enemyWaves.remove(_enemyWaves.lastIndexOf(hitWave));&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When we're hit by a bullet, the first thing we need to do is figure out which wave we were hit by. For each wave, we check if the distance it has traveled is within 50 units of our current distance from its source, and we also check that its velocity is the same (to one decimal place) as the bullet we were hit by. I ''believe'' this should be 100% effective if no turns were skipped, and there was no wall damage on the same tick as the bullet was fired (which is fairly rare, anyway).&lt;br /&gt;
&lt;br /&gt;
Once we've found the wave that hit us, we can just call logHit(...) to update our surf stats, and then remove that wave.&lt;br /&gt;
&lt;br /&gt;
At this point, our data collection is complete. We can move on to a basic surfing algorithm.&lt;br /&gt;
&lt;br /&gt;
=== Surf the waves! ===&lt;br /&gt;
&lt;br /&gt;
This next method may be a little overwhelming =), but it's not as bad as it looks at first. This is a [[Precise Prediction|precise prediction]] method based on the one provided by [[rozu]], which he uses in [[Apollon]]. I also use it in [[Komarious]]; they are both [[MiniBots|MiniBot]] [[Wave Surfing|Wave Surfers]]. Given the rules of [[Robocode/Game Physics|Robocode Physics]], the wave we are surfing, and the orbiting direction we are predicting (1 = clockwise, -1 = counter-clockwise), it predicts where we would be when the wave intercepts us.&lt;br /&gt;
&lt;br /&gt;
Another method for doing this is provided by [[Albert]] in his [[Future Position]] classes.&lt;br /&gt;
&lt;br /&gt;
Doing this correctly is one of '''the most crucial aspects''' of a [[Wave Surfing|Wave Surfer]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
    public Point2D.Double predictPosition(EnemyWave surfWave, int direction) {&lt;br /&gt;
        Point2D.Double predictedPosition = (Point2D.Double)_myLocation.clone();&lt;br /&gt;
        double predictedVelocity = getVelocity();&lt;br /&gt;
        double predictedHeading = getHeadingRadians();&lt;br /&gt;
        double maxTurning, moveAngle, moveDir;&lt;br /&gt;
&lt;br /&gt;
        int counter = 0; // number of ticks in the future&lt;br /&gt;
        boolean intercepted = false;&lt;br /&gt;
&lt;br /&gt;
        do {    // the rest of these code comments are rozu's&lt;br /&gt;
            moveAngle =&lt;br /&gt;
                wallSmoothing(predictedPosition, absoluteBearing(surfWave.fireLocation,&lt;br /&gt;
                predictedPosition) + (direction * (Math.PI/2)), direction)&lt;br /&gt;
                - predictedHeading;&lt;br /&gt;
            moveDir = 1;&lt;br /&gt;
&lt;br /&gt;
            if(Math.cos(moveAngle) &amp;lt; 0) {&lt;br /&gt;
                moveAngle += Math.PI;&lt;br /&gt;
                moveDir = -1;&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            moveAngle = Utils.normalRelativeAngle(moveAngle);&lt;br /&gt;
&lt;br /&gt;
            // maxTurning is built in like this, you can't turn more then this in one tick&lt;br /&gt;
            maxTurning = Math.PI/720d*(40d - 3d*Math.abs(predictedVelocity));&lt;br /&gt;
            predictedHeading = Utils.normalRelativeAngle(predictedHeading&lt;br /&gt;
                + limit(-maxTurning, moveAngle, maxTurning));&lt;br /&gt;
&lt;br /&gt;
            // this one is nice ;). if predictedVelocity and moveDir have&lt;br /&gt;
            // different signs you want to breack down&lt;br /&gt;
            // otherwise you want to accelerate (look at the factor &amp;quot;2&amp;quot;)&lt;br /&gt;
            predictedVelocity +=&lt;br /&gt;
                (predictedVelocity * moveDir &amp;lt; 0 ? 2*moveDir : moveDir);&lt;br /&gt;
            predictedVelocity = limit(-8, predictedVelocity, 8);&lt;br /&gt;
&lt;br /&gt;
            // calculate the new predicted position&lt;br /&gt;
            predictedPosition = project(predictedPosition, predictedHeading,&lt;br /&gt;
                predictedVelocity);&lt;br /&gt;
&lt;br /&gt;
            counter++;&lt;br /&gt;
&lt;br /&gt;
            if (predictedPosition.distance(surfWave.fireLocation) &amp;lt;&lt;br /&gt;
                surfWave.distanceTraveled + (counter * surfWave.bulletVelocity)&lt;br /&gt;
                + surfWave.bulletVelocity) {&lt;br /&gt;
                intercepted = true;&lt;br /&gt;
            }&lt;br /&gt;
        } while(!intercepted &amp;amp;&amp;amp; counter &amp;lt; 500);&lt;br /&gt;
&lt;br /&gt;
        return predictedPosition;&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The key aspects of this are:&lt;br /&gt;
* Each tick, predict the absolute angle at which we're trying to move. This is simple orbiting - we are staying perpendicular to the absolute angle to the wave source. Once we have that angle, just pass it to the [[Wall Smoothing]] method to get the angle to move with. (The prediction method takes care of the [[Back-as-front]] stuff, too.)&lt;br /&gt;
* Accounting for maximum acceleration (1.0) and deceleration (2.0).&lt;br /&gt;
* Accounting for maximum turn rate.&lt;br /&gt;
* How a tank moves from tick to tick - see [[Robocode/Game Physics]].&lt;br /&gt;
&lt;br /&gt;
Fortunately, people like [[Albert]] and [[rozu]] have already dealt with these nitty gritty details, so you don't need to!&lt;br /&gt;
&lt;br /&gt;
The rest is like a walk in the park, so now you can relax =) Each tick, we just check which direction would be the safest to orbit in.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
    public double checkDanger(EnemyWave surfWave, int direction) {&lt;br /&gt;
        int index = getFactorIndex(surfWave,&lt;br /&gt;
            predictPosition(surfWave, direction));&lt;br /&gt;
&lt;br /&gt;
        return _surfStats[index];&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public void doSurfing() {&lt;br /&gt;
        EnemyWave surfWave = getClosestSurfableWave();&lt;br /&gt;
&lt;br /&gt;
        if (surfWave == null) { return; }&lt;br /&gt;
&lt;br /&gt;
        double dangerLeft = checkDanger(surfWave, -1);&lt;br /&gt;
        double dangerRight = checkDanger(surfWave, 1);&lt;br /&gt;
&lt;br /&gt;
        double goAngle = absoluteBearing(surfWave.fireLocation, _myLocation);&lt;br /&gt;
        if (dangerLeft &amp;lt; dangerRight) {&lt;br /&gt;
            goAngle = wallSmoothing(_myLocation, goAngle - (Math.PI/2), -1);&lt;br /&gt;
        } else {&lt;br /&gt;
            goAngle = wallSmoothing(_myLocation, goAngle + (Math.PI/2), 1);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        setBackAsFront(this, goAngle);&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is really simple:&lt;br /&gt;
* Predict our position when the wave intercepts us for each orbit direction.&lt;br /&gt;
* Get the score from our stat array for the GuessFactor of that position.&lt;br /&gt;
* Choose the orbit direction that is the safest.&lt;br /&gt;
* Wall smooth and use back-as-front to orbit in that direction.&lt;br /&gt;
&lt;br /&gt;
== Closing thoughts ==&lt;br /&gt;
&lt;br /&gt;
And with that, we are done creating a basic [[Wave Surfer]] with [[Wave Surfing/Precise Prediction|Precise Prediction]]. There are still a ton of improvements that can (and should) be made to this tank before it is a formidable opponent for anything more than [[Head-On Targeting]]. But some of the hardest parts are already taken care of in the above code, and I hope that these explanations will make it easier to correctly add those other features.&lt;br /&gt;
&lt;br /&gt;
This bot, as presented above, will score about 90% vs WaveSurfingChallengeBotA and 60% vs WaveSurfingChallengeBotB. Distancing, segmentation, and taking multiple waves into account would probably be the first things to implement to improve upon those scores.&lt;br /&gt;
&lt;br /&gt;
Feel free to hit me ([[Voidious]]) up with comments, questions, or possible improvements to this tutorial. See the [[BasicSurfer/Code|complete source code]] to save yourself some copy/paste trouble, if you'd like.&lt;br /&gt;
&lt;br /&gt;
''(PS - However you arrange the above code, note that you will need a closing brace at the end that isn't anywhere above.)''&lt;br /&gt;
&lt;br /&gt;
== Possible improvements to try ==&lt;br /&gt;
&lt;br /&gt;
* '''[[Distancing|Keep your distance]]''' The above code will never adjust its distance to the enemy. This makes prediction much easier, but it will make a world of difference to try to stay at a safer distance. In [[Komarious]] (see [[Komarious/Code]]), I made it as simple as multiplying by a little less than (PI/2) when calculating the orbiting angle for each direction. In [[Dookious]], it's a bit more complex, but still nothing like brain surgery. Remember to update your prediction if you make a complicated distancing algorithm.&lt;br /&gt;
* '''More accurate enemy energy tracking.''' Keeping track of energy gains from hitting us with bullets, energy losses from our bullets hitting them, and energy losses from hitting walls (this last one can only be approximated) can all increase the accuracy of your [[EnemyWave]] detection.&lt;br /&gt;
* '''Zero shouldn't be 1 or -1.''' When your velocity is 0, or very close to it, we could use our last calculated direction instead of our currently calculated direction.&lt;br /&gt;
* '''[[Segmentation]]''' is crucial to dodging anything more than [[Head-On Targeting]].&lt;br /&gt;
* '''Use [[Rolling Average|Rolling Averages]] in your surf statistics.''' If your stats are well segmented, you can use a very low rolling depth without losing much performance (if any) to simpler targeters, but your performance against learning guns will improve dramatically.&lt;br /&gt;
* '''Do the same thing in onBulletHitBullet''' that you do in onHitByBullet - that data is just as valid for figuring out where the enemy is aiming.&lt;br /&gt;
* '''In choosing the wave to surf, adjust it to surf the one that will hit you first,''' instead of the closest one.&lt;br /&gt;
* '''Add evaluation for a stop position''' - you keep moving in the same orbit direction, but hit the brakes (setMaxVelocity(0)) when you think that stop is much safer than moving.&lt;br /&gt;
* Note that the codesize for this could be dramatically decreased. This is actually a simpler form of the surfing used in [[Komarious]], although it's also more correct in some of the more minor details. The codesize for the above is 1376 with Jikes; [[Komarious]]'s surfing is just under 1100, last I checked.&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
* [[BasicSurfer]]&lt;br /&gt;
* [[Wave Surfing]]&lt;br /&gt;
* [[GuessFactor Targeting Tutorial]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Tutorials]]&lt;/div&gt;</summary>
		<author><name>D414</name></author>
		
	</entry>
	<entry>
		<id>http://robowiki.net/w/index.php?title=Quantum&amp;diff=58040</id>
		<title>Quantum</title>
		<link rel="alternate" type="text/html" href="http://robowiki.net/w/index.php?title=Quantum&amp;diff=58040"/>
		<updated>2025-08-17T17:09:07Z</updated>

		<summary type="html">&lt;p&gt;D414: Update &amp;quot;What's next&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Navbox small&lt;br /&gt;
| title        = Sub-pages&lt;br /&gt;
| page1        = Version History&lt;br /&gt;
| page2        = Source (Java)&lt;br /&gt;
| page3        = Source (Assembly)&lt;br /&gt;
}}&lt;br /&gt;
{{Infobox Robot&lt;br /&gt;
| author          = [[User:D414|David414]]&lt;br /&gt;
| name            = Quantum&lt;br /&gt;
| released        = April 2024&lt;br /&gt;
| extends         = [[AdvancedRobot]]&lt;br /&gt;
| targeting       = [[Linear Targeting]]&lt;br /&gt;
| movement        = [[Anti-Gravity Movement]]&lt;br /&gt;
| license         = [[RWPCL]]&lt;br /&gt;
| isOpenSource    = yes&lt;br /&gt;
| isOneOnOne      = no&lt;br /&gt;
| isMelee         = yes&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Background Information ==&lt;br /&gt;
&lt;br /&gt;
; What's special about it?&lt;br /&gt;
* Antigravity movement based on the enemy's predicted future position (ie where we would aim) rather than their current location&lt;br /&gt;
* Written in assembly since v1.0.0&lt;br /&gt;
&lt;br /&gt;
; How competitive is it?&lt;br /&gt;
Very. It took the nano melee crown from [[DustBunny]] and was the first nanobot to outperform [[HawkOnFire]].&lt;br /&gt;
&lt;br /&gt;
== Strategy ==&lt;br /&gt;
&lt;br /&gt;
; How does it [[Movement|move]]?&lt;br /&gt;
Quantum uses [[Anti-Gravity Movement]] based on [[DustBunny]] but instead of calculating forces based on the angle to the enemy's current position Quantum uses the angle it would fire at.&lt;br /&gt;
&lt;br /&gt;
; How does it fire?&lt;br /&gt;
Quantum uses [[DustBunny]]'s aim and bullet power selection with more reliable target tracking (from [[Infinity]]). Unlike most (all?) nanos it checks that it has a good aim before firing.&lt;br /&gt;
&lt;br /&gt;
; How does it dodge bullets?&lt;br /&gt;
It doesn't.&lt;br /&gt;
&lt;br /&gt;
; How does the melee strategy differ from One-on-one strategy?&lt;br /&gt;
Quantum assumes the battlefield is 1000x1000 so it can only fight in melee.&lt;br /&gt;
&lt;br /&gt;
; How does it select a target to attack/avoid in melee?&lt;br /&gt;
It attacks the closest target while trying to avoid everybody.&lt;br /&gt;
&lt;br /&gt;
; What does it save between rounds and matches?&lt;br /&gt;
Nothing.&lt;br /&gt;
&lt;br /&gt;
== Additional Information ==&lt;br /&gt;
; Where did you get the name?&lt;br /&gt;
I wanted a gravity themed name with small vibes and [[Graviton]] was already taken.&lt;br /&gt;
&lt;br /&gt;
; Can I use your code?&lt;br /&gt;
Yes, under the terms of the [[RWPCL]]. The code can be found in the .jar and at [[Quantum/Source_(Java)]] / [[Quantum/Source_(Assembly)]].&lt;br /&gt;
&lt;br /&gt;
; What's next for your robot?&lt;br /&gt;
Nothing too fundamental. I could squeeze some more bytes out of it but I'm not sure what I'd do with them and my testing framework isn't robust enough to improve the tuning of the current design further. I doubt there will be further updates.&lt;br /&gt;
&lt;br /&gt;
; Does it have any White Whales?&lt;br /&gt;
&amp;lt;s&amp;gt;[[DustBunny]]&amp;lt;/s&amp;gt;&lt;br /&gt;
&amp;lt;s&amp;gt;[[HawkOnFire]]&amp;lt;/s&amp;gt;&lt;br /&gt;
&amp;lt;s&amp;gt;[[Shiz]]&amp;lt;/s&amp;gt;&lt;br /&gt;
Besting [[Sprout]] would give me 10th in Mini (as of August 2025) to go with 1st in Nano and 5th in Micro, which would be very nice.&lt;br /&gt;
&lt;br /&gt;
; What other robot(s) is it based on?&lt;br /&gt;
* [[DustBunny]] (Nano-sized antigravity movement, aiming and bullet power)&lt;br /&gt;
* [[Infinity]] (Target tracking)&lt;br /&gt;
&lt;br /&gt;
[[Category:NanoBots]]&lt;/div&gt;</summary>
		<author><name>D414</name></author>
		
	</entry>
	<entry>
		<id>http://robowiki.net/w/index.php?title=User:D414/Diary_of_a_Robocoder&amp;diff=58039</id>
		<title>User:D414/Diary of a Robocoder</title>
		<link rel="alternate" type="text/html" href="http://robowiki.net/w/index.php?title=User:D414/Diary_of_a_Robocoder&amp;diff=58039"/>
		<updated>2025-08-16T13:15:02Z</updated>

		<summary type="html">&lt;p&gt;D414: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;; 16th August 2025&lt;br /&gt;
I've been doing some exploratory work for an entirely different approach for [[Quantum]] worthy of being called version 2. Something I'm trying to add is storing data about my enemies.&lt;br /&gt;
&lt;br /&gt;
The typical way of tracking data about enemies would be to use a Map, an example of which can be seen in [[HawkOnFire]] but this uses up far too much space to put into a nanobot. [[User:Kev|Kev]] uses an imaginative approach in [[Mirage]] that stores the data in arrays instead and uses a static function to give each enemy a unique integer id to index into those arrays. I shaved 11 bytes off of [[Mirage]]'s approach in [[FireHammer]] (my attempt to fit [[Mirage]]'s gun into a micro) and then [[User:Kev|Kev]] found a way to shave a whopping 26 bytes(!) off of that in [[Figment]].&lt;br /&gt;
&lt;br /&gt;
Unfortunately the [[Figment]] method has some drawbacks that could make it unsuitable for how I'm hoping to use enemy data in [[Quantum]] v2 but I have been able to shave another 5 bytes off of [[FireHammer]]'s code.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
// Mirage&lt;br /&gt;
// Size: 46 bytes&lt;br /&gt;
// Stable IDs: Yes&lt;br /&gt;
// Contiguous IDs: Yes, from 1-10 in a 10 bot melee match&lt;br /&gt;
// Clashing IDs: Theoretically possible, but unlikely (uses 18bits of the 32bit .hashcode())&lt;br /&gt;
// Memory usage: Low. Constant 1mb overhead for IDs. 1-based indexing wastes one enemy's worth of space in the data arrays.&lt;br /&gt;
static final int OPPONENT_HASHES = 262144; // 18 bits&lt;br /&gt;
static int[] opponentIDs = new int[OPPONENT_HASHES];&lt;br /&gt;
static int opponentsSeen;&lt;br /&gt;
&lt;br /&gt;
static int getOpponentID(String name) {&lt;br /&gt;
    int code = name.hashCode() &amp;amp; (OPPONENT_HASHES - 1);&lt;br /&gt;
    int id = opponentIDs[code];&lt;br /&gt;
    return opponentIDs[code] = (id == 0 ? ++opponentsSeen : id);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// FireHammer&lt;br /&gt;
// Size: 35 bytes&lt;br /&gt;
// Stable IDs: Yes&lt;br /&gt;
// Contiguous IDs: Yes, from 0-9 in a 10 bot melee match&lt;br /&gt;
// Clashing IDs: No&lt;br /&gt;
// Memory usage: Extremely low. Almost zero overhead and no wasted space in the data arrays.&lt;br /&gt;
static ArrayList&amp;lt;String&amp;gt; opponentIDs = new ArrayList&amp;lt;&amp;gt;();&lt;br /&gt;
&lt;br /&gt;
static int getOpponentID(String name) {&lt;br /&gt;
    ArrayList&amp;lt;String&amp;gt; list;&lt;br /&gt;
    if (!(list = opponentIDs).contains(name)) {&lt;br /&gt;
        list.add(name);&lt;br /&gt;
    }&lt;br /&gt;
    return list.indexOf(name);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Figment&lt;br /&gt;
// Size: 9 bytes&lt;br /&gt;
// Stable IDs: Yes&lt;br /&gt;
// Contiguous IDs: No, could be anything from 0 - 255&lt;br /&gt;
// Clashing IDs: Theoretically possible, more likely than Mirage&lt;br /&gt;
// Memory usage: Potentially high, increases data size by 246x&lt;br /&gt;
static final int OPPONENT_HASHES = 256; // 8 bits&lt;br /&gt;
&lt;br /&gt;
static int getOpponentID(String name) {&lt;br /&gt;
    return name.hashCode() &amp;amp; (OPPONENT_HASHES - 1);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Quantum v2&lt;br /&gt;
// Size: 30 bytes&lt;br /&gt;
// Stable IDs: Can be unstable at the start of the first round until each enemy has been scanned for the first time.&lt;br /&gt;
// Contiguous IDs: Yes, from 0-9 in a 10 bot melee match&lt;br /&gt;
// Clashing IDs: No&lt;br /&gt;
// Memory usage: Extremely low. Almost zero overhead and no wasted space in the data arrays.&lt;br /&gt;
static TreeSet&amp;lt;String&amp;gt; index = new TreeSet&amp;lt;String&amp;gt;();&lt;br /&gt;
&lt;br /&gt;
static int getOpponentID(String name) {&lt;br /&gt;
    index.add(name);&lt;br /&gt;
    return Arrays.binarySearch(index.toArray(), name);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; 8th August 2025&lt;br /&gt;
It's been over a year since my last update! I got disheartened by the inadequacies of my testing framework and the fact that the melee [[RoboRumble]]s for [[Code Size]] restricted bots include results for battles involving bots from outside of the weight class - I think we'd see some interesting changes to the leaderboards and which strategies are and aren't successful.&lt;br /&gt;
&lt;br /&gt;
Since the itch to robocode returned I think I've found ways to squeeze a few more bytes out of [[Quantum]], perhaps as many as 4-8. Sadly without a robust testing strategy it seems infeasible to find anything to actually do with those bytes besides adding colours back.&lt;br /&gt;
&lt;br /&gt;
I've also spent some time watching [[IWillFireNoBullet]] move and have to say it's a thing of beauty. I highly recommend it to anybody with even a passing interest in [[Melee]] battles.&lt;br /&gt;
&lt;br /&gt;
; 7th June 2024&lt;br /&gt;
My last couple of updates to [[Quantum]] have hammered home the point that my test benches don't reflect rumble performance nearly as well as I'd like - v1.2.1 and v1.2.2 performed similarly in my testing but quite differently to each other in the rumble. They both outperformed v1.0.0 by around 1% APS in testing but failed to live up to that when released. I don't think I can get away with putting off building a good testing framework any longer!&lt;br /&gt;
&lt;br /&gt;
It's not a complete loss though. I've learned a lot, found a few more bytes to play with and I'm still confident that the approach to bullet power selection will yield better performance (eventually).&lt;br /&gt;
&lt;br /&gt;
; 14th May 2024&lt;br /&gt;
Well, that was unexpected! The minor update to [[Quantum]] that I released reduced the codesize enough to allow me to fix the radar bug I added in v0.2.2 to make room for colours (Each time an opponent died there was a 50% chance the radar would switch directions). That bugfix was worth around 0.7 APS in the micro melee rumble, which was enough to push [[Quantum]] above [[HawkOnFire]]! I'm ''very'' excited to tune the gun...&lt;br /&gt;
&lt;br /&gt;
; 13th May 2024&lt;br /&gt;
ProGuard didn’t manage to shrink [[Quantum]] at all and installing Jikes is a bit of a faff these days (on an Arm MacBook anyway) so I decided to try out [https://github.com/Storyyeller/Krakatau Krakatau] to work with the assembly code directly. It looks like I can make room for the gun to use quite a few attributes - distance, bullet power, number of opponents, lateral velocity and lateral acceleration should all fit. I definitely need to improve on the spaghetti shaped shell scripts I’m using to build and test my bots if I’m going to successfully tune the gun, but I reckon it’ll be worth it. Whether or not it’s enough to outperform [[HawkOnFire]] with a nano remains to be seen, but I’m hopeful.&lt;br /&gt;
&lt;br /&gt;
; 10th May 2024&lt;br /&gt;
[[User:Sheldor2|Sheldor]]'s adaptation of [[Quantum]] (NaturalScience) motivated me to put development of a micro bot on hold. I had space for table based bullet power selection, albeit much simpler than [[User:Sheldor2|Sheldor]]'s, but only found marginal gains and tuning it by hand was both tedious and slow. I did manage to squeeze another 3 bytes out of my code though, bringing [[Quantum]] down to 239 bytes (without colours). There is room now for several different table based approaches but I'm going to need an automated way of tuning them. This leaves me with a nice todo list that will also benefit the development of other bots:&lt;br /&gt;
&lt;br /&gt;
* Try some other compilers, Jikes in particular&lt;br /&gt;
* Add ProGuard to my build scripts&lt;br /&gt;
* Build a test system that allows me to tune tables genetically&lt;br /&gt;
&lt;br /&gt;
; 4th May 2024&lt;br /&gt;
I managed to find another half-dozen or so bytes in [[FireHammer]] which was enough to improve the movement a bit. I've entered it into the rumble and will run some battles overnight so we'll see where it ranks when I wake up in the morning.&lt;br /&gt;
&lt;br /&gt;
Update: Can't complain about top 5 in the micros, although I was hoping to edge out Sprout to make top 3. This has confirmed my belief that a good circular gun is the way to go in a micro; 116 bytes for movement really isn't much to work with!&lt;br /&gt;
&lt;br /&gt;
; 2nd May 2024&lt;br /&gt;
I've finally given [[FireHammer]] a better (but not good) movement without going over 749 bytes. Once I've tidied the code up it will be ready to enter the rumble! I'm torn on whether to release it now versus waiting until I have a minibot ready to challenge [[Mirage]], I don't like to think about how much stronger [[User:Kev|Kev]] could make [[Mirage]] with all the extra space to play with!&lt;br /&gt;
&lt;br /&gt;
; 26th April 2024&lt;br /&gt;
My experimentation with micro sized melee guns is paying off; I've finally managed to squeeze [[Mirage]]'s amazing gun into a micro! The only (intended) functional changes are switching to [[Quantum]]'s bullet power selection and going back to a fixed size for bot width as per [[Mirage]] v0.1.&lt;br /&gt;
&lt;br /&gt;
So far I'm down to 733 bytes from a starting point of 919 (both without colours).&lt;br /&gt;
&lt;br /&gt;
Results are promising despite only spending 21 bytes on movement to move in an [[Infinity]] style box pattern.&lt;br /&gt;
&lt;br /&gt;
; 18th April 2024&lt;br /&gt;
I've started playing around with ideas for an entrant to the micro melee rumble. For now I'm looking at guns and mostly finding that [[DustBunny]]'s gun seems to give excellent performance per byte and is difficult to improve upon. The next best thing seems to be a good implementation of [[Circular Targeting]] but ultimately I think that movement is where the money is.&lt;br /&gt;
&lt;br /&gt;
I should probably turn my attention to finding the most efficient way I can to track enemy state, rather than relying on rolling averages, since the obvious HashMap approach introduces a lot of overhead. I'd also like to see if there's much to gain by switching from a basic nano style radar to something a little bit more sophisticated.&lt;br /&gt;
&lt;br /&gt;
In short, challenging [[Wallaby]] for the micro crown isn't going to be easy!&lt;br /&gt;
&lt;br /&gt;
; 14th April 2024&lt;br /&gt;
It turns out that Quantum is rather competetive! It knocked DustBunny off of the nano melee throne for a few days before settling in to second place. It still achieves a 100% PWIN and has by far the best survival score of any nano melee bot (and it has colours!). If I remove the colours I have 7 bytes to play with but I've not been able to find any changes that make a significant improvement. It would be interesting to see how the table looks once Quantum has run a similar number of battle to the other nanos (currently it's at less than 10%) however my rumble client has stopped working, which is a pain. Once we have internet again I'll see if I can get one of my low power machines setup as a dedicated client.&lt;br /&gt;
&lt;br /&gt;
; 6th April 2024&lt;br /&gt;
I haven't had much time for robocode over the last month but I have been able to experiment a little with a nano melee bot, heavily inspired by [[DustBunny]] and [[Infinity]]. I'm quite pleased with the idea to calculate [[Anti-Gravity Movement|anti-gravity]] forces based on the angle my bot would fire at instead of the angle to the enemy's current position. This bot (Quantum) is my first entry into the [[Roborumble]]!&lt;br /&gt;
&lt;br /&gt;
; 5th March 2024&lt;br /&gt;
My experiments with a nano [[Shadow/Melee Gun]] haven't gotten me the results I'd expected and I got a bit burned out from debugging it so I tried throwing a PM gun on which was okay but nothing to write home about. I think I'm going to experiment with different movements for a while for a change of pace. I've found I enjoy codesize restricted bots much more than megabots - I was getting a bit bogged down in top down development when I was allowed as much code as I liked.&lt;br /&gt;
&lt;br /&gt;
; 28th February 2024&lt;br /&gt;
[[File:Quantum Painting Firing Angles.png|thumb|Targeting everybody at once, Nanobot version!]]&lt;br /&gt;
I've managed to get a (very) basic version of [[Shadow/Melee Gun]] squeezed into my Nanobot. At the moment it only aims (at everybody) with [[Head-On Targeting]] weighted by distance. Once I'm done with bug fixing I think I'll be able to find room to add another gun or two and/or better energy management into the mix.&lt;br /&gt;
&lt;br /&gt;
; 27th February 2024&lt;br /&gt;
For the past couple of evenings I've been playing with nanobots for the first time. I'm interested in developing guns so decided to start by borrowing a movement from somewhere. [[Infinity]] was most appealing because its movement doesn't depend on the radar and only requires 68 bytes. I've managed to shrink the movement code by a further 15 bytes, giving me almost 200 bytes to use for a gun. ::Edit:: I've gotten it down to 35 bytes!&lt;br /&gt;
&lt;br /&gt;
; 23rd February 2024&lt;br /&gt;
I'm wondering if there should be an equivalent page to [[Wave Suffering]] for [[Displacement Vector|Displacement Vectors]]. My early efforts at collecting displacement vectors with a codesize restricted gun have resulted in some interesting and wild arrows being drawn all over the place. I'm making progress but I'm sure that subtle bugs will continue to be found for quite some time. Still not sure I'll make it work with enough space left to pair it with decent movement but the experience will be helpful either way.&lt;br /&gt;
&lt;br /&gt;
; 19th February 2024&lt;br /&gt;
[[File:Risk Function Painting.png|thumb|A picture is worth a thousand words]]&lt;br /&gt;
Over the last couple of days I've fallen face first into the &amp;lt;big&amp;gt;''pit of premature optimisation''&amp;lt;/big&amp;gt;. I noticed some interesting behaviour emerging as a result of my risk function and got carried away tweaking parameters and adding cobbled together versions of bits of code I'd not implemented in the hope of perfecting it. This predictably led to another pile of spaghetti code that needs (another) rewrite. /sigh.&lt;br /&gt;
&lt;br /&gt;
; 15th February 2024&lt;br /&gt;
My experimental bot had become a pile of spaghetti so it got a rewrite today. I'm still pleased with core design principle, especially given how quickly I was able to experiment with an idea I've not seen mentioned on the wiki before (no spoilers :p). My initial assessment is that it shows promise but definitely needs refinement as my bot now has the tendency under certain conditions to turn into a melee rambot...&lt;br /&gt;
&lt;br /&gt;
; 14th February 2024&lt;br /&gt;
My Robocoding time has been quite sporadic lately so it's been difficult to make progress on the ideas I have for a build system, testing framework and modular robot class. On the one hand that's disappointing because it's greatly slowing my efforts to develop an advanced melee contender however a few throwaway experiments have led to some interesting ideas for movement in mini (or possibly even micro) bots.&lt;br /&gt;
&lt;br /&gt;
The movement appears to be doing a good job at evaluating risk despite using a spinning radar and tracking very little information on enemies. The code is a bit buggy and needs some improvement but I think a half-decent gun could be implemented that mostly reuses the movement code, which is very interesting.&lt;br /&gt;
&lt;br /&gt;
At the very least the graphics displaying the risk evaluation are very satisfying to watch, even if these experiments don't find their way into a released bot.&lt;/div&gt;</summary>
		<author><name>D414</name></author>
		
	</entry>
	<entry>
		<id>http://robowiki.net/w/index.php?title=User:D414/Diary_of_a_Robocoder&amp;diff=58037</id>
		<title>User:D414/Diary of a Robocoder</title>
		<link rel="alternate" type="text/html" href="http://robowiki.net/w/index.php?title=User:D414/Diary_of_a_Robocoder&amp;diff=58037"/>
		<updated>2025-08-16T12:33:05Z</updated>

		<summary type="html">&lt;p&gt;D414: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;; 16th August 2025&lt;br /&gt;
I've been doing some exploratory work for an entirely different approach for [[Quantum]] worthy of being called version 2. Something I'm trying to add is storing data about my enemies.&lt;br /&gt;
&lt;br /&gt;
The typical way of tracking data about enemies would be to use a Map, an example of which can be seen in [[HawkOnFire]] but this uses up far too much space to put into a nanobot. [[User:Kev]] uses an imaginative approach in [[Mirage]] that stores the data in arrays instead and uses a static function to give each enemy a unique integer id to index into those arrays. I shaved 11 bytes off of [[Mirage]]'s approach in [[FireHammer]] (my attempt to fit [[Mirage]]'s gun into a micro) and then [[User:Kev]] found a way to shave a whopping 26 bytes(!) off of that in [[Figment]].&lt;br /&gt;
&lt;br /&gt;
Unfortunately the [[Figment]] method has some drawbacks that could make it unsuitable for how I'm hoping to use enemy data in [[Quantum]] v2 but I have been able to shave another 5 bytes off of [[FireHammer]]'s code.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
// Mirage&lt;br /&gt;
// Size: 46 bytes&lt;br /&gt;
// Stable IDs: Yes&lt;br /&gt;
// Contiguous IDs: Yes, from 1-10 in a 10 bot melee match&lt;br /&gt;
// Clashing IDs: Theoretically possible, but unlikely (uses 18bits of the 32bit .hashcode())&lt;br /&gt;
// Memory usage: Low. Constant 1mb overhead for IDs. 1-based indexing wastes one enemy's worth of space in the data arrays.&lt;br /&gt;
static final int OPPONENT_HASHES = 262144; // 18 bits&lt;br /&gt;
static int[] opponentIDs = new int[OPPONENT_HASHES];&lt;br /&gt;
static int opponentsSeen;&lt;br /&gt;
&lt;br /&gt;
static int getOpponentID(String name) {&lt;br /&gt;
    int code = name.hashCode() &amp;amp; (OPPONENT_HASHES - 1);&lt;br /&gt;
    int id = opponentIDs[code];&lt;br /&gt;
    return opponentIDs[code] = (id == 0 ? ++opponentsSeen : id);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// FireHammer&lt;br /&gt;
// Size: 35 bytes&lt;br /&gt;
// Stable IDs: Yes&lt;br /&gt;
// Contiguous IDs: Yes, from 0-9 in a 10 bot melee match&lt;br /&gt;
// Clashing IDs: No&lt;br /&gt;
// Memory usage: Extremely low. Almost zero overhead and no wasted space in the data arrays.&lt;br /&gt;
static ArrayList&amp;lt;String&amp;gt; opponentIDs = new ArrayList&amp;lt;&amp;gt;();&lt;br /&gt;
&lt;br /&gt;
static int getOpponentID(String name) {&lt;br /&gt;
    ArrayList&amp;lt;String&amp;gt; list;&lt;br /&gt;
    if (!(list = opponentIDs).contains(name)) {&lt;br /&gt;
        list.add(name);&lt;br /&gt;
    }&lt;br /&gt;
    return list.indexOf(name);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Figment&lt;br /&gt;
// Size: 9 bytes&lt;br /&gt;
// Stable IDs: Yes&lt;br /&gt;
// Contiguous IDs: No, could be anything from 0 - 255&lt;br /&gt;
// Clashing IDs: Theoretically possible, more likely than Mirage&lt;br /&gt;
// Memory usage: Potentially high, increases data size by 246x&lt;br /&gt;
static final int OPPONENT_HASHES = 256; // 8 bits&lt;br /&gt;
&lt;br /&gt;
static int getOpponentID(String name) {&lt;br /&gt;
    return name.hashCode() &amp;amp; (OPPONENT_HASHES - 1);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Quantum v2&lt;br /&gt;
// Size: 30 bytes&lt;br /&gt;
// Stable IDs: Can be unstable at the start of the first round until each enemy has been scanned for the first time.&lt;br /&gt;
// Contiguous IDs: Yes, from 0-9 in a 10 bot melee match&lt;br /&gt;
// Clashing IDs: No&lt;br /&gt;
// Memory usage: Extremely low. Almost zero overhead and no wasted space in the data arrays.&lt;br /&gt;
static TreeSet&amp;lt;String&amp;gt; index = new TreeSet&amp;lt;String&amp;gt;();&lt;br /&gt;
&lt;br /&gt;
static int getOpponentID(String name) {&lt;br /&gt;
    index.add(name);&lt;br /&gt;
    return Arrays.binarySearch(index.toArray(), name);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; 8th August 2025&lt;br /&gt;
It's been over a year since my last update! I got disheartened by the inadequacies of my testing framework and the fact that the melee [[RoboRumble]]s for [[Code Size]] restricted bots include results for battles involving bots from outside of the weight class - I think we'd see some interesting changes to the leaderboards and which strategies are and aren't successful.&lt;br /&gt;
&lt;br /&gt;
Since the itch to robocode returned I think I've found ways to squeeze a few more bytes out of [[Quantum]], perhaps as many as 4-8. Sadly without a robust testing strategy it seems infeasible to find anything to actually do with those bytes besides adding colours back.&lt;br /&gt;
&lt;br /&gt;
I've also spent some time watching [[IWillFireNoBullet]] move and have to say it's a thing of beauty. I highly recommend it to anybody with even a passing interest in [[Melee]] battles.&lt;br /&gt;
&lt;br /&gt;
; 7th June 2024&lt;br /&gt;
My last couple of updates to [[Quantum]] have hammered home the point that my test benches don't reflect rumble performance nearly as well as I'd like - v1.2.1 and v1.2.2 performed similarly in my testing but quite differently to each other in the rumble. They both outperformed v1.0.0 by around 1% APS in testing but failed to live up to that when released. I don't think I can get away with putting off building a good testing framework any longer!&lt;br /&gt;
&lt;br /&gt;
It's not a complete loss though. I've learned a lot, found a few more bytes to play with and I'm still confident that the approach to bullet power selection will yield better performance (eventually).&lt;br /&gt;
&lt;br /&gt;
; 14th May 2024&lt;br /&gt;
Well, that was unexpected! The minor update to [[Quantum]] that I released reduced the codesize enough to allow me to fix the radar bug I added in v0.2.2 to make room for colours (Each time an opponent died there was a 50% chance the radar would switch directions). That bugfix was worth around 0.7 APS in the micro melee rumble, which was enough to push [[Quantum]] above [[HawkOnFire]]! I'm ''very'' excited to tune the gun...&lt;br /&gt;
&lt;br /&gt;
; 13th May 2024&lt;br /&gt;
ProGuard didn’t manage to shrink [[Quantum]] at all and installing Jikes is a bit of a faff these days (on an Arm MacBook anyway) so I decided to try out [https://github.com/Storyyeller/Krakatau Krakatau] to work with the assembly code directly. It looks like I can make room for the gun to use quite a few attributes - distance, bullet power, number of opponents, lateral velocity and lateral acceleration should all fit. I definitely need to improve on the spaghetti shaped shell scripts I’m using to build and test my bots if I’m going to successfully tune the gun, but I reckon it’ll be worth it. Whether or not it’s enough to outperform [[HawkOnFire]] with a nano remains to be seen, but I’m hopeful.&lt;br /&gt;
&lt;br /&gt;
; 10th May 2024&lt;br /&gt;
[[User:Sheldor2|Sheldor]]'s adaptation of [[Quantum]] (NaturalScience) motivated me to put development of a micro bot on hold. I had space for table based bullet power selection, albeit much simpler than [[User:Sheldor2|Sheldor]]'s, but only found marginal gains and tuning it by hand was both tedious and slow. I did manage to squeeze another 3 bytes out of my code though, bringing [[Quantum]] down to 239 bytes (without colours). There is room now for several different table based approaches but I'm going to need an automated way of tuning them. This leaves me with a nice todo list that will also benefit the development of other bots:&lt;br /&gt;
&lt;br /&gt;
* Try some other compilers, Jikes in particular&lt;br /&gt;
* Add ProGuard to my build scripts&lt;br /&gt;
* Build a test system that allows me to tune tables genetically&lt;br /&gt;
&lt;br /&gt;
; 4th May 2024&lt;br /&gt;
I managed to find another half-dozen or so bytes in [[FireHammer]] which was enough to improve the movement a bit. I've entered it into the rumble and will run some battles overnight so we'll see where it ranks when I wake up in the morning.&lt;br /&gt;
&lt;br /&gt;
Update: Can't complain about top 5 in the micros, although I was hoping to edge out Sprout to make top 3. This has confirmed my belief that a good circular gun is the way to go in a micro; 116 bytes for movement really isn't much to work with!&lt;br /&gt;
&lt;br /&gt;
; 2nd May 2024&lt;br /&gt;
I've finally given [[FireHammer]] a better (but not good) movement without going over 749 bytes. Once I've tidied the code up it will be ready to enter the rumble! I'm torn on whether to release it now versus waiting until I have a minibot ready to challenge [[Mirage]], I don't like to think about how much stronger [[User:Kev|Kev]] could make [[Mirage]] with all the extra space to play with!&lt;br /&gt;
&lt;br /&gt;
; 26th April 2024&lt;br /&gt;
My experimentation with micro sized melee guns is paying off; I've finally managed to squeeze [[Mirage]]'s amazing gun into a micro! The only (intended) functional changes are switching to [[Quantum]]'s bullet power selection and going back to a fixed size for bot width as per [[Mirage]] v0.1.&lt;br /&gt;
&lt;br /&gt;
So far I'm down to 733 bytes from a starting point of 919 (both without colours).&lt;br /&gt;
&lt;br /&gt;
Results are promising despite only spending 21 bytes on movement to move in an [[Infinity]] style box pattern.&lt;br /&gt;
&lt;br /&gt;
; 18th April 2024&lt;br /&gt;
I've started playing around with ideas for an entrant to the micro melee rumble. For now I'm looking at guns and mostly finding that [[DustBunny]]'s gun seems to give excellent performance per byte and is difficult to improve upon. The next best thing seems to be a good implementation of [[Circular Targeting]] but ultimately I think that movement is where the money is.&lt;br /&gt;
&lt;br /&gt;
I should probably turn my attention to finding the most efficient way I can to track enemy state, rather than relying on rolling averages, since the obvious HashMap approach introduces a lot of overhead. I'd also like to see if there's much to gain by switching from a basic nano style radar to something a little bit more sophisticated.&lt;br /&gt;
&lt;br /&gt;
In short, challenging [[Wallaby]] for the micro crown isn't going to be easy!&lt;br /&gt;
&lt;br /&gt;
; 14th April 2024&lt;br /&gt;
It turns out that Quantum is rather competetive! It knocked DustBunny off of the nano melee throne for a few days before settling in to second place. It still achieves a 100% PWIN and has by far the best survival score of any nano melee bot (and it has colours!). If I remove the colours I have 7 bytes to play with but I've not been able to find any changes that make a significant improvement. It would be interesting to see how the table looks once Quantum has run a similar number of battle to the other nanos (currently it's at less than 10%) however my rumble client has stopped working, which is a pain. Once we have internet again I'll see if I can get one of my low power machines setup as a dedicated client.&lt;br /&gt;
&lt;br /&gt;
; 6th April 2024&lt;br /&gt;
I haven't had much time for robocode over the last month but I have been able to experiment a little with a nano melee bot, heavily inspired by [[DustBunny]] and [[Infinity]]. I'm quite pleased with the idea to calculate [[Anti-Gravity Movement|anti-gravity]] forces based on the angle my bot would fire at instead of the angle to the enemy's current position. This bot (Quantum) is my first entry into the [[Roborumble]]!&lt;br /&gt;
&lt;br /&gt;
; 5th March 2024&lt;br /&gt;
My experiments with a nano [[Shadow/Melee Gun]] haven't gotten me the results I'd expected and I got a bit burned out from debugging it so I tried throwing a PM gun on which was okay but nothing to write home about. I think I'm going to experiment with different movements for a while for a change of pace. I've found I enjoy codesize restricted bots much more than megabots - I was getting a bit bogged down in top down development when I was allowed as much code as I liked.&lt;br /&gt;
&lt;br /&gt;
; 28th February 2024&lt;br /&gt;
[[File:Quantum Painting Firing Angles.png|thumb|Targeting everybody at once, Nanobot version!]]&lt;br /&gt;
I've managed to get a (very) basic version of [[Shadow/Melee Gun]] squeezed into my Nanobot. At the moment it only aims (at everybody) with [[Head-On Targeting]] weighted by distance. Once I'm done with bug fixing I think I'll be able to find room to add another gun or two and/or better energy management into the mix.&lt;br /&gt;
&lt;br /&gt;
; 27th February 2024&lt;br /&gt;
For the past couple of evenings I've been playing with nanobots for the first time. I'm interested in developing guns so decided to start by borrowing a movement from somewhere. [[Infinity]] was most appealing because its movement doesn't depend on the radar and only requires 68 bytes. I've managed to shrink the movement code by a further 15 bytes, giving me almost 200 bytes to use for a gun. ::Edit:: I've gotten it down to 35 bytes!&lt;br /&gt;
&lt;br /&gt;
; 23rd February 2024&lt;br /&gt;
I'm wondering if there should be an equivalent page to [[Wave Suffering]] for [[Displacement Vector|Displacement Vectors]]. My early efforts at collecting displacement vectors with a codesize restricted gun have resulted in some interesting and wild arrows being drawn all over the place. I'm making progress but I'm sure that subtle bugs will continue to be found for quite some time. Still not sure I'll make it work with enough space left to pair it with decent movement but the experience will be helpful either way.&lt;br /&gt;
&lt;br /&gt;
; 19th February 2024&lt;br /&gt;
[[File:Risk Function Painting.png|thumb|A picture is worth a thousand words]]&lt;br /&gt;
Over the last couple of days I've fallen face first into the &amp;lt;big&amp;gt;''pit of premature optimisation''&amp;lt;/big&amp;gt;. I noticed some interesting behaviour emerging as a result of my risk function and got carried away tweaking parameters and adding cobbled together versions of bits of code I'd not implemented in the hope of perfecting it. This predictably led to another pile of spaghetti code that needs (another) rewrite. /sigh.&lt;br /&gt;
&lt;br /&gt;
; 15th February 2024&lt;br /&gt;
My experimental bot had become a pile of spaghetti so it got a rewrite today. I'm still pleased with core design principle, especially given how quickly I was able to experiment with an idea I've not seen mentioned on the wiki before (no spoilers :p). My initial assessment is that it shows promise but definitely needs refinement as my bot now has the tendency under certain conditions to turn into a melee rambot...&lt;br /&gt;
&lt;br /&gt;
; 14th February 2024&lt;br /&gt;
My Robocoding time has been quite sporadic lately so it's been difficult to make progress on the ideas I have for a build system, testing framework and modular robot class. On the one hand that's disappointing because it's greatly slowing my efforts to develop an advanced melee contender however a few throwaway experiments have led to some interesting ideas for movement in mini (or possibly even micro) bots.&lt;br /&gt;
&lt;br /&gt;
The movement appears to be doing a good job at evaluating risk despite using a spinning radar and tracking very little information on enemies. The code is a bit buggy and needs some improvement but I think a half-decent gun could be implemented that mostly reuses the movement code, which is very interesting.&lt;br /&gt;
&lt;br /&gt;
At the very least the graphics displaying the risk evaluation are very satisfying to watch, even if these experiments don't find their way into a released bot.&lt;/div&gt;</summary>
		<author><name>D414</name></author>
		
	</entry>
	<entry>
		<id>http://robowiki.net/w/index.php?title=User:D414/Diary_of_a_Robocoder&amp;diff=58036</id>
		<title>User:D414/Diary of a Robocoder</title>
		<link rel="alternate" type="text/html" href="http://robowiki.net/w/index.php?title=User:D414/Diary_of_a_Robocoder&amp;diff=58036"/>
		<updated>2025-08-16T12:25:14Z</updated>

		<summary type="html">&lt;p&gt;D414: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;; 16th August 2025&lt;br /&gt;
I've been doing some exploratory work for an entirely different approach for [[Quantum]] worthy of being called version 2. Something I'm trying to add is storing data about my enemies.&lt;br /&gt;
&lt;br /&gt;
The typical way of tracking data about enemies would be to use a Map, an example of which can be seen in [[HawkOnFire]] but this uses up far too much space to put into a nanobot. [[User:Kev]] uses an imaginative approach in [[Mirage]] that stores the data in arrays instead and uses a static function to give each enemy a unique integer id to index into those arrays. I shaved 11 bytes off of [[Mirage]]'s approach in [[FireHammer]] (my attempt to fit [[Mirage]]'s gun into a micro) and then [[User:Kev]] found a way to shave a whopping 26 bytes(!) off of that in [[Figment]].&lt;br /&gt;
&lt;br /&gt;
Unfortunately the [[Figment]] method has some drawbacks that could make it unsuitable for how I'm hoping to use enemy data in [[Quantum]] v2 but I have been able to shave another 5 bytes off of [[FireHammer]]'s code.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
// Mirage&lt;br /&gt;
// Size: 46 bytes&lt;br /&gt;
// Stable IDs: Yes&lt;br /&gt;
// Contiguous IDs: Yes, from 1-10 in a 10 bot melee match&lt;br /&gt;
// Clashing IDs: Theoretically possible, but unlikely (uses 18bits of the 32bit .hashcode())&lt;br /&gt;
// Memory usage: Low. Constant 1mb overhead for IDs. 1-based indexing wastes one enemy's worth of space in the data arrays.&lt;br /&gt;
static final int OPPONENT_HASHES = 262144; // 18 bits&lt;br /&gt;
static int[] opponentIDs = new int[OPPONENT_HASHES];&lt;br /&gt;
static int opponentsSeen;&lt;br /&gt;
&lt;br /&gt;
static int getOpponentID(String name) {&lt;br /&gt;
    int code = name.hashCode() &amp;amp; (OPPONENT_HASHES - 1);&lt;br /&gt;
    int id = opponentIDs[code];&lt;br /&gt;
    return opponentIDs[code] = (id == 0 ? ++opponentsSeen : id);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// FireHammer&lt;br /&gt;
// Size: 35 bytes&lt;br /&gt;
// Stable IDs: Yes&lt;br /&gt;
// Contiguous IDs: Yes, from 0-9 in a 10 bot melee match&lt;br /&gt;
// Clashing IDs: No&lt;br /&gt;
// Memory usage: Extremely low. Almost zero overhead and no wasted space in the data arrays.&lt;br /&gt;
static ArrayList&amp;lt;String&amp;gt; opponentIDs = new ArrayList&amp;lt;&amp;gt;();&lt;br /&gt;
&lt;br /&gt;
static int getOpponentID(String name) {&lt;br /&gt;
    ArrayList&amp;lt;String&amp;gt; list;&lt;br /&gt;
    if (!(list = opponentIDs).contains(name)) {&lt;br /&gt;
        list.add(name);&lt;br /&gt;
    }&lt;br /&gt;
    return list.indexOf(name);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Figment&lt;br /&gt;
// Size: 9 bytes&lt;br /&gt;
// Stable IDs: Yes&lt;br /&gt;
// Contiguous IDs: No, could be anything from 0 - 255&lt;br /&gt;
// Clashing IDs: Theoretically possible, more likely than Mirage&lt;br /&gt;
// Memory usage: Potentially high, increases data size by 246x&lt;br /&gt;
static final int OPPONENT_HASHES = 256; // 8 bits&lt;br /&gt;
&lt;br /&gt;
static int getOpponentID(String name) {&lt;br /&gt;
    return name.hashCode() &amp;amp; (OPPONENT_HASHES - 1);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Quantum v2&lt;br /&gt;
// Size: 30 bytes&lt;br /&gt;
// Stable IDs: Can be unstable at the start of the first round until each enemy has been scanned for the first time.&lt;br /&gt;
// Contiguous IDs: Yes, from 0-9 in a 10 bot melee match&lt;br /&gt;
// Memory usage: Extremely low. Almost zero overhead and no wasted space in the data arrays.&lt;br /&gt;
static TreeSet&amp;lt;String&amp;gt; index = new TreeSet&amp;lt;String&amp;gt;();&lt;br /&gt;
&lt;br /&gt;
static int getOpponentID(String name) {&lt;br /&gt;
    index.add(name);&lt;br /&gt;
    return Arrays.binarySearch(index.toArray(), name);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; 8th August 2025&lt;br /&gt;
It's been over a year since my last update! I got disheartened by the inadequacies of my testing framework and the fact that the melee [[RoboRumble]]s for [[Code Size]] restricted bots include results for battles involving bots from outside of the weight class - I think we'd see some interesting changes to the leaderboards and which strategies are and aren't successful.&lt;br /&gt;
&lt;br /&gt;
Since the itch to robocode returned I think I've found ways to squeeze a few more bytes out of [[Quantum]], perhaps as many as 4-8. Sadly without a robust testing strategy it seems infeasible to find anything to actually do with those bytes besides adding colours back.&lt;br /&gt;
&lt;br /&gt;
I've also spent some time watching [[IWillFireNoBullet]] move and have to say it's a thing of beauty. I highly recommend it to anybody with even a passing interest in [[Melee]] battles.&lt;br /&gt;
&lt;br /&gt;
; 7th June 2024&lt;br /&gt;
My last couple of updates to [[Quantum]] have hammered home the point that my test benches don't reflect rumble performance nearly as well as I'd like - v1.2.1 and v1.2.2 performed similarly in my testing but quite differently to each other in the rumble. They both outperformed v1.0.0 by around 1% APS in testing but failed to live up to that when released. I don't think I can get away with putting off building a good testing framework any longer!&lt;br /&gt;
&lt;br /&gt;
It's not a complete loss though. I've learned a lot, found a few more bytes to play with and I'm still confident that the approach to bullet power selection will yield better performance (eventually).&lt;br /&gt;
&lt;br /&gt;
; 14th May 2024&lt;br /&gt;
Well, that was unexpected! The minor update to [[Quantum]] that I released reduced the codesize enough to allow me to fix the radar bug I added in v0.2.2 to make room for colours (Each time an opponent died there was a 50% chance the radar would switch directions). That bugfix was worth around 0.7 APS in the micro melee rumble, which was enough to push [[Quantum]] above [[HawkOnFire]]! I'm ''very'' excited to tune the gun...&lt;br /&gt;
&lt;br /&gt;
; 13th May 2024&lt;br /&gt;
ProGuard didn’t manage to shrink [[Quantum]] at all and installing Jikes is a bit of a faff these days (on an Arm MacBook anyway) so I decided to try out [https://github.com/Storyyeller/Krakatau Krakatau] to work with the assembly code directly. It looks like I can make room for the gun to use quite a few attributes - distance, bullet power, number of opponents, lateral velocity and lateral acceleration should all fit. I definitely need to improve on the spaghetti shaped shell scripts I’m using to build and test my bots if I’m going to successfully tune the gun, but I reckon it’ll be worth it. Whether or not it’s enough to outperform [[HawkOnFire]] with a nano remains to be seen, but I’m hopeful.&lt;br /&gt;
&lt;br /&gt;
; 10th May 2024&lt;br /&gt;
[[User:Sheldor2|Sheldor]]'s adaptation of [[Quantum]] (NaturalScience) motivated me to put development of a micro bot on hold. I had space for table based bullet power selection, albeit much simpler than [[User:Sheldor2|Sheldor]]'s, but only found marginal gains and tuning it by hand was both tedious and slow. I did manage to squeeze another 3 bytes out of my code though, bringing [[Quantum]] down to 239 bytes (without colours). There is room now for several different table based approaches but I'm going to need an automated way of tuning them. This leaves me with a nice todo list that will also benefit the development of other bots:&lt;br /&gt;
&lt;br /&gt;
* Try some other compilers, Jikes in particular&lt;br /&gt;
* Add ProGuard to my build scripts&lt;br /&gt;
* Build a test system that allows me to tune tables genetically&lt;br /&gt;
&lt;br /&gt;
; 4th May 2024&lt;br /&gt;
I managed to find another half-dozen or so bytes in [[FireHammer]] which was enough to improve the movement a bit. I've entered it into the rumble and will run some battles overnight so we'll see where it ranks when I wake up in the morning.&lt;br /&gt;
&lt;br /&gt;
Update: Can't complain about top 5 in the micros, although I was hoping to edge out Sprout to make top 3. This has confirmed my belief that a good circular gun is the way to go in a micro; 116 bytes for movement really isn't much to work with!&lt;br /&gt;
&lt;br /&gt;
; 2nd May 2024&lt;br /&gt;
I've finally given [[FireHammer]] a better (but not good) movement without going over 749 bytes. Once I've tidied the code up it will be ready to enter the rumble! I'm torn on whether to release it now versus waiting until I have a minibot ready to challenge [[Mirage]], I don't like to think about how much stronger [[User:Kev|Kev]] could make [[Mirage]] with all the extra space to play with!&lt;br /&gt;
&lt;br /&gt;
; 26th April 2024&lt;br /&gt;
My experimentation with micro sized melee guns is paying off; I've finally managed to squeeze [[Mirage]]'s amazing gun into a micro! The only (intended) functional changes are switching to [[Quantum]]'s bullet power selection and going back to a fixed size for bot width as per [[Mirage]] v0.1.&lt;br /&gt;
&lt;br /&gt;
So far I'm down to 733 bytes from a starting point of 919 (both without colours).&lt;br /&gt;
&lt;br /&gt;
Results are promising despite only spending 21 bytes on movement to move in an [[Infinity]] style box pattern.&lt;br /&gt;
&lt;br /&gt;
; 18th April 2024&lt;br /&gt;
I've started playing around with ideas for an entrant to the micro melee rumble. For now I'm looking at guns and mostly finding that [[DustBunny]]'s gun seems to give excellent performance per byte and is difficult to improve upon. The next best thing seems to be a good implementation of [[Circular Targeting]] but ultimately I think that movement is where the money is.&lt;br /&gt;
&lt;br /&gt;
I should probably turn my attention to finding the most efficient way I can to track enemy state, rather than relying on rolling averages, since the obvious HashMap approach introduces a lot of overhead. I'd also like to see if there's much to gain by switching from a basic nano style radar to something a little bit more sophisticated.&lt;br /&gt;
&lt;br /&gt;
In short, challenging [[Wallaby]] for the micro crown isn't going to be easy!&lt;br /&gt;
&lt;br /&gt;
; 14th April 2024&lt;br /&gt;
It turns out that Quantum is rather competetive! It knocked DustBunny off of the nano melee throne for a few days before settling in to second place. It still achieves a 100% PWIN and has by far the best survival score of any nano melee bot (and it has colours!). If I remove the colours I have 7 bytes to play with but I've not been able to find any changes that make a significant improvement. It would be interesting to see how the table looks once Quantum has run a similar number of battle to the other nanos (currently it's at less than 10%) however my rumble client has stopped working, which is a pain. Once we have internet again I'll see if I can get one of my low power machines setup as a dedicated client.&lt;br /&gt;
&lt;br /&gt;
; 6th April 2024&lt;br /&gt;
I haven't had much time for robocode over the last month but I have been able to experiment a little with a nano melee bot, heavily inspired by [[DustBunny]] and [[Infinity]]. I'm quite pleased with the idea to calculate [[Anti-Gravity Movement|anti-gravity]] forces based on the angle my bot would fire at instead of the angle to the enemy's current position. This bot (Quantum) is my first entry into the [[Roborumble]]!&lt;br /&gt;
&lt;br /&gt;
; 5th March 2024&lt;br /&gt;
My experiments with a nano [[Shadow/Melee Gun]] haven't gotten me the results I'd expected and I got a bit burned out from debugging it so I tried throwing a PM gun on which was okay but nothing to write home about. I think I'm going to experiment with different movements for a while for a change of pace. I've found I enjoy codesize restricted bots much more than megabots - I was getting a bit bogged down in top down development when I was allowed as much code as I liked.&lt;br /&gt;
&lt;br /&gt;
; 28th February 2024&lt;br /&gt;
[[File:Quantum Painting Firing Angles.png|thumb|Targeting everybody at once, Nanobot version!]]&lt;br /&gt;
I've managed to get a (very) basic version of [[Shadow/Melee Gun]] squeezed into my Nanobot. At the moment it only aims (at everybody) with [[Head-On Targeting]] weighted by distance. Once I'm done with bug fixing I think I'll be able to find room to add another gun or two and/or better energy management into the mix.&lt;br /&gt;
&lt;br /&gt;
; 27th February 2024&lt;br /&gt;
For the past couple of evenings I've been playing with nanobots for the first time. I'm interested in developing guns so decided to start by borrowing a movement from somewhere. [[Infinity]] was most appealing because its movement doesn't depend on the radar and only requires 68 bytes. I've managed to shrink the movement code by a further 15 bytes, giving me almost 200 bytes to use for a gun. ::Edit:: I've gotten it down to 35 bytes!&lt;br /&gt;
&lt;br /&gt;
; 23rd February 2024&lt;br /&gt;
I'm wondering if there should be an equivalent page to [[Wave Suffering]] for [[Displacement Vector|Displacement Vectors]]. My early efforts at collecting displacement vectors with a codesize restricted gun have resulted in some interesting and wild arrows being drawn all over the place. I'm making progress but I'm sure that subtle bugs will continue to be found for quite some time. Still not sure I'll make it work with enough space left to pair it with decent movement but the experience will be helpful either way.&lt;br /&gt;
&lt;br /&gt;
; 19th February 2024&lt;br /&gt;
[[File:Risk Function Painting.png|thumb|A picture is worth a thousand words]]&lt;br /&gt;
Over the last couple of days I've fallen face first into the &amp;lt;big&amp;gt;''pit of premature optimisation''&amp;lt;/big&amp;gt;. I noticed some interesting behaviour emerging as a result of my risk function and got carried away tweaking parameters and adding cobbled together versions of bits of code I'd not implemented in the hope of perfecting it. This predictably led to another pile of spaghetti code that needs (another) rewrite. /sigh.&lt;br /&gt;
&lt;br /&gt;
; 15th February 2024&lt;br /&gt;
My experimental bot had become a pile of spaghetti so it got a rewrite today. I'm still pleased with core design principle, especially given how quickly I was able to experiment with an idea I've not seen mentioned on the wiki before (no spoilers :p). My initial assessment is that it shows promise but definitely needs refinement as my bot now has the tendency under certain conditions to turn into a melee rambot...&lt;br /&gt;
&lt;br /&gt;
; 14th February 2024&lt;br /&gt;
My Robocoding time has been quite sporadic lately so it's been difficult to make progress on the ideas I have for a build system, testing framework and modular robot class. On the one hand that's disappointing because it's greatly slowing my efforts to develop an advanced melee contender however a few throwaway experiments have led to some interesting ideas for movement in mini (or possibly even micro) bots.&lt;br /&gt;
&lt;br /&gt;
The movement appears to be doing a good job at evaluating risk despite using a spinning radar and tracking very little information on enemies. The code is a bit buggy and needs some improvement but I think a half-decent gun could be implemented that mostly reuses the movement code, which is very interesting.&lt;br /&gt;
&lt;br /&gt;
At the very least the graphics displaying the risk evaluation are very satisfying to watch, even if these experiments don't find their way into a released bot.&lt;/div&gt;</summary>
		<author><name>D414</name></author>
		
	</entry>
	<entry>
		<id>http://robowiki.net/w/index.php?title=User:D414/Diary_of_a_Robocoder&amp;diff=58035</id>
		<title>User:D414/Diary of a Robocoder</title>
		<link rel="alternate" type="text/html" href="http://robowiki.net/w/index.php?title=User:D414/Diary_of_a_Robocoder&amp;diff=58035"/>
		<updated>2025-08-16T12:24:33Z</updated>

		<summary type="html">&lt;p&gt;D414: Some progress in shrinking enemy tracking code&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;; 16th August 2025&lt;br /&gt;
I've been doing some exploratory work for an entirely different approach for [[Quantum]] worthy of being called version 2. Something I'm trying to add is storing data about my enemies.&lt;br /&gt;
&lt;br /&gt;
The typical way of tracking data about enemies would be to use a Map, an example of which can be seen in [[HawkOnFire]] but this uses up far too much space to put into a nanobot. [[User:Kev]] uses an imaginative approach in [[Mirage]] that stores the data in arrays instead and uses a static function to give each enemy a unique integer id to index into those arrays. I shaved 11 bytes off of [[Mirage]]'s approach in [[FireHammer]] (my attempt to fit [[Mirage]]'s gun into a micro) and then [[User:Kev]] found a way to shave a whopping 26 bytes(!) off of that in [[Figment]].&lt;br /&gt;
&lt;br /&gt;
Unfortunately the [[Figment]] method has some drawbacks that could make it unsuitable for how I'm hoping to use enemy data in [[Quantum]] v2 but I have been able to shave another 5 bytes off of [[FireHammer]]'s code.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
// Mirage&lt;br /&gt;
// Size: 46 bytes&lt;br /&gt;
// Stable IDs: Yes&lt;br /&gt;
// Contiguous IDs: Yes, from 1-10 in a 10 bot melee match&lt;br /&gt;
// Clashing IDs: Theoretically possible, but unlikely (uses 18bits of the 32bit .hashcode())&lt;br /&gt;
// Memory usage: Low, constant 1mb overhead for IDs. 1-based indexing wastes one enemy's worth of space in the data arrays.&lt;br /&gt;
static final int OPPONENT_HASHES = 262144; // 18 bits&lt;br /&gt;
static int[] opponentIDs = new int[OPPONENT_HASHES];&lt;br /&gt;
static int opponentsSeen;&lt;br /&gt;
&lt;br /&gt;
static int getOpponentID(String name) {&lt;br /&gt;
    int code = name.hashCode() &amp;amp; (OPPONENT_HASHES - 1);&lt;br /&gt;
    int id = opponentIDs[code];&lt;br /&gt;
    return opponentIDs[code] = (id == 0 ? ++opponentsSeen : id);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// FireHammer&lt;br /&gt;
// Size: 35 bytes&lt;br /&gt;
// Stable IDs: Yes&lt;br /&gt;
// Contiguous IDs: Yes, from 0-9 in a 10 bot melee match&lt;br /&gt;
// Clashing IDs: No&lt;br /&gt;
// Memory usage: Extremely low. Almost zero overhead and no wasted space in the data arrays.&lt;br /&gt;
static ArrayList&amp;lt;String&amp;gt; opponentIDs = new ArrayList&amp;lt;&amp;gt;();&lt;br /&gt;
&lt;br /&gt;
static int getOpponentID(String name) {&lt;br /&gt;
    ArrayList&amp;lt;String&amp;gt; list;&lt;br /&gt;
    if (!(list = opponentIDs).contains(name)) {&lt;br /&gt;
        list.add(name);&lt;br /&gt;
    }&lt;br /&gt;
    return list.indexOf(name);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Figment&lt;br /&gt;
// Size: 9 bytes&lt;br /&gt;
// Stable IDs: Yes&lt;br /&gt;
// Contiguous IDs: No, could be anything from 0 - 255&lt;br /&gt;
// Clashing IDs: Theoretically possible, more likely than Mirage&lt;br /&gt;
// Memory usage: Potentially high, increases data size by 246x&lt;br /&gt;
static final int OPPONENT_HASHES = 256; // 8 bits&lt;br /&gt;
&lt;br /&gt;
static int getOpponentID(String name) {&lt;br /&gt;
    return name.hashCode() &amp;amp; (OPPONENT_HASHES - 1);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Quantum v2&lt;br /&gt;
// Size: 30 bytes&lt;br /&gt;
// Stable IDs: Can be unstable at the start of the first round until each enemy has been scanned for the first time.&lt;br /&gt;
// Contiguous IDs: Yes, from 0-9 in a 10 bot melee match&lt;br /&gt;
// Memory usage: Extremely low. Almost zero overhead and no wasted space in the data arrays.&lt;br /&gt;
static TreeSet&amp;lt;String&amp;gt; index = new TreeSet&amp;lt;String&amp;gt;();&lt;br /&gt;
&lt;br /&gt;
static int getOpponentID(String name) {&lt;br /&gt;
    index.add(name);&lt;br /&gt;
    return Arrays.binarySearch(index.toArray(), name);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; 8th August 2025&lt;br /&gt;
It's been over a year since my last update! I got disheartened by the inadequacies of my testing framework and the fact that the melee [[RoboRumble]]s for [[Code Size]] restricted bots include results for battles involving bots from outside of the weight class - I think we'd see some interesting changes to the leaderboards and which strategies are and aren't successful.&lt;br /&gt;
&lt;br /&gt;
Since the itch to robocode returned I think I've found ways to squeeze a few more bytes out of [[Quantum]], perhaps as many as 4-8. Sadly without a robust testing strategy it seems infeasible to find anything to actually do with those bytes besides adding colours back.&lt;br /&gt;
&lt;br /&gt;
I've also spent some time watching [[IWillFireNoBullet]] move and have to say it's a thing of beauty. I highly recommend it to anybody with even a passing interest in [[Melee]] battles.&lt;br /&gt;
&lt;br /&gt;
; 7th June 2024&lt;br /&gt;
My last couple of updates to [[Quantum]] have hammered home the point that my test benches don't reflect rumble performance nearly as well as I'd like - v1.2.1 and v1.2.2 performed similarly in my testing but quite differently to each other in the rumble. They both outperformed v1.0.0 by around 1% APS in testing but failed to live up to that when released. I don't think I can get away with putting off building a good testing framework any longer!&lt;br /&gt;
&lt;br /&gt;
It's not a complete loss though. I've learned a lot, found a few more bytes to play with and I'm still confident that the approach to bullet power selection will yield better performance (eventually).&lt;br /&gt;
&lt;br /&gt;
; 14th May 2024&lt;br /&gt;
Well, that was unexpected! The minor update to [[Quantum]] that I released reduced the codesize enough to allow me to fix the radar bug I added in v0.2.2 to make room for colours (Each time an opponent died there was a 50% chance the radar would switch directions). That bugfix was worth around 0.7 APS in the micro melee rumble, which was enough to push [[Quantum]] above [[HawkOnFire]]! I'm ''very'' excited to tune the gun...&lt;br /&gt;
&lt;br /&gt;
; 13th May 2024&lt;br /&gt;
ProGuard didn’t manage to shrink [[Quantum]] at all and installing Jikes is a bit of a faff these days (on an Arm MacBook anyway) so I decided to try out [https://github.com/Storyyeller/Krakatau Krakatau] to work with the assembly code directly. It looks like I can make room for the gun to use quite a few attributes - distance, bullet power, number of opponents, lateral velocity and lateral acceleration should all fit. I definitely need to improve on the spaghetti shaped shell scripts I’m using to build and test my bots if I’m going to successfully tune the gun, but I reckon it’ll be worth it. Whether or not it’s enough to outperform [[HawkOnFire]] with a nano remains to be seen, but I’m hopeful.&lt;br /&gt;
&lt;br /&gt;
; 10th May 2024&lt;br /&gt;
[[User:Sheldor2|Sheldor]]'s adaptation of [[Quantum]] (NaturalScience) motivated me to put development of a micro bot on hold. I had space for table based bullet power selection, albeit much simpler than [[User:Sheldor2|Sheldor]]'s, but only found marginal gains and tuning it by hand was both tedious and slow. I did manage to squeeze another 3 bytes out of my code though, bringing [[Quantum]] down to 239 bytes (without colours). There is room now for several different table based approaches but I'm going to need an automated way of tuning them. This leaves me with a nice todo list that will also benefit the development of other bots:&lt;br /&gt;
&lt;br /&gt;
* Try some other compilers, Jikes in particular&lt;br /&gt;
* Add ProGuard to my build scripts&lt;br /&gt;
* Build a test system that allows me to tune tables genetically&lt;br /&gt;
&lt;br /&gt;
; 4th May 2024&lt;br /&gt;
I managed to find another half-dozen or so bytes in [[FireHammer]] which was enough to improve the movement a bit. I've entered it into the rumble and will run some battles overnight so we'll see where it ranks when I wake up in the morning.&lt;br /&gt;
&lt;br /&gt;
Update: Can't complain about top 5 in the micros, although I was hoping to edge out Sprout to make top 3. This has confirmed my belief that a good circular gun is the way to go in a micro; 116 bytes for movement really isn't much to work with!&lt;br /&gt;
&lt;br /&gt;
; 2nd May 2024&lt;br /&gt;
I've finally given [[FireHammer]] a better (but not good) movement without going over 749 bytes. Once I've tidied the code up it will be ready to enter the rumble! I'm torn on whether to release it now versus waiting until I have a minibot ready to challenge [[Mirage]], I don't like to think about how much stronger [[User:Kev|Kev]] could make [[Mirage]] with all the extra space to play with!&lt;br /&gt;
&lt;br /&gt;
; 26th April 2024&lt;br /&gt;
My experimentation with micro sized melee guns is paying off; I've finally managed to squeeze [[Mirage]]'s amazing gun into a micro! The only (intended) functional changes are switching to [[Quantum]]'s bullet power selection and going back to a fixed size for bot width as per [[Mirage]] v0.1.&lt;br /&gt;
&lt;br /&gt;
So far I'm down to 733 bytes from a starting point of 919 (both without colours).&lt;br /&gt;
&lt;br /&gt;
Results are promising despite only spending 21 bytes on movement to move in an [[Infinity]] style box pattern.&lt;br /&gt;
&lt;br /&gt;
; 18th April 2024&lt;br /&gt;
I've started playing around with ideas for an entrant to the micro melee rumble. For now I'm looking at guns and mostly finding that [[DustBunny]]'s gun seems to give excellent performance per byte and is difficult to improve upon. The next best thing seems to be a good implementation of [[Circular Targeting]] but ultimately I think that movement is where the money is.&lt;br /&gt;
&lt;br /&gt;
I should probably turn my attention to finding the most efficient way I can to track enemy state, rather than relying on rolling averages, since the obvious HashMap approach introduces a lot of overhead. I'd also like to see if there's much to gain by switching from a basic nano style radar to something a little bit more sophisticated.&lt;br /&gt;
&lt;br /&gt;
In short, challenging [[Wallaby]] for the micro crown isn't going to be easy!&lt;br /&gt;
&lt;br /&gt;
; 14th April 2024&lt;br /&gt;
It turns out that Quantum is rather competetive! It knocked DustBunny off of the nano melee throne for a few days before settling in to second place. It still achieves a 100% PWIN and has by far the best survival score of any nano melee bot (and it has colours!). If I remove the colours I have 7 bytes to play with but I've not been able to find any changes that make a significant improvement. It would be interesting to see how the table looks once Quantum has run a similar number of battle to the other nanos (currently it's at less than 10%) however my rumble client has stopped working, which is a pain. Once we have internet again I'll see if I can get one of my low power machines setup as a dedicated client.&lt;br /&gt;
&lt;br /&gt;
; 6th April 2024&lt;br /&gt;
I haven't had much time for robocode over the last month but I have been able to experiment a little with a nano melee bot, heavily inspired by [[DustBunny]] and [[Infinity]]. I'm quite pleased with the idea to calculate [[Anti-Gravity Movement|anti-gravity]] forces based on the angle my bot would fire at instead of the angle to the enemy's current position. This bot (Quantum) is my first entry into the [[Roborumble]]!&lt;br /&gt;
&lt;br /&gt;
; 5th March 2024&lt;br /&gt;
My experiments with a nano [[Shadow/Melee Gun]] haven't gotten me the results I'd expected and I got a bit burned out from debugging it so I tried throwing a PM gun on which was okay but nothing to write home about. I think I'm going to experiment with different movements for a while for a change of pace. I've found I enjoy codesize restricted bots much more than megabots - I was getting a bit bogged down in top down development when I was allowed as much code as I liked.&lt;br /&gt;
&lt;br /&gt;
; 28th February 2024&lt;br /&gt;
[[File:Quantum Painting Firing Angles.png|thumb|Targeting everybody at once, Nanobot version!]]&lt;br /&gt;
I've managed to get a (very) basic version of [[Shadow/Melee Gun]] squeezed into my Nanobot. At the moment it only aims (at everybody) with [[Head-On Targeting]] weighted by distance. Once I'm done with bug fixing I think I'll be able to find room to add another gun or two and/or better energy management into the mix.&lt;br /&gt;
&lt;br /&gt;
; 27th February 2024&lt;br /&gt;
For the past couple of evenings I've been playing with nanobots for the first time. I'm interested in developing guns so decided to start by borrowing a movement from somewhere. [[Infinity]] was most appealing because its movement doesn't depend on the radar and only requires 68 bytes. I've managed to shrink the movement code by a further 15 bytes, giving me almost 200 bytes to use for a gun. ::Edit:: I've gotten it down to 35 bytes!&lt;br /&gt;
&lt;br /&gt;
; 23rd February 2024&lt;br /&gt;
I'm wondering if there should be an equivalent page to [[Wave Suffering]] for [[Displacement Vector|Displacement Vectors]]. My early efforts at collecting displacement vectors with a codesize restricted gun have resulted in some interesting and wild arrows being drawn all over the place. I'm making progress but I'm sure that subtle bugs will continue to be found for quite some time. Still not sure I'll make it work with enough space left to pair it with decent movement but the experience will be helpful either way.&lt;br /&gt;
&lt;br /&gt;
; 19th February 2024&lt;br /&gt;
[[File:Risk Function Painting.png|thumb|A picture is worth a thousand words]]&lt;br /&gt;
Over the last couple of days I've fallen face first into the &amp;lt;big&amp;gt;''pit of premature optimisation''&amp;lt;/big&amp;gt;. I noticed some interesting behaviour emerging as a result of my risk function and got carried away tweaking parameters and adding cobbled together versions of bits of code I'd not implemented in the hope of perfecting it. This predictably led to another pile of spaghetti code that needs (another) rewrite. /sigh.&lt;br /&gt;
&lt;br /&gt;
; 15th February 2024&lt;br /&gt;
My experimental bot had become a pile of spaghetti so it got a rewrite today. I'm still pleased with core design principle, especially given how quickly I was able to experiment with an idea I've not seen mentioned on the wiki before (no spoilers :p). My initial assessment is that it shows promise but definitely needs refinement as my bot now has the tendency under certain conditions to turn into a melee rambot...&lt;br /&gt;
&lt;br /&gt;
; 14th February 2024&lt;br /&gt;
My Robocoding time has been quite sporadic lately so it's been difficult to make progress on the ideas I have for a build system, testing framework and modular robot class. On the one hand that's disappointing because it's greatly slowing my efforts to develop an advanced melee contender however a few throwaway experiments have led to some interesting ideas for movement in mini (or possibly even micro) bots.&lt;br /&gt;
&lt;br /&gt;
The movement appears to be doing a good job at evaluating risk despite using a spinning radar and tracking very little information on enemies. The code is a bit buggy and needs some improvement but I think a half-decent gun could be implemented that mostly reuses the movement code, which is very interesting.&lt;br /&gt;
&lt;br /&gt;
At the very least the graphics displaying the risk evaluation are very satisfying to watch, even if these experiments don't find their way into a released bot.&lt;/div&gt;</summary>
		<author><name>D414</name></author>
		
	</entry>
	<entry>
		<id>http://robowiki.net/w/index.php?title=Thread:Talk:BeepBoop/Understanding_BeepBoop/BeepBoop_vs_Yatagan/reply_(2)&amp;diff=58034</id>
		<title>Thread:Talk:BeepBoop/Understanding BeepBoop/BeepBoop vs Yatagan/reply (2)</title>
		<link rel="alternate" type="text/html" href="http://robowiki.net/w/index.php?title=Thread:Talk:BeepBoop/Understanding_BeepBoop/BeepBoop_vs_Yatagan/reply_(2)&amp;diff=58034"/>
		<updated>2025-08-16T10:51:07Z</updated>

		<summary type="html">&lt;p&gt;D414: Reply to BeepBoop vs Yatagan&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;I thought it might be some kind of whitelist, I should probably have had a look for one. I wonder how much APS the whitelist is worth?&lt;/div&gt;</summary>
		<author><name>D414</name></author>
		
	</entry>
	<entry>
		<id>http://robowiki.net/w/index.php?title=Thread:Talk:BeepBoop/Understanding_BeepBoop/BeepBoop_vs_Yatagan&amp;diff=58032</id>
		<title>Thread:Talk:BeepBoop/Understanding BeepBoop/BeepBoop vs Yatagan</title>
		<link rel="alternate" type="text/html" href="http://robowiki.net/w/index.php?title=Thread:Talk:BeepBoop/Understanding_BeepBoop/BeepBoop_vs_Yatagan&amp;diff=58032"/>
		<updated>2025-08-08T22:59:55Z</updated>

		<summary type="html">&lt;p&gt;D414: New thread: BeepBoop vs Yatagan&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;I've noticed that versus Yatagan BeepBoop never moves. The bullet shielding is effective enough that BeepBoop wins comfortably but I'm curious whether this behaviour is a bug or not. So far I've not seen any other bots that BeepBoop responds to in this way.&lt;/div&gt;</summary>
		<author><name>D414</name></author>
		
	</entry>
	<entry>
		<id>http://robowiki.net/w/index.php?title=Thread:Talk:Code_Size/Writing_nanobots_using_Java_Assembly_directly/reply_(6)&amp;diff=58031</id>
		<title>Thread:Talk:Code Size/Writing nanobots using Java Assembly directly/reply (6)</title>
		<link rel="alternate" type="text/html" href="http://robowiki.net/w/index.php?title=Thread:Talk:Code_Size/Writing_nanobots_using_Java_Assembly_directly/reply_(6)&amp;diff=58031"/>
		<updated>2025-08-08T21:43:54Z</updated>

		<summary type="html">&lt;p&gt;D414: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;I never did follow through on this promise. If anybody is interested I'm happy to field questions though, smashing [[DustBunny]] and [[Infinity]] together and making enough room for some additional features to make [[Quantum]] was a lot of fun and I'd be more than happy to talk about it :)&lt;/div&gt;</summary>
		<author><name>D414</name></author>
		
	</entry>
	<entry>
		<id>http://robowiki.net/w/index.php?title=Thread:Talk:Code_Size/Writing_nanobots_using_Java_Assembly_directly/reply_(6)&amp;diff=58030</id>
		<title>Thread:Talk:Code Size/Writing nanobots using Java Assembly directly/reply (6)</title>
		<link rel="alternate" type="text/html" href="http://robowiki.net/w/index.php?title=Thread:Talk:Code_Size/Writing_nanobots_using_Java_Assembly_directly/reply_(6)&amp;diff=58030"/>
		<updated>2025-08-08T21:43:16Z</updated>

		<summary type="html">&lt;p&gt;D414: Reply to Writing nanobots using Java Assembly directly&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;I never did follow through on this promise. If anybody is interested I'm happy to field questions though, smashing [[DustBunny]] and [[Infinity]] together and making enough room for some additional features to make [[Quantum]] was a lot of fun :)&lt;/div&gt;</summary>
		<author><name>D414</name></author>
		
	</entry>
	<entry>
		<id>http://robowiki.net/w/index.php?title=User:D414/Diary_of_a_Robocoder&amp;diff=58029</id>
		<title>User:D414/Diary of a Robocoder</title>
		<link rel="alternate" type="text/html" href="http://robowiki.net/w/index.php?title=User:D414/Diary_of_a_Robocoder&amp;diff=58029"/>
		<updated>2025-08-08T21:34:34Z</updated>

		<summary type="html">&lt;p&gt;D414: First diary entry in over a year.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;; 8th August 2025&lt;br /&gt;
It's been over a year since my last update! I got disheartened by the inadequacies of my testing framework and the fact that the melee [[RoboRumble]]s for [[Code Size]] restricted bots include results for battles involving bots from outside of the weight class - I think we'd see some interesting changes to the leaderboards and which strategies are and aren't successful.&lt;br /&gt;
&lt;br /&gt;
Since the itch to robocode returned I think I've found ways to squeeze a few more bytes out of [[Quantum]], perhaps as many as 4-8. Sadly without a robust testing strategy it seems infeasible to find anything to actually do with those bytes besides adding colours back.&lt;br /&gt;
&lt;br /&gt;
I've also spent some time watching [[IWillFireNoBullet]] move and have to say it's a thing of beauty. I highly recommend it to anybody with even a passing interest in [[Melee]] battles.&lt;br /&gt;
&lt;br /&gt;
; 7th June 2024&lt;br /&gt;
My last couple of updates to [[Quantum]] have hammered home the point that my test benches don't reflect rumble performance nearly as well as I'd like - v1.2.1 and v1.2.2 performed similarly in my testing but quite differently to each other in the rumble. They both outperformed v1.0.0 by around 1% APS in testing but failed to live up to that when released. I don't think I can get away with putting off building a good testing framework any longer!&lt;br /&gt;
&lt;br /&gt;
It's not a complete loss though. I've learned a lot, found a few more bytes to play with and I'm still confident that the approach to bullet power selection will yield better performance (eventually).&lt;br /&gt;
&lt;br /&gt;
; 14th May 2024&lt;br /&gt;
Well, that was unexpected! The minor update to [[Quantum]] that I released reduced the codesize enough to allow me to fix the radar bug I added in v0.2.2 to make room for colours (Each time an opponent died there was a 50% chance the radar would switch directions). That bugfix was worth around 0.7 APS in the micro melee rumble, which was enough to push [[Quantum]] above [[HawkOnFire]]! I'm ''very'' excited to tune the gun...&lt;br /&gt;
&lt;br /&gt;
; 13th May 2024&lt;br /&gt;
ProGuard didn’t manage to shrink [[Quantum]] at all and installing Jikes is a bit of a faff these days (on an Arm MacBook anyway) so I decided to try out [https://github.com/Storyyeller/Krakatau Krakatau] to work with the assembly code directly. It looks like I can make room for the gun to use quite a few attributes - distance, bullet power, number of opponents, lateral velocity and lateral acceleration should all fit. I definitely need to improve on the spaghetti shaped shell scripts I’m using to build and test my bots if I’m going to successfully tune the gun, but I reckon it’ll be worth it. Whether or not it’s enough to outperform [[HawkOnFire]] with a nano remains to be seen, but I’m hopeful.&lt;br /&gt;
&lt;br /&gt;
; 10th May 2024&lt;br /&gt;
[[User:Sheldor2|Sheldor]]'s adaptation of [[Quantum]] (NaturalScience) motivated me to put development of a micro bot on hold. I had space for table based bullet power selection, albeit much simpler than [[User:Sheldor2|Sheldor]]'s, but only found marginal gains and tuning it by hand was both tedious and slow. I did manage to squeeze another 3 bytes out of my code though, bringing [[Quantum]] down to 239 bytes (without colours). There is room now for several different table based approaches but I'm going to need an automated way of tuning them. This leaves me with a nice todo list that will also benefit the development of other bots:&lt;br /&gt;
&lt;br /&gt;
* Try some other compilers, Jikes in particular&lt;br /&gt;
* Add ProGuard to my build scripts&lt;br /&gt;
* Build a test system that allows me to tune tables genetically&lt;br /&gt;
&lt;br /&gt;
; 4th May 2024&lt;br /&gt;
I managed to find another half-dozen or so bytes in [[FireHammer]] which was enough to improve the movement a bit. I've entered it into the rumble and will run some battles overnight so we'll see where it ranks when I wake up in the morning.&lt;br /&gt;
&lt;br /&gt;
Update: Can't complain about top 5 in the micros, although I was hoping to edge out Sprout to make top 3. This has confirmed my belief that a good circular gun is the way to go in a micro; 116 bytes for movement really isn't much to work with!&lt;br /&gt;
&lt;br /&gt;
; 2nd May 2024&lt;br /&gt;
I've finally given [[FireHammer]] a better (but not good) movement without going over 749 bytes. Once I've tidied the code up it will be ready to enter the rumble! I'm torn on whether to release it now versus waiting until I have a minibot ready to challenge [[Mirage]], I don't like to think about how much stronger [[User:Kev|Kev]] could make [[Mirage]] with all the extra space to play with!&lt;br /&gt;
&lt;br /&gt;
; 26th April 2024&lt;br /&gt;
My experimentation with micro sized melee guns is paying off; I've finally managed to squeeze [[Mirage]]'s amazing gun into a micro! The only (intended) functional changes are switching to [[Quantum]]'s bullet power selection and going back to a fixed size for bot width as per [[Mirage]] v0.1.&lt;br /&gt;
&lt;br /&gt;
So far I'm down to 733 bytes from a starting point of 919 (both without colours).&lt;br /&gt;
&lt;br /&gt;
Results are promising despite only spending 21 bytes on movement to move in an [[Infinity]] style box pattern.&lt;br /&gt;
&lt;br /&gt;
; 18th April 2024&lt;br /&gt;
I've started playing around with ideas for an entrant to the micro melee rumble. For now I'm looking at guns and mostly finding that [[DustBunny]]'s gun seems to give excellent performance per byte and is difficult to improve upon. The next best thing seems to be a good implementation of [[Circular Targeting]] but ultimately I think that movement is where the money is.&lt;br /&gt;
&lt;br /&gt;
I should probably turn my attention to finding the most efficient way I can to track enemy state, rather than relying on rolling averages, since the obvious HashMap approach introduces a lot of overhead. I'd also like to see if there's much to gain by switching from a basic nano style radar to something a little bit more sophisticated.&lt;br /&gt;
&lt;br /&gt;
In short, challenging [[Wallaby]] for the micro crown isn't going to be easy!&lt;br /&gt;
&lt;br /&gt;
; 14th April 2024&lt;br /&gt;
It turns out that Quantum is rather competetive! It knocked DustBunny off of the nano melee throne for a few days before settling in to second place. It still achieves a 100% PWIN and has by far the best survival score of any nano melee bot (and it has colours!). If I remove the colours I have 7 bytes to play with but I've not been able to find any changes that make a significant improvement. It would be interesting to see how the table looks once Quantum has run a similar number of battle to the other nanos (currently it's at less than 10%) however my rumble client has stopped working, which is a pain. Once we have internet again I'll see if I can get one of my low power machines setup as a dedicated client.&lt;br /&gt;
&lt;br /&gt;
; 6th April 2024&lt;br /&gt;
I haven't had much time for robocode over the last month but I have been able to experiment a little with a nano melee bot, heavily inspired by [[DustBunny]] and [[Infinity]]. I'm quite pleased with the idea to calculate [[Anti-Gravity Movement|anti-gravity]] forces based on the angle my bot would fire at instead of the angle to the enemy's current position. This bot (Quantum) is my first entry into the [[Roborumble]]!&lt;br /&gt;
&lt;br /&gt;
; 5th March 2024&lt;br /&gt;
My experiments with a nano [[Shadow/Melee Gun]] haven't gotten me the results I'd expected and I got a bit burned out from debugging it so I tried throwing a PM gun on which was okay but nothing to write home about. I think I'm going to experiment with different movements for a while for a change of pace. I've found I enjoy codesize restricted bots much more than megabots - I was getting a bit bogged down in top down development when I was allowed as much code as I liked.&lt;br /&gt;
&lt;br /&gt;
; 28th February 2024&lt;br /&gt;
[[File:Quantum Painting Firing Angles.png|thumb|Targeting everybody at once, Nanobot version!]]&lt;br /&gt;
I've managed to get a (very) basic version of [[Shadow/Melee Gun]] squeezed into my Nanobot. At the moment it only aims (at everybody) with [[Head-On Targeting]] weighted by distance. Once I'm done with bug fixing I think I'll be able to find room to add another gun or two and/or better energy management into the mix.&lt;br /&gt;
&lt;br /&gt;
; 27th February 2024&lt;br /&gt;
For the past couple of evenings I've been playing with nanobots for the first time. I'm interested in developing guns so decided to start by borrowing a movement from somewhere. [[Infinity]] was most appealing because its movement doesn't depend on the radar and only requires 68 bytes. I've managed to shrink the movement code by a further 15 bytes, giving me almost 200 bytes to use for a gun. ::Edit:: I've gotten it down to 35 bytes!&lt;br /&gt;
&lt;br /&gt;
; 23rd February 2024&lt;br /&gt;
I'm wondering if there should be an equivalent page to [[Wave Suffering]] for [[Displacement Vector|Displacement Vectors]]. My early efforts at collecting displacement vectors with a codesize restricted gun have resulted in some interesting and wild arrows being drawn all over the place. I'm making progress but I'm sure that subtle bugs will continue to be found for quite some time. Still not sure I'll make it work with enough space left to pair it with decent movement but the experience will be helpful either way.&lt;br /&gt;
&lt;br /&gt;
; 19th February 2024&lt;br /&gt;
[[File:Risk Function Painting.png|thumb|A picture is worth a thousand words]]&lt;br /&gt;
Over the last couple of days I've fallen face first into the &amp;lt;big&amp;gt;''pit of premature optimisation''&amp;lt;/big&amp;gt;. I noticed some interesting behaviour emerging as a result of my risk function and got carried away tweaking parameters and adding cobbled together versions of bits of code I'd not implemented in the hope of perfecting it. This predictably led to another pile of spaghetti code that needs (another) rewrite. /sigh.&lt;br /&gt;
&lt;br /&gt;
; 15th February 2024&lt;br /&gt;
My experimental bot had become a pile of spaghetti so it got a rewrite today. I'm still pleased with core design principle, especially given how quickly I was able to experiment with an idea I've not seen mentioned on the wiki before (no spoilers :p). My initial assessment is that it shows promise but definitely needs refinement as my bot now has the tendency under certain conditions to turn into a melee rambot...&lt;br /&gt;
&lt;br /&gt;
; 14th February 2024&lt;br /&gt;
My Robocoding time has been quite sporadic lately so it's been difficult to make progress on the ideas I have for a build system, testing framework and modular robot class. On the one hand that's disappointing because it's greatly slowing my efforts to develop an advanced melee contender however a few throwaway experiments have led to some interesting ideas for movement in mini (or possibly even micro) bots.&lt;br /&gt;
&lt;br /&gt;
The movement appears to be doing a good job at evaluating risk despite using a spinning radar and tracking very little information on enemies. The code is a bit buggy and needs some improvement but I think a half-decent gun could be implemented that mostly reuses the movement code, which is very interesting.&lt;br /&gt;
&lt;br /&gt;
At the very least the graphics displaying the risk evaluation are very satisfying to watch, even if these experiments don't find their way into a released bot.&lt;/div&gt;</summary>
		<author><name>D414</name></author>
		
	</entry>
	<entry>
		<id>http://robowiki.net/w/index.php?title=User:D414/Personal_Gotchas&amp;diff=58028</id>
		<title>User:D414/Personal Gotchas</title>
		<link rel="alternate" type="text/html" href="http://robowiki.net/w/index.php?title=User:D414/Personal_Gotchas&amp;diff=58028"/>
		<updated>2025-08-08T21:19:47Z</updated>

		<summary type="html">&lt;p&gt;D414: Added findings re string comparisons breaking&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= String comparisons =&lt;br /&gt;
&amp;lt;code&amp;gt;if (e.getName() == strVar)&amp;lt;/code&amp;gt; seems to work for battles run through the UI but it breaks if you use a battle file to run a battle from the command line and will break many bots that rely on it, like [[Quantum]] and [[Wallaby]]. Seems to be okay to use in the [[RoboRumble]] and [[RoboRunner]]. To test your bot using a battle file you'll need to use &amp;lt;code&amp;gt;if (e.getName().equals(strVar)&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Some API calls update before execute() is called =&lt;br /&gt;
For example, after a call to setGunTurnRight the return value of getGunTurnRemaining is updated. I'm currently unsure whether it's possible for the outcome of a turn to be impacted by changing the order setXXX calls are made in.&lt;br /&gt;
&lt;br /&gt;
= Maximum scan distance=&lt;br /&gt;
It's possible for a scan event to return a number larger than 1216. The largest I've seen is a smidge over 1225.&lt;br /&gt;
&lt;br /&gt;
= Event Priority =&lt;br /&gt;
The documentation for event priorities is unclear. [https://robocode.sourceforge.io/docs/robocode/robocode/AdvancedRobot.html#setEventPriority-java.lang.String-int- setEventPriority] says lower values are higher priority while [https://robocode.sourceforge.io/docs/robocode/robocode/AdvancedRobot.html#getEventPriority-java.lang.String- getEventPriority] says higher values are higher priority. Testing confirms the later is correct. &lt;br /&gt;
&lt;br /&gt;
The documentation also has errors for the default priorities for several events.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Event !! [https://robocode.sourceforge.io/docs/robocode/robocode/AdvancedRobot.html#setEventPriority-java.lang.String-int- setEventPriority] docs !! [https://github.com/robo-code/robocode/tree/VER_1_9_5_2/robocode.api/src/main/java/robocode Source Code (1.9.5.2)]&lt;br /&gt;
|-&lt;br /&gt;
| RoundEndedEvent || 100 || '''110'''&lt;br /&gt;
|-&lt;br /&gt;
| BattleEndedEvent || 100 || 100&lt;br /&gt;
|-&lt;br /&gt;
| WinEvent || 100 || 100&lt;br /&gt;
|-&lt;br /&gt;
| SkippedTurnEvent || 100 || 100&lt;br /&gt;
|-&lt;br /&gt;
| StatusEvent || 99 || 99&lt;br /&gt;
|-&lt;br /&gt;
| Key and Mouse Events || 98 || 98&lt;br /&gt;
|-&lt;br /&gt;
| CustomEvent (Default) || 80 || 80&lt;br /&gt;
|-&lt;br /&gt;
| MessageEvent || 75 || 75&lt;br /&gt;
|-&lt;br /&gt;
| RobotDeathEvent || 70 || 70&lt;br /&gt;
|-&lt;br /&gt;
| BulletMissedEvent || 60 || 60&lt;br /&gt;
|-&lt;br /&gt;
| BulletHitBulletEvent || 55 || 55&lt;br /&gt;
|-&lt;br /&gt;
| BulletHitEvent || 50 || 50&lt;br /&gt;
|-&lt;br /&gt;
| HitByBulletEvent || 40 || '''20'''&lt;br /&gt;
|-&lt;br /&gt;
| HitWallEvent || 30 || 30&lt;br /&gt;
|-&lt;br /&gt;
| HitRobotEvent || 20 || '''40'''&lt;br /&gt;
|-&lt;br /&gt;
| ScannedRobotEvent || 10 || 10&lt;br /&gt;
|-&lt;br /&gt;
| PaintEvent || 5 || 5&lt;br /&gt;
|-&lt;br /&gt;
| DeathEvent || -1 || -1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Execute Method =&lt;br /&gt;
The documentation for the [https://robocode.sourceforge.io/docs/robocode/robocode/AdvancedRobot.html#execute-- execute] method says that it '''must''' be called otherwise set* methods will never be performed. This doesn't seem to be strictly true as a robot that uses set methods to spin its radar, gun and body in the [https://robocode.sourceforge.io/docs/robocode/robocode/Robot.html#run-- run] method will spin even without calling [https://robocode.sourceforge.io/docs/robocode/robocode/AdvancedRobot.html#execute-- execute].&lt;br /&gt;
&lt;br /&gt;
= Skipped Turns =&lt;br /&gt;
The documentation for [https://robocode.sourceforge.io/docs/robocode/robocode/SkippedTurnEvent.html SkippedTurnEvent] says a robot will be removed from the battle after skipping 30 turns however a robot using the example code will skip many more turns than this without being removed from the battle.&lt;br /&gt;
&lt;br /&gt;
= Ramming / ROBOT_HIT_BONUS / HitRobotEvent =&lt;br /&gt;
Based on some quick tests with RamFire vs SittingDuck it looks as though [https://robocode.sourceforge.io/docs/robocode/robocode/Rules.html#ROBOT_HIT_BONUS Rules.ROBOT_HIT_BONUS] isn't actually applied.&lt;br /&gt;
&lt;br /&gt;
It also appears that a ramming robot that gets stopped effectively gets its movement for that turn cancelled and remains in the same position. However, it can still move closer to the target on subsequent turns (Also tested with RamFire vs SittingDuck). This is mostly unimportant except for the case of using a HitRobotEvent to determine the position of an enemy that wasn't scanned that turn (eg in melee or a Droid in a team battle).&lt;/div&gt;</summary>
		<author><name>D414</name></author>
		
	</entry>
	<entry>
		<id>http://robowiki.net/w/index.php?title=RoboRumble/Participants/Melee&amp;diff=57939</id>
		<title>RoboRumble/Participants/Melee</title>
		<link rel="alternate" type="text/html" href="http://robowiki.net/w/index.php?title=RoboRumble/Participants/Melee&amp;diff=57939"/>
		<updated>2024-06-10T09:18:34Z</updated>

		<summary type="html">&lt;p&gt;D414: Revert Quantum to v1.0.0&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{:RoboRumble/Navigation}}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Just add your bot name ('''as appears in the Robocode selector after packaging''', so including versionnumber) and the download link by &amp;quot;,&amp;quot; (there must be no space after the comma).&lt;br /&gt;
&lt;br /&gt;
The list is in '''alphabetical''' order. Add your bot in the right slot.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;For your bot to be accepted by the RR@Home server, the following rules are mandatory:&amp;lt;/span&amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
* The bot must have a package-name.&lt;br /&gt;
* The bot must be packaged in a jar-file.&lt;br /&gt;
* A &amp;lt;botname&amp;gt;.properties file must be present in the jar-file.&lt;br /&gt;
* The naming of the bot must reflect the internal structure, see [http://home.versatel.nl/gheijenk/plaatjes/bot_naming.png]for sample.RamFire.&lt;br /&gt;
* '''&amp;lt;font color=&amp;quot;#CA0813&amp;quot;&amp;gt;The bot should be compatible with Java 17&amp;lt;/font&amp;gt; (Don't compile your code with Java 18 or newer versions)'''&lt;br /&gt;
&lt;br /&gt;
The easiest way to do this is to package your bot with Robocode (Robot -&amp;gt; Package robot for upload).&lt;br /&gt;
&lt;br /&gt;
'''PLEASE MAKE SURE YOUR BOT IS NOT ALREADY ON THE LIST BEFORE YOU ADD IT.&amp;lt;br&amp;gt;IF YOU ARE ADDING A NEW VERSION OF YOUR BOT, PLEASE DELETE THE OLD ONE.'''&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
aaa.r.ScalarR 0.005g.047,https://drive.google.com/uc?export=download&amp;amp;id=1RtyCnpE6XI_WHHvJwjj2brqFPvfgX9Uv&lt;br /&gt;
abc.Shadow 3.84i,http://robocode-archive.strangeautomata.com/robots/abc.Shadow_3.84i.jar&lt;br /&gt;
abud.ThirdRobo 1.0,http://robocode-archive.strangeautomata.com/robots/abud.ThirdRobo_1.0.jar&lt;br /&gt;
acogdev.alpha 0.2,http://robocode-archive.strangeautomata.com/robots/acogdev.alpha_0.2.jar&lt;br /&gt;
adt.Ar1 2.1,http://robocode-archive.strangeautomata.com/robots/adt.Ar1_2.1.jar&lt;br /&gt;
adt.Ar2 1.0,http://robocode-archive.strangeautomata.com/robots/adt.Ar2_1.0.jar&lt;br /&gt;
adt.Ar2 1.1,http://robocode-archive.strangeautomata.com/robots/adt.Ar2_1.1.jar&lt;br /&gt;
agd.Mooserwirt2 2.7,http://robocode-archive.strangeautomata.com/robots/agd.Mooserwirt2_2.7.jar&lt;br /&gt;
agrach.Dalek 1.0,https://github.com/aleksey-zhidkov/rc-repo-mirror/raw/master/agrach.Dalek_1.0.jar&lt;br /&gt;
ags.surreptitious.MiniSurreptitious 0.0.1,http://robocode-archive.strangeautomata.com/robots/ags.surreptitious.MiniSurreptitious_0.0.1.jar&lt;br /&gt;
ags.Glacier 0.2.11,http://robocode-archive.strangeautomata.com/robots/ags.Glacier_0.2.11.jar&lt;br /&gt;
ahf.NanoAndrew .4,http://robocode-archive.strangeautomata.com/robots/ahf.NanoAndrew_.4.jar&lt;br /&gt;
ahr.ice.Ice 1.0.2,http://robocode-archive.strangeautomata.com/robots/ahr.ice.Ice_1.0.2.jar&lt;br /&gt;
ak.Fermat 2.0,http://robocode-archive.strangeautomata.com/robots/ak.Fermat_2.0.jar&lt;br /&gt;
alpha.BlackIce 1.0,http://robocode-archive.strangeautomata.com/robots/alpha.BlackIce_1.0.jar&lt;br /&gt;
alpha.RainingFire 1.0,http://robocode-archive.strangeautomata.com/robots/alpha.RainingFire_1.0.jar&lt;br /&gt;
amk.ChumbaMini 0.2,http://robocode-archive.strangeautomata.com/robots/amk.ChumbaMini_0.2.jar&lt;br /&gt;
amk.ChumbaWumba 0.3,http://robocode-archive.strangeautomata.com/robots/amk.ChumbaWumba_0.3.jar&lt;br /&gt;
amk.jointstrike.JointStrike 0.2,http://robocode-archive.strangeautomata.com/robots/amk.jointstrike.JointStrike_0.2.jar&lt;br /&gt;
amk.ShizzleStiX.ShizzleStiX 0.6,http://robocode-archive.strangeautomata.com/robots/amk.ShizzleStiX.ShizzleStiX_0.6.jar&lt;br /&gt;
amk.superstrike.SuperStrike 0.3,http://robocode-archive.strangeautomata.com/robots/amk.superstrike.SuperStrike_0.3.jar&lt;br /&gt;
amk.Punbot.Punbot 0.01,http://robocode-archive.strangeautomata.com/robots/amk.Punbot.Punbot_0.01.jar&lt;br /&gt;
amz.NanoClone 1.41,http://robocode-archive.strangeautomata.com/robots/amz.NanoClone_1.41.jar&lt;br /&gt;
ap.Frederick 1.1,http://robocode-archive.strangeautomata.com/robots/ap.Frederick_1.1.jar&lt;br /&gt;
apc.botM 3.0,http://robocode-archive.strangeautomata.com/robots/apc.botM_3.0.jar&lt;br /&gt;
apc.Colossus2 0.17,http://robocode-archive.strangeautomata.com/robots/apc.Colossus2_0.17.jar&lt;br /&gt;
apc.LeeroyJenkins2 1.0,http://robocode-archive.strangeautomata.com/robots/apc.LeeroyJenkins2_1.0.jar&lt;br /&gt;
apollokidd.ApolloKidd 0.9,http://robocode-archive.strangeautomata.com/robots/apollokidd.ApolloKidd_0.9.jar&lt;br /&gt;
ara.Shera 0.88,http://robocode-archive.strangeautomata.com/robots/ara.Shera_0.88.jar&lt;br /&gt;
arthord.MannyPacquiao Beta,http://robocode-archive.strangeautomata.com/robots/arthord.MannyPacquiao_Beta.jar&lt;br /&gt;
arthord.NanoSatanMelee Beta,http://robocode-archive.strangeautomata.com/robots/arthord.NanoSatanMelee_Beta.jar&lt;br /&gt;
ary.Swarm 1.1,http://robocode-archive.strangeautomata.com/robots/ary.Swarm_1.1.jar&lt;br /&gt;
as.FrankTheTank 1.3,http://robocode-archive.strangeautomata.com/robots/as.FrankTheTank_1.3.jar&lt;br /&gt;
asd.Cthulhu 1.3,http://robocode-archive.strangeautomata.com/robots/asd.Cthulhu_1.3.jar&lt;br /&gt;
awesomeness.Elite 1.0,http://robocode-archive.strangeautomata.com/robots/awesomeness.Elite_1.0.jar&lt;br /&gt;
axeBots.HataMoto 3.09,http://robocode-archive.strangeautomata.com/robots/axeBots.HataMoto_3.09.jar&lt;br /&gt;
ayk.WallHugger 1.0,http://robocode-archive.strangeautomata.com/robots/ayk.WallHugger_1.0.jar&lt;br /&gt;
az.Ololobot 0.2.4,https://github.com/alexei-zayakin/robocode/raw/master/az.Ololobot_0.2.4.jar&lt;br /&gt;
baal.nano.N 1.42,http://robocode-archive.strangeautomata.com/robots/baal.nano.N_1.42.jar&lt;br /&gt;
bayen.nut.Squirrel 1.615,http://robocode-archive.strangeautomata.com/robots/bayen.nut.Squirrel_1.615.jar&lt;br /&gt;
bayen.UbaMicro 1.4,http://robocode-archive.strangeautomata.com/robots/bayen.UbaMicro_1.4.jar&lt;br /&gt;
bigpete.Stewie 1.0,http://robocode-archive.strangeautomata.com/robots/bigpete.Stewie_1.0.jar&lt;br /&gt;
br2.MobyDickBot 1.6,http://robocode-archive.strangeautomata.com/robots/br2.MobyDickBot_1.6.jar&lt;br /&gt;
brainfade.melee.Dusk 0.44,http://robocode-archive.strangeautomata.com/robots/brainfade.melee.Dusk_0.44.jar&lt;br /&gt;
brainfade.melee.Genghis 0.36,http://robocode-archive.strangeautomata.com/robots/brainfade.melee.Genghis_0.36.jar&lt;br /&gt;
bts.mega.Gnarly 1.4,http://robocode-archive.strangeautomata.com/robots/bts.mega.Gnarly_1.4.jar&lt;br /&gt;
bts.wiki.RipCurl 0.9b,http://robocode-archive.strangeautomata.com/robots/bts.wiki.RipCurl_0.9b.jar&lt;br /&gt;
bvh.fnr.Fenrir 0.36l,http://robocode-archive.strangeautomata.com/robots/bvh.fnr.Fenrir_0.36l.jar&lt;br /&gt;
bvh.fry.Freya 0.82,http://robocode-archive.strangeautomata.com/robots/bvh.fry.Freya_0.82.jar&lt;br /&gt;
bvh.micro.Freya 0.3,http://robocode-archive.strangeautomata.com/robots/bvh.micro.Freya_0.3.jar&lt;br /&gt;
bvh.mini.Fenrir 0.39,http://robocode-archive.strangeautomata.com/robots/bvh.mini.Fenrir_0.39.jar&lt;br /&gt;
bvh.mini.Freya 0.55,http://robocode-archive.strangeautomata.com/robots/bvh.mini.Freya_0.55.jar&lt;br /&gt;
bwbaugh.nano.Tirunculus 0.0.0a,http://robocode-archive.strangeautomata.com/robots/bwbaugh.nano.Tirunculus_0.0.0a.jar&lt;br /&gt;
bzdp.BoxCar 2.0,http://robocode-archive.strangeautomata.com/robots/bzdp.BoxCar_2.0.jar&lt;br /&gt;
bzdp.Pansy 2.1,http://robocode-archive.strangeautomata.com/robots/bzdp.Pansy_2.1.jar&lt;br /&gt;
caimano.Furia_Ceca 0.22,http://robocode-archive.strangeautomata.com/robots/caimano.Furia_Ceca_0.22.jar&lt;br /&gt;
catcat20.Lambda 0.024,https://drive.google.com/uc?export=download&amp;amp;id=1KgQRpAJVYtrnX_M0YCUT3iS1SjInSvcX&lt;br /&gt;
catcat20.Rabbit 0.001,https://drive.google.com/uc?export=download&amp;amp;id=1Cz81GQX7u9qe0muFXWx4qm-lNOA0MXeE&lt;br /&gt;
catcat20.shape.Theta 0.018,https://drive.google.com/uc?export=download&amp;amp;id=1EXcQ5PlX7m2alnvlISipPF2ywsWPMSA0&lt;br /&gt;
cb.fire.Firestarter 2.0f,https://www.dropbox.com/s/96qhyuh648ufuju/cb.fire.Firestarter_2.0f.jar?dl=1&lt;br /&gt;
cb.nano.Insomnia 1.0,https://www.dropbox.com/s/3sl5bz9knsgxewe/cb.nano.Insomnia_1.0.jar?dl=1&lt;br /&gt;
cf.RiO.RiOx 4.2.1,http://robocode-archive.strangeautomata.com/robots/cf.RiO.RiOx_4.2.1.jar&lt;br /&gt;
cli.Dancer 1.1,http://robocode-archive.strangeautomata.com/robots/cli.Dancer_1.1.jar&lt;br /&gt;
cli.WasteOfAmmo 1.0,http://robocode-archive.strangeautomata.com/robots/cli.WasteOfAmmo_1.0.jar&lt;br /&gt;
co.edu.usb.rc.LidisTron 1.0,http://robocode-archive.strangeautomata.com/robots/co.edu.usb.rc.LidisTron_1.0.jar&lt;br /&gt;
com.blogspot.malinkody.DestrobotMalin 1.0,http://robocode-archive.strangeautomata.com/robots/com.blogspot.malinkody.DestrobotMalin_1.0.jar&lt;br /&gt;
com.cgarias.rc.AdvancedTrackerII 1.0,http://robocode-archive.strangeautomata.com/robots/com.cgarias.rc.AdvancedTrackerII_1.0.jar&lt;br /&gt;
com.cohesiva.robocode.ManOwaR 1.0,http://robocode-archive.strangeautomata.com/robots/com.cohesiva.robocode.ManOwaR_1.0.jar&lt;br /&gt;
com.spp.robocode.MostlyHarmless 010,https://drive.google.com/u/0/uc?id=1VAJUrVH2LCj94MJyQXBL9w8NtNeSoCtm&amp;amp;export=download&lt;br /&gt;
com.syncleus.robocode.Dreadnaught 0.1,http://robocode-archive.strangeautomata.com/robots/com.syncleus.robocode.Dreadnaught_0.1.jar&lt;br /&gt;
conscience.Electron 1.3g,http://robocode-archive.strangeautomata.com/robots/conscience.Electron_1.3g.jar&lt;br /&gt;
cre.Karolos 0.32,http://robocode-archive.strangeautomata.com/robots/cre.Karolos_0.32.jar&lt;br /&gt;
cs.Grudge 1.0,http://robocode-archive.strangeautomata.com/robots/cs.Grudge_1.0.jar&lt;br /&gt;
cs.sheldor.Talon 1.1,http://robocode-archive.strangeautomata.com/robots/cs.sheldor.Talon_1.1.jar&lt;br /&gt;
cs.Wren 1.0,http://robocode-archive.strangeautomata.com/robots/cs.Wren_1.0.jar&lt;br /&gt;
css.Delitioner 0.11,http://robocode-archive.strangeautomata.com/robots/css.Delitioner_0.11.jar&lt;br /&gt;
cvt.Firsty 1.0,http://robocode-archive.strangeautomata.com/robots/cvt.Firsty_1.0.jar&lt;br /&gt;
cw.megas.Blade 0.8,http://robocode-archive.strangeautomata.com/robots/cw.megas.Blade_0.8.jar&lt;br /&gt;
cx.BlestPain 1.41,http://robocode-archive.strangeautomata.com/robots/cx.BlestPain_1.41.jar&lt;br /&gt;
cx.mini.Nimrod 0.55,http://robocode-archive.strangeautomata.com/robots/cx.mini.Nimrod_0.55.jar&lt;br /&gt;
cx.Princess 1.0,http://robocode-archive.strangeautomata.com/robots/cx.Princess_1.0.jar&lt;br /&gt;
d414.nano.Quantum 1.0.0,https://drive.google.com/uc?export=download&amp;amp;id=1LkS7bsm_aW3NZTZ3WFX6mJfRhkpF-de5&lt;br /&gt;
dans.Cinnamon 1.2,http://robocode-archive.strangeautomata.com/robots/dans.Cinnamon_1.2.jar&lt;br /&gt;
darkcanuck.B26354 1.06,http://robocode-archive.strangeautomata.com/robots/darkcanuck.B26354_1.06.jar&lt;br /&gt;
darkcanuck.Leon 1.01,http://robocode-archive.strangeautomata.com/robots/darkcanuck.Leon_1.01.jar&lt;br /&gt;
darwinsnightmare.DNGEN474UI85390C20S0R528 1.0,http://robocode-archive.strangeautomata.com/robots/darwinsnightmare.DNGEN474UI85390C20S0R528_1.0.jar&lt;br /&gt;
davidalves.net.DuelistMicroMelee 1.4,http://robocode-archive.strangeautomata.com/robots/davidalves.net.DuelistMicroMelee_1.4.jar&lt;br /&gt;
davidalves.net.DuelistMiniMelee 1.2,http://robocode-archive.strangeautomata.com/robots/davidalves.net.DuelistMiniMelee_1.2.jar&lt;br /&gt;
davidalves.net.DuelistNanoMelee 1.01,http://robocode-archive.strangeautomata.com/robots/davidalves.net.DuelistNanoMelee_1.01.jar&lt;br /&gt;
davidalves.Phoenix 0.54,https://github.com/aleksey-zhidkov/rc-repo-mirror/raw/master/davidalves.Phoenix_0.54.jar&lt;br /&gt;
DBall.Anarchy 0.1,http://robocode-archive.strangeautomata.com/robots/DBall.Anarchy_0.1.jar&lt;br /&gt;
DBall.NUKE 0.1,http://robocode-archive.strangeautomata.com/robots/DBall.NUKE_0.1.jar&lt;br /&gt;
dcs.Eater_of_Worlds 1.1.3-A,http://robocode-archive.strangeautomata.com/robots/dcs.Eater_of_Worlds_1.1.3-A.jar&lt;br /&gt;
deewiant.Anomaly 0.2,http://robocode-archive.strangeautomata.com/robots/deewiant.Anomaly_0.2.jar&lt;br /&gt;
de.simpleworks.robocode.bots.swiBot 1.0,http://robocode-archive.strangeautomata.com/robots/de.simpleworks.robocode.bots.swiBot_1.0.jar&lt;br /&gt;
de.simpleworks.robocode.bots.swiBot 1.1,http://robocode-archive.strangeautomata.com/robots/de.simpleworks.robocode.bots.swiBot_1.1.jar&lt;br /&gt;
dft.Calliope 5.6,http://robocode-archive.strangeautomata.com/robots/dft.Calliope_5.6.jar&lt;br /&gt;
disan.Chair 2.2.0,http://robocode-archive.strangeautomata.com/robots/disan.Chair_2.2.0.jar&lt;br /&gt;
divineomega.DivineBot 1.9.4.5,https://dl.dropboxusercontent.com/s/sk33qkpx7cfcmv6/divineomega.DivineBot_1.9.4.5.jar?dl=1&amp;amp;token_hash=AAGI4C3Fm8km-0aLNU3pUVE1JEZqx8UDV6qk5s8PoRgjhg&lt;br /&gt;
divineomega.TrialBot 0.003,https://dl.dropboxusercontent.com/s/an44muntp8f0p6h/divineomega.TrialBot_0.003.jar?token_hash=AAG5XTuv2fkEkTYhNIEJ0zre-SpWgK-jvKNqQ120pFeYSA&amp;amp;dl=1&lt;br /&gt;
djc.DynaBot 0.1.1,http://robocode-archive.strangeautomata.com/robots/djc.DynaBot_0.1.1.jar&lt;br /&gt;
djdjdj.NanoSkunk10 1.0,http://robocode-archive.strangeautomata.com/robots/djdjdj.NanoSkunk10_1.0.jar&lt;br /&gt;
dl.BetterWalls 1.0,http://robocode-archive.strangeautomata.com/robots/dl.BetterWalls_1.0.jar&lt;br /&gt;
dmh.robocode.robot.BlackDeath 9.2,https://www.dropbox.com/s/tads4vk7jrgmv6u/dmh.robocode.robot.BlackDeath_9.2.jar?dl=1&lt;br /&gt;
dmh.robocode.robot.RedDwarf 0.4,https://www.dropbox.com/s/n0k5n5iyr66ssut/dmh.robocode.robot.RedDwarf_0.4.jar?dl=1&lt;br /&gt;
donjezza.Jezza 1.0,http://robocode-archive.strangeautomata.com/robots/donjezza.Jezza_1.0.jar&lt;br /&gt;
donjezza.Muncho 1.0,http://robocode-archive.strangeautomata.com/robots/donjezza.Muncho_1.0.jar&lt;br /&gt;
drd.Dreadknoght 0.9,http://robocode-archive.strangeautomata.com/robots/drd.Dreadknoght_0.9.jar&lt;br /&gt;
ds.Oo 2.2,http://robocode-archive.strangeautomata.com/robots/ds.Oo_2.2.jar&lt;br /&gt;
dsw.StaticD 1.0,http://robocode-archive.strangeautomata.com/robots/dsw.StaticD_1.0.jar&lt;br /&gt;
DTF.Kludgy 1.2b,http://robocode-archive.strangeautomata.com/robots/DTF.Kludgy_1.2b.jar&lt;br /&gt;
dummy.micro.Sparrow 2.5,http://robocode-archive.strangeautomata.com/robots/dummy.micro.Sparrow_2.5.jar&lt;br /&gt;
dummy.mini.Scimitar 1.01,http://robocode-archive.strangeautomata.com/robots/dummy.mini.Scimitar_1.01.jar&lt;br /&gt;
EBBU.Sim2 1.02,http://robocode-archive.strangeautomata.com/robots/EBBU.Sim2_1.02.jar&lt;br /&gt;
edu.otg.spr.TheTeacher 1.2,http://robocode-archive.strangeautomata.com/robots/edu.otg.spr.TheTeacher_1.2.jar&lt;br /&gt;
eem.EvBot v4.6.16,http://robocode-archive.strangeautomata.com/robots/eem.EvBot_v4.6.16.jar&lt;br /&gt;
eem.EvBotNG v12.8,http://robocode-archive.strangeautomata.com/robots/eem.EvBotNG_v12.8.jar&lt;br /&gt;
eem.IWillFireNoBullet v2.8,http://robocode-archive.strangeautomata.com/robots/eem.IWillFireNoBullet_v2.8.jar&lt;br /&gt;
EH.Eagle 1.0.6,http://robocode-archive.strangeautomata.com/robots/EH.Eagle_1.0.6.jar&lt;br /&gt;
ejb.Polaris 1.0.1,http://robocode-archive.strangeautomata.com/robots/ejb.Polaris_1.0.1.jar&lt;br /&gt;
el.JumpShoot 0.2,http://robocode-archive.strangeautomata.com/robots/el.JumpShoot_0.2.jar&lt;br /&gt;
eld.Hmm 1.0,http://robocode-archive.strangeautomata.com/robots/eld.Hmm_1.0.jar&lt;br /&gt;
emp.Yngwie 1.11,http://robocode-archive.strangeautomata.com/robots/emp.Yngwie_1.11.jar&lt;br /&gt;
erdnis.Rover 0.3,http://robocode-archive.strangeautomata.com/robots/erdnis.Rover_0.3.jar&lt;br /&gt;
et.Predator 1.8,http://robocode-archive.strangeautomata.com/robots/et.Predator_1.8.jar&lt;br /&gt;
evd.X1 0.01,http://robocode-archive.strangeautomata.com/robots/evd.X1_0.01.jar&lt;br /&gt;
exauge.GateKeeper 1.1.121g,http://robocode-archive.strangeautomata.com/robots/exauge.GateKeeper_1.1.121g.jar&lt;br /&gt;
fire219.CatBot 1.0,https://dl.dropbox.com/s/bhboah2ps3r9xuj/fire219.CatBot_1.0.jar?dl=0&lt;br /&gt;
florent.XSeries.X2 0.12,http://wesley3.free.fr/florent.XSeries.X2_0.12.jar&lt;br /&gt;
fm.claire 1.7,http://robocode-archive.strangeautomata.com/robots/fm.claire_1.7.jar&lt;br /&gt;
fm.mammillarias 1.3,http://robocode-archive.strangeautomata.com/robots/fm.mammillarias_1.3.jar&lt;br /&gt;
fnc.bandit.Bandit 5.2.0,http://robocode-archive.strangeautomata.com/robots/fnc.bandit.Bandit_5.2.0.jar&lt;br /&gt;
fowl3628800.LightningBolt 2.6.0,http://robocode-archive.strangeautomata.com/robots/fowl3628800.LightningBolt_2.6.0.jar&lt;br /&gt;
franzor.Lizt 1.3.1,http://robocode-archive.strangeautomata.com/robots/franzor.Lizt_1.3.1.jar&lt;br /&gt;
fullsail.LaxativeTeaTwo 1.0,http://robocode-archive.strangeautomata.com/robots/fullsail.LaxativeTeaTwo_1.0.jar&lt;br /&gt;
fullsail.TimbotNoPrediction 1.0,http://robocode-archive.strangeautomata.com/robots/fullsail.TimbotNoPrediction_1.0.jar&lt;br /&gt;
fullsail.SweetTea 1.1,http://robocode-archive.strangeautomata.com/robots/fullsail.SweetTea_1.1.jar&lt;br /&gt;
fwb.Nine 1.0.1,http://robocode-archive.strangeautomata.com/robots/fwb.Nine_1.0.1.jar&lt;br /&gt;
GarmBox.Anger 1.0,https://drive.google.com/uc?export=download&amp;amp;id=12mUMd9tKHdCAV_JYVSuyJfkwVl6HZ42y&lt;br /&gt;
GarmBox.Oranges 1.0,https://drive.google.com/uc?export=download&amp;amp;id=1b6sXfphAg_ARqbZ1-Kg2pzILY2jObElv&lt;br /&gt;
Gecko.ultimateGeckoBot 1.0,http://robocode-archive.strangeautomata.com/robots/Gecko.ultimateGeckoBot_1.0.jar&lt;br /&gt;
germ.TheMind .2,http://robocode-archive.strangeautomata.com/robots/germ.TheMind_.2.jar&lt;br /&gt;
gg.Squaraus 0.6,http://robocode-archive.strangeautomata.com/robots/gg.Squaraus_0.6.jar&lt;br /&gt;
gg.Wolverine 2.0,http://robocode-archive.strangeautomata.com/robots/gg.Wolverine_2.0.jar&lt;br /&gt;
gh.Griezel 0.5.2,http://robocode-archive.strangeautomata.com/robots/gh.Griezel_0.5.2.jar&lt;br /&gt;
gh.micro.Gruweltje 0.7,http://robocode-archive.strangeautomata.com/robots/gh.micro.Gruweltje_0.7.jar&lt;br /&gt;
gh.mini.Griezel 0.2,http://robocode-archive.strangeautomata.com/robots/gh.mini.Griezel_0.2.jar&lt;br /&gt;
gh.mini.GrubbmOne 1.0,http://robocode-archive.strangeautomata.com/robots/gh.mini.GrubbmOne_1.0.jar&lt;br /&gt;
gh.mini.Gruwel 0.9,http://robocode-archive.strangeautomata.com/robots/gh.mini.Gruwel_0.9.jar&lt;br /&gt;
gh.nano.Grofvuil 0.2,http://robocode-archive.strangeautomata.com/robots/gh.nano.Grofvuil_0.2.jar&lt;br /&gt;
ghent.ArthurPanzergon 1.0.0,http://franck.jousseaume.free.fr/robocode/ArthurPanzergon_1.0.0.jar&lt;br /&gt;
gimp.GimpBot 0.1,http://robocode-archive.strangeautomata.com/robots/gimp.GimpBot_0.1.jar&lt;br /&gt;
gjr.Cephalosporin 0.1,http://robocode-archive.strangeautomata.com/robots/gjr.Cephalosporin_0.1.jar&lt;br /&gt;
goblin.Bender 2.4,http://robocode-archive.strangeautomata.com/robots/goblin.Bender_2.4.jar&lt;br /&gt;
gre.svman4.Leonidas 1.3.2,https://drive.google.com/uc?export=download&amp;amp;id=1ZeSWWgjvqsnq-44JyQR776ebBuOnTTd3&lt;br /&gt;
gre.svman4.Morfeas 1.4.1,https://drive.google.com/uc?export=download&amp;amp;id=1D4P_zT0zqxasqpCNoFB34KikbJKVXTn0&lt;br /&gt;
Grystrion.RandomTrackerNOREV 1.0,https://www.dropbox.com/s/9ym5golnwurhfxw/Grystrion.RandomTrackerNOREV_1.0.jar?dl=1&lt;br /&gt;
Grystrion.TrackerWO 1.0,https://www.dropbox.com/s/f1j88yf69zn37jp/Grystrion.TrackerWO_1.0.jar?dl=1&lt;br /&gt;
hvilela.HVilela 0.9,http://robocode-archive.strangeautomata.com/robots/hvilela.HVilela_0.9.jar&lt;br /&gt;
ICS4U1.Patrick_White_Schrodinger 1.1,http://robocode-archive.strangeautomata.com/robots/ICS4U1.Patrick_White_Schrodinger_1.1.jar&lt;br /&gt;
inonit.robocode.javascript.MyFirstRobot 1.1,https://github.com/davidpcaldwell/roborumble-participants/blob/master/inonit.robocode.javascript.MyFirstRobot_1.1.jar?raw=true&lt;br /&gt;
intruder.PrairieWolf 2.61,http://robocode-archive.strangeautomata.com/robots/intruder.PrairieWolf_2.61.jar&lt;br /&gt;
jab.DiamondStealer 5,http://robocode-archive.strangeautomata.com/robots/jab.DiamondStealers_5.jar&lt;br /&gt;
jangs.ns51 1.0,http://robocode-archive.strangeautomata.com/robots/jangs.ns51_1.0.jar&lt;br /&gt;
jaybot.adv.bots.JayBot 2.0,http://robocode-archive.strangeautomata.com/robots/jaybot.adv.bots.JayBot_2.0.jar&lt;br /&gt;
jaybot.bots.Oddball 4.0,http://robocode-archive.strangeautomata.com/robots/jaybot.bots.Oddball_4.0.jar&lt;br /&gt;
jcs.Seth 1.8,http://robocode-archive.strangeautomata.com/robots/jcs.Seth_1.8.jar&lt;br /&gt;
jdw.Hurricane 1.4,http://robocode-archive.strangeautomata.com/robots/jdw.Hurricane_1.4.jar&lt;br /&gt;
jekl.StoneGhost 0.7,http://robocode-archive.strangeautomata.com/robots/jekl.StoneGhost_0.7.jar&lt;br /&gt;
jeremyreeder.collective.Prophet 5,http://robocode-archive.strangeautomata.com/robots/jeremyreeder.collective.Prophet_5.jar&lt;br /&gt;
jeremyreeder.Vincent 2011.12.09,http://robocode-archive.strangeautomata.com/robots/jeremyreeder.Vincent_2011.12.09.jar&lt;br /&gt;
jje.BagPuss 1.2,http://robocode-archive.strangeautomata.com/robots/jje.BagPuss_1.2.jar&lt;br /&gt;
jk.melee.Neuromancer 7.12,https://www.dropbox.com/s/ctjzl08u2f3x3r0/jk.melee.Neuromancer_7.12.jar?dl=1&lt;br /&gt;
jlm.javaDisturbance 0.59,http://robocode-archive.strangeautomata.com/robots/jlm.javaDisturbance_0.59.jar&lt;br /&gt;
joe.ADinosaur 1.0,http://robocode-archive.strangeautomata.com/robots/joe.ADinosaur_1.0.jar&lt;br /&gt;
jok.PheonixM 0.1.2,http://robocode-archive.strangeautomata.com/robots/jok.PheonixM_0.1.2.jar&lt;br /&gt;
josago.Jorgito 0.16,http://robocode-archive.strangeautomata.com/robots/josago.Jorgito_0.16.jar&lt;br /&gt;
jp.Perpy 16.0,http://robocode-archive.strangeautomata.com/robots/jp.Perpy_16.0.jar&lt;br /&gt;
jrm.Test0 1.0,http://robocode-archive.strangeautomata.com/robots/jrm.Test0_1.0.jar&lt;br /&gt;
js.PinBall 1.6,http://robocode-archive.strangeautomata.com/robots/js.PinBall_1.6.jar&lt;br /&gt;
jsal.Jsalbot 1.0,http://robocode-archive.strangeautomata.com/robots/jsal.Jsalbot_1.0.jar&lt;br /&gt;
justin.Mallais 14.0,http://robocode-archive.strangeautomata.com/robots/justin.Mallais_14.0.jar&lt;br /&gt;
justin.DemonicRage 3.4,http://robocode-archive.strangeautomata.com/robots/justin.DemonicRage_3.4.jar&lt;br /&gt;
jwirde.Gort 2.0,http://robocode-archive.strangeautomata.com/robots/jwirde.Gort_2.0.jar&lt;br /&gt;
jwst.DAD.DarkAndDarker 1.1,http://robocode-archive.strangeautomata.com/robots/jwst.DAD.DarkAndDarker_1.1.jar&lt;br /&gt;
kano.gamma.KanoGamma 1.8,http://robocode-archive.strangeautomata.com/robots/kano.gamma.KanoGamma_1.8.jar&lt;br /&gt;
kawigi.micro.Shiz 1.1,http://robocode-archive.strangeautomata.com/robots/kawigi.micro.Shiz_1.1.jar&lt;br /&gt;
kawigi.mini.Coriantumr 1.1,http://robocode-archive.strangeautomata.com/robots/kawigi.mini.Coriantumr_1.1.jar&lt;br /&gt;
kawigi.mini.Fhqwhgads 1.1,http://robocode-archive.strangeautomata.com/robots/kawigi.mini.Fhqwhgads_1.1.jar&lt;br /&gt;
kawigi.nano.Lib 1.0,http://robocode-archive.strangeautomata.com/robots/kawigi.nano.Lib_1.0.jar&lt;br /&gt;
kawigi.robot.Girl 1.2,http://robocode-archive.strangeautomata.com/robots/kawigi.robot.Girl_1.2.jar&lt;br /&gt;
kawigi.sbf.FloodHT 0.9.2,http://robocode-archive.strangeautomata.com/robots/kawigi.sbf.FloodHT_0.9.2.jar&lt;br /&gt;
kawigi.sbf.FloodSonnet 0.9,http://robocode-archive.strangeautomata.com/robots/kawigi.sbf.FloodSonnet_0.9.jar&lt;br /&gt;
kawigi.spare.SpareParts 0.7.6nosnd,http://robocode-archive.strangeautomata.com/robots/kawigi.spare.SpareParts_0.7.6nosnd.jar&lt;br /&gt;
kc.micro.Figment 1.0,https://drive.google.com/uc?export=download&amp;amp;id=149sdMTNnpP57iGcIZ995AeZnbJHX5EL-&lt;br /&gt;
kc.mini.Mirage 0.2,https://drive.google.com/uc?export=download&amp;amp;id=1d2pv16MB2BXdAODf2mTGpS-yRIYOJJcT&lt;br /&gt;
kdf.KoulDestroyer 1.0,https://icarus.cs.weber.edu/~kfeuz/downloads/kdf.KoulDestroyer_1.0.jar&lt;br /&gt;
kid.Gladiator .7.2,http://robocode-archive.strangeautomata.com/robots/kid.Gladiator_.7.2.jar&lt;br /&gt;
kid.test.NightFox .2,http://robocode-archive.strangeautomata.com/robots/kid.test.NightFox_.2.jar&lt;br /&gt;
KiraNL.Chupacabra 0.4,http://robocode-archive.strangeautomata.com/robots/KiraNL.Chupacabra_0.4.jar&lt;br /&gt;
kinsen.melee.Angsaichmophobia 1.8c,http://robocode-archive.strangeautomata.com/robots/kinsen.melee.Angsaichmophobia_1.8c.jar&lt;br /&gt;
Krabb.akim2.Akim2 1.1b,http://robocode-archive.strangeautomata.com/robots/Krabb.akim2.Akim2_1.1b.jar&lt;br /&gt;
Krabb.sliNk.Garm 0.9u,http://robocode-archive.strangeautomata.com/robots/Krabb.sliNk.Garm_0.9u.jar&lt;br /&gt;
krillr.mini.JointStrike 2.0.0,http://robocode-archive.strangeautomata.com/robots/krillr.mini.JointStrike_2.0.0.jar&lt;br /&gt;
kurios.DOSexe .9a,http://robocode-archive.strangeautomata.com/robots/kurios.DOSexe_.9a.jar&lt;br /&gt;
kurios.DOSexe .9b,http://robocode-archive.strangeautomata.com/robots/kurios.DOSexe_.9b.jar&lt;br /&gt;
kvk.HebusLeTroll 0.35,http://robocode-archive.strangeautomata.com/robots/kvk.HebusLeTroll_0.35.jar&lt;br /&gt;
labg.Cataclysm 2.05,http://robocode-archive.strangeautomata.com/robots/labg.Cataclysm_2.05.jar&lt;br /&gt;
lambdaxy.TBot 0.1,http://robocode-archive.strangeautomata.com/robots/lambdaxy.TBot_0.1.jar&lt;br /&gt;
lessonz.robocode.Oz 0.5.0,http://robocode-archive.strangeautomata.com/robots/lessonz.robocode.Oz_0.5.0.jar&lt;br /&gt;
lmk.ACPFinal 0.1,http://robocode-archive.strangeautomata.com/robots/lmk.ACPFinal_0.1.jar&lt;br /&gt;
Lo_Ian.Gandalf_V4 4.0,http://robocode-archive.strangeautomata.com/robots/Lo_Ian.Gandalf_V4_4.0.jar&lt;br /&gt;
logiblocs.SittingDroid 1.0,http://robocode-archive.strangeautomata.com/robots/logiblocs.SittingDroid_1.0.jar&lt;br /&gt;
lorneswork.Predator 1.0,http://robocode-archive.strangeautomata.com/robots/lorneswork.Predator_1.0.jar&lt;br /&gt;
lrem.Spectre 0.4.4,http://robocode-archive.strangeautomata.com/robots/lrem.Spectre_0.4.4.jar&lt;br /&gt;
lrem.micro.MoggFanatic 0.2,http://robocode-archive.strangeautomata.com/robots/lrem.micro.MoggFanatic_0.2.jar&lt;br /&gt;
lrem.micro.SpikeSoldier 0.4,http://robocode-archive.strangeautomata.com/robots/lrem.micro.SpikeSoldier_0.4.jar&lt;br /&gt;
lunchie.Lunchbox 0.93,http://robocode-archive.strangeautomata.com/robots/lunchie.Lunchbox_0.93.jar&lt;br /&gt;
lxx.ConceptA 0.8,https://github.com/aleksey-zhidkov/ConceptA/raw/master/builds/lxx.ConceptA_0.8.jar&lt;br /&gt;
m3thos.Eva00 1.1,http://robocode-archive.strangeautomata.com/robots/m3thos.Eva00_1.1.jar&lt;br /&gt;
m3thos.Eva02 0.7.1,http://robocode-archive.strangeautomata.com/robots/m3thos.Eva02_0.7.1.jar&lt;br /&gt;
m3thos.mini.Eva01 0.5.5,http://robocode-archive.strangeautomata.com/robots/m3thos.mini.Eva01_0.5.5.jar&lt;br /&gt;
maribo.FollowFire 1,http://robocode-archive.strangeautomata.com/robots/maribo.FollowFire_1.jar&lt;br /&gt;
maribo.IotaCT 1.1,http://robocode-archive.strangeautomata.com/robots/maribo.IotaCT_1.1.jar&lt;br /&gt;
maribo.melee.BMV 0.1,http://robocode-archive.strangeautomata.com/robots/maribo.melee.BMV_0.1.jar&lt;br /&gt;
maribo.mini.MiniQuester 0.1,https://dl.dropboxusercontent.com/s/67bfz8fhhrnc34j/maribo.mini.MiniQuester_0.1.jar&lt;br /&gt;
maribo.Quester 0.3,https://dl.dropboxusercontent.com/s/3jtoh2u1qdulof4/maribo.Quester_0.3.jar&lt;br /&gt;
matt.advanced.Katana 1.0,http://robocode-archive.strangeautomata.com/robots/matt.advanced.Katana_1.0.jar&lt;br /&gt;
matt.UnderDark3 2.4.34,http://robocode-archive.strangeautomata.com/robots/matt.UnderDark3_2.4.34.jar&lt;br /&gt;
mb.Beast 0.1,http://robocode-archive.strangeautomata.com/robots/mb.Beast_0.1.jar&lt;br /&gt;
mbh.Mbh 0.1,http://robocode-archive.strangeautomata.com/robots/mbh.Mbh_0.1.jar&lt;br /&gt;
mbro.Detektor3 0.1.1,http://robocode-archive.strangeautomata.com/robots/mbro.Detektor3_0.1.1.jar&lt;br /&gt;
mc2.enemy.Original 0.9,http://robocode-archive.strangeautomata.com/robots/mc2.enemy.Original_0.9.jar&lt;br /&gt;
mk.Alpha 0.2.1,http://robocode-archive.strangeautomata.com/robots/mk.Alpha_0.2.1.jar&lt;br /&gt;
mld.DustBunny 3.8,http://robocode-archive.strangeautomata.com/robots/mld.DustBunny_3.8.jar&lt;br /&gt;
mld.Infinity 2.2,http://robocode-archive.strangeautomata.com/robots/mld.Infinity_2.2.jar&lt;br /&gt;
mld.Wisdom 1.0,http://robocode-archive.strangeautomata.com/robots/mld.Wisdom_1.0.jar&lt;br /&gt;
mme.NikeEnhanced 2.0,http://robocode-archive.strangeautomata.com/robots/mme.NikeEnhanced_2.0.jar&lt;br /&gt;
mn.nano.perceptual.Impact 1.3.0,https://www.dropbox.com/s/njuuaycr3qswlgu/mn.nano.perceptual.Impact_1.3.0.jar?dl=1&lt;br /&gt;
mn.Combat 3.25.0,https://www.dropbox.com/s/5iufszjp28qfptw/mn.Combat_3.25.0.jar?dl=1&lt;br /&gt;
morbid.MorbidPriest 1.0,http://robocode-archive.strangeautomata.com/robots/morbid.MorbidPriest_1.0.jar&lt;br /&gt;
ms.Ares 0.19,http://robocode-archive.strangeautomata.com/robots/ms.Ares_0.19.jar&lt;br /&gt;
myl.micro.Troodon 1.10,http://robocode-archive.strangeautomata.com/robots/myl.micro.Troodon_1.10.jar&lt;br /&gt;
myl.nano.Graviton 1.10,http://robocode-archive.strangeautomata.com/robots/myl.nano.Graviton_1.10.jar&lt;br /&gt;
myl.nano.KomoriNinja 1.1,http://robocode-archive.strangeautomata.com/robots/myl.nano.KomoriNinja_1.1.jar&lt;br /&gt;
mym.EdgeStalker 1.0,http://robocode-archive.strangeautomata.com/robots/mym.EdgeStalker_1.0.jar&lt;br /&gt;
mz.AntiGrav 1.0,http://robocode-archive.strangeautomata.com/robots/mz.AntiGrav_1.0.jar&lt;br /&gt;
mz.MicroGodMelee 1,http://robocode-archive.strangeautomata.com/robots/mz.MicroGodMelee_1.jar&lt;br /&gt;
mz.MicroSheep 1.0,http://robocode-archive.strangeautomata.com/robots/mz.MicroSheep_1.0.jar&lt;br /&gt;
mz.Cork 0.1,http://robocode-archive.strangeautomata.com/robots/mz.Cork_0.1.jar&lt;br /&gt;
mz.NanoGod 2.02,http://robocode-archive.strangeautomata.com/robots/mz.NanoGod_2.02.jar&lt;br /&gt;
nat.PallasHawk 1.0,http://robocode-archive.strangeautomata.com/robots/nat.PallasHawk_1.0.jar&lt;br /&gt;
ne.Chimera 1.2,http://robocode-archive.strangeautomata.com/robots/ne.Chimera_1.2.jar&lt;br /&gt;
nic.Nicator 2.4,http://robocode-archive.strangeautomata.com/robots/nic.Nicator_2.4.jar&lt;br /&gt;
Noran.BitchingElk 0.054,http://robocode-archive.strangeautomata.com/robots/Noran.BitchingElk_0.054.jar&lt;br /&gt;
ntc.ControlledChaos 1.1.4,http://robocode-archive.strangeautomata.com/robots/ntc.ControlledChaos_1.1.4.jar&lt;br /&gt;
ntc.Opposite 1.5,http://robocode-archive.strangeautomata.com/robots/ntc.Opposite_1.5.jar&lt;br /&gt;
nz.jdc.nano.GridFu 1.0,http://robocode-archive.strangeautomata.com/robots/nz.jdc.nano.GridFu_1.0.jar&lt;br /&gt;
oa.weak.BotherBot 0.1,http://robocode-archive.strangeautomata.com/robots/oa.weak.BotherBot_0.1.jar&lt;br /&gt;
oa.weak.FlyMk1 0.1,http://robocode-archive.strangeautomata.com/robots/oa.weak.FlyMk1_0.1.jar&lt;br /&gt;
oog.melee.Capulet 1.2,http://robocode-archive.strangeautomata.com/robots/oog.melee.Capulet_1.2.jar&lt;br /&gt;
oog.melee.CapuletDroid 1.1,http://robocode-archive.strangeautomata.com/robots/oog.melee.CapuletDroid_1.1.jar&lt;br /&gt;
oog.melee.Corsair 1.0,http://robocode-archive.strangeautomata.com/robots/oog.melee.Corsair_1.0.jar&lt;br /&gt;
oog.melee.Mercutio 1.0,http://robocode-archive.strangeautomata.com/robots/oog.melee.Mercutio_1.0.jar&lt;br /&gt;
origin.SleepSiphon 1.7b,https://github.com/John-Paul-R/SleepSiphon/releases/download/1.7b/origin.SleepSiphon_1.7b.jar&lt;br /&gt;
pa.Improved 1.0,http://robocode-archive.strangeautomata.com/robots/pa.Improved_1.0.jar&lt;br /&gt;
pac.ABC 2.1,http://robocode-archive.strangeautomata.com/robots/pac.ABC_2.1.jar&lt;br /&gt;
panzer.Panzer 0.2,http://robocode-archive.strangeautomata.com/robots/panzer.Panzer_0.2.jar&lt;br /&gt;
patson.PatsonTestBot 1.0,http://robocode-archive.strangeautomata.com/robots/patson.PatsonTestBot_1.0.jar&lt;br /&gt;
pbg.R2D2 1.0,http://robocode-archive.strangeautomata.com/robots/pbg.R2D2_1.0.jar&lt;br /&gt;
pbg.NinjaX 1.2,https://github.com/realr2d2/Bots/blob/gh-pages/pbg.NinjaX_1.2.jar?raw=true&lt;br /&gt;
TNT.TNT 0.99.1,http://robocode-archive.strangeautomata.com/robots/TNT.TNT_0.99.1.jar&lt;br /&gt;
pe.minimelee.SandboxMiniMelee 1.1,http://robocode-archive.strangeautomata.com/robots/pe.minimelee.SandboxMiniMelee_1.1.jar&lt;br /&gt;
pe.SandboxDT 2.71m,http://robocode-archive.strangeautomata.com/robots/pe.SandboxDT_2.71m.jar&lt;br /&gt;
pe.SandboxLump 1.52,http://robocode-archive.strangeautomata.com/robots/pe.SandboxLump_1.52.jar&lt;br /&gt;
pedersen.Grishnakh 1.0,http://robocode-archive.strangeautomata.com/robots/pedersen.Grishnakh_1.0.jar&lt;br /&gt;
pedersen.Moron 2.0,http://robocode-archive.strangeautomata.com/robots/pedersen.Moron_2.0.jar&lt;br /&gt;
pedersen.Ugluk 1.1.1,http://robocode-archive.strangeautomata.com/robots/pedersen.Ugluk_1.1.1.jar&lt;br /&gt;
pez.mini.ChironexFleckeri 0.5,http://robocode-archive.strangeautomata.com/robots/pez.mini.ChironexFleckeri_0.5.jar&lt;br /&gt;
pfvicm.Sobieski 7.2.3b,http://robocode-archive.strangeautomata.com/robots/pfvicm.Sobieski_7.2.3b.jar&lt;br /&gt;
ph.melee.ArcherME 0.3,http://robocode-archive.strangeautomata.com/robots/ph.melee.ArcherME_0.3.jar&lt;br /&gt;
Polkwane.SmashMelee 1.0,https://dl.dropboxusercontent.com/s/hog8g5km2pu3q1i/Polkwane.SmashMelee_1.0.jar?token_hash=AAEYkudeilgEUEILMqRqcdMrqBYFMaGSzuqXAO6BMVi2gQ&amp;amp;dl=1&lt;br /&gt;
positive.Portia 1.26e,http://robocode-archive.strangeautomata.com/robots/positive.Portia_1.26e.jar&lt;br /&gt;
PSW.Relentless 0.1,http://robocode-archive.strangeautomata.com/robots/PSW.Relentless_0.1.jar&lt;br /&gt;
pulsar.PulsarMax 0.8.9,http://robocode-archive.strangeautomata.com/robots/pulsar.PulsarMax_0.8.9.jar&lt;br /&gt;
qohnil.blot.BlotBot 3.61,http://robocode-archive.strangeautomata.com/robots/qohnil.blot.BlotBot_3.61.jar&lt;br /&gt;
qualidafial.MajorDick 1.0.1,https://www.dropbox.com/sh/n570kf8rsq6fuw2/vVQSIJJnAS/qualidafial.MajorDick_1.0.1.jar?dl=1&lt;br /&gt;
Queens_teamrobot.UltraRazor 1.0,http://robocode-archive.strangeautomata.com/robots/Queens_teamrobot.UltraRazor_1.0.jar&lt;br /&gt;
radnor.DoctorBob 1.42,http://robocode-archive.strangeautomata.com/robots/radnor.DoctorBob_1.42.jar&lt;br /&gt;
rampancy.Durandal 2.1d,http://robocode-archive.strangeautomata.com/robots/rampancy.Durandal_2.1d.jar&lt;br /&gt;
ratosh.Nobo 0.21,http://robocode-archive.strangeautomata.com/robots/ratosh.Nobo_0.21.jar&lt;br /&gt;
ratosh.Wesco 1.4,http://robocode-archive.strangeautomata.com/robots/ratosh.Wesco_1.4.jar&lt;br /&gt;
rdm.Dueler 0.4x,https://drive.google.com/uc?export=download&amp;amp;id=16x234SaadG-76wT0TJhpyDTxdQhO-j3j&lt;br /&gt;
rdt199.Warlord 0.73,http://robocode-archive.strangeautomata.com/robots/rdt199.Warlord_0.73.jar&lt;br /&gt;
repositorio.NanoStep 1.0,http://robocode-archive.strangeautomata.com/robots/repositorio.NanoStep_1.0.jar&lt;br /&gt;
robar.nano.Assertive_Melee 0.2,http://robocode-archive.strangeautomata.com/robots/robar.nano.Assertive_Melee_0.2.jar&lt;br /&gt;
rrh.Iwillfindyou 2.0,https://drive.google.com/uc?export=download&amp;amp;id=1wE-V_PQeMvKLisPmM8s6JEaznXEHYAIt&lt;br /&gt;
rsalesc.roborio.RoborioPorradeiro 1.1b,http://robocode-archive.strangeautomata.com/robots/rsalesc.roborio.RoborioPorradeiro_1.1b.jar&lt;br /&gt;
rsalesc.melee.Medina 0.4.5,http://robocode-archive.strangeautomata.com/robots/rsalesc.melee.Medina_0.4.5.jar&lt;br /&gt;
rsalesc.melee.Monk 0.3.6c,http://robocode-archive.strangeautomata.com/robots/rsalesc.melee.Monk_0.3.6c.jar&lt;br /&gt;
rtk.Tachikoma 1.0,http://robocode-archive.strangeautomata.com/robots/rtk.Tachikoma_1.0.jar&lt;br /&gt;
rz.Aleph 0.34,http://robocode-archive.strangeautomata.com/robots/rz.Aleph_0.34.jar&lt;br /&gt;
rz.GlowBlowMelee 1.4,http://robocode-archive.strangeautomata.com/robots/rz.GlowBlowMelee_1.4.jar&lt;br /&gt;
rz.HawkOnFire 0.1,http://robocode-archive.strangeautomata.com/robots/rz.HawkOnFire_0.1.jar&lt;br /&gt;
sadoner.killer 0.2,http://robocode-archive.strangeautomata.com/robots/sadoner.killer_0.2.jar&lt;br /&gt;
sam.Samspin 1.0,http://robocode-archive.strangeautomata.com/robots/sam.Samspin_1.0.jar&lt;br /&gt;
sample.Corners 1.0,http://robocode-archive.strangeautomata.com/robots/sample.Corners_1.0.jar&lt;br /&gt;
sample.Crazy 1.0,http://robocode-archive.strangeautomata.com/robots/sample.Crazy_1.0.jar&lt;br /&gt;
sample.Fire 1.0,http://robocode-archive.strangeautomata.com/robots/sample.Fire_1.0.jar&lt;br /&gt;
sample.MyFirstJuniorRobot 1.0,http://robocode-archive.strangeautomata.com/robots/sample.MyFirstJuniorRobot_1.0.jar&lt;br /&gt;
sample.MyFirstRobot 1.0,http://robocode-archive.strangeautomata.com/robots/sample.MyFirstRobot_1.0.jar&lt;br /&gt;
sample.RamFire 1.0,http://robocode-archive.strangeautomata.com/robots/sample.RamFire_1.0.jar&lt;br /&gt;
sample.SittingDuck 1.0,http://robocode-archive.strangeautomata.com/robots/sample.SittingDuck_1.0.jar&lt;br /&gt;
sample.SpinBot 1.0,http://robocode-archive.strangeautomata.com/robots/sample.SpinBot_1.0.jar&lt;br /&gt;
sample.Target 1.0,http://robocode-archive.strangeautomata.com/robots/sample.Target_1.0.jar&lt;br /&gt;
sample.Tracker 1.0,http://robocode-archive.strangeautomata.com/robots/sample.Tracker_1.0.jar&lt;br /&gt;
sample.TrackFire 1.0,http://robocode-archive.strangeautomata.com/robots/sample.TrackFire_1.0.jar&lt;br /&gt;
sample.VelociRobot 1.0,http://robocode-archive.strangeautomata.com/robots/sample.VelociRobot_1.0.jar&lt;br /&gt;
sample.Walls 1.0,http://robocode-archive.strangeautomata.com/robots/sample.Walls_1.0.jar&lt;br /&gt;
sanyi.mikrobi.Roberto 1.0,http://robocode-archive.strangeautomata.com/robots/sanyi.mikrobi.Roberto_1.0.jar&lt;br /&gt;
sanja.First 0.1,http://robocode-archive.strangeautomata.com/robots/sanja.First_0.1.jar&lt;br /&gt;
sch.Simone 0.3d,http://robocode-archive.strangeautomata.com/robots/sch.Simone_0.3d.jar&lt;br /&gt;
sgp.JollyNinja 3.53,http://robocode-archive.strangeautomata.com/robots/sgp.JollyNinja_3.53.jar&lt;br /&gt;
SHAM.WOW 1.4,http://robocode-archive.strangeautomata.com/robots/SHAM.WOW_1.4.jar&lt;br /&gt;
sheldor.melee.nano.NaturalScience 1.2.1,https://github.com/sheldor-robocode/jar-files/raw/main/sheldor.melee.nano.NaturalScience_1.2.1.jar&lt;br /&gt;
sheldor.melee.nano.TestMelee 0.1,http://robocode-archive.strangeautomata.com/robots/sheldor.melee.nano.TestMelee_0.1.jar&lt;br /&gt;
sheldor.nano.PointInLineRRAL 1.0.0,http://robocode-archive.strangeautomata.com/robots/sheldor.nano.PointInLineRRAL_1.0.0.jar&lt;br /&gt;
shinh.Entangled 0.3,http://robocode-archive.strangeautomata.com/robots/shinh.Entangled_0.3.jar&lt;br /&gt;
shrub.Silver v048,http://robocode-archive.strangeautomata.com/robots/shrub.Silver_v048.jar&lt;br /&gt;
shrub.Vapour v159,http://robocode-archive.strangeautomata.com/robots/shrub.Vapour_v159.jar&lt;br /&gt;
shu.nitro.LENIN .T34,http://robocode-archive.strangeautomata.com/robots/shu.nitro.LENIN_.T34.jar&lt;br /&gt;
sigterm.Sigterm 1.0,http://robocode-archive.strangeautomata.com/robots/sigterm.Sigterm_1.0.jar&lt;br /&gt;
simonton.micro.Sprout 1.1.3,http://robocode-archive.strangeautomata.com/robots/simonton.micro.Sprout_1.1.3.jar&lt;br /&gt;
simonton.nano.MeleeSeed 1.8,http://robocode-archive.strangeautomata.com/robots/simonton.nano.MeleeSeed_1.8.jar&lt;br /&gt;
simonton.nano.WeekendObsession_Melee 1.0,http://robocode-archive.strangeautomata.com/robots/simonton.nano.WeekendObsession_Melee_1.0.jar&lt;br /&gt;
skm.butterfly 1.0,http://robocode-archive.strangeautomata.com/robots/skm.butterfly_1.0.jar&lt;br /&gt;
skm.Ryubot 1.0,http://robocode-archive.strangeautomata.com/robots/skm.Ryubot_1.0.jar&lt;br /&gt;
skm.PateranBotlock2 1.0,http://robocode-archive.strangeautomata.com/robots/skm.PateranBotlock2_1.0.jar&lt;br /&gt;
spin.Bugstard 0.012b,http://robocode-archive.strangeautomata.com/robots/spin.Bugstard_0.012b.jar?dl=1&lt;br /&gt;
spinnercat.Omen 1.0,http://robocode-archive.strangeautomata.com/robots/spinnercat.Omen_1.0.jar&lt;br /&gt;
spinnercat.micro.Tyger 0.1,http://robocode-archive.strangeautomata.com/robots/spinnercat.micro.Tyger_0.1.jar&lt;br /&gt;
spinnercat.Robovirus 2.718,http://robocode-archive.strangeautomata.com/robots/spinnercat.Robovirus_2.718.jar&lt;br /&gt;
sp.Nanos.Ember 1.1,http://robocode-archive.strangeautomata.com/robots/sp.Nanos.Ember_1.1.jar&lt;br /&gt;
squidM.TentalceMeleeNano 1.1,http://robocode-archive.strangeautomata.com/robots/squidM.TentalceMeleeNano_1.1.jar&lt;br /&gt;
stelo.AreaTargetingBot 1.1,http://robocode-archive.strangeautomata.com/robots/stelo.AreaTargetingBot_1.1.jar&lt;br /&gt;
stelo.IntrinsicVolatility 1.4,http://robocode-archive.strangeautomata.com/robots/stelo.IntrinsicVolatility_1.4.jar&lt;br /&gt;
stelo.Liblix 0.3.1,https://github.com/kimtg/robocode-bots/releases/download/release/stelo.Liblix_0.3.1.jar&lt;br /&gt;
stelo.Lifestealer 1.0,http://robocode-archive.strangeautomata.com/robots/stelo.Lifestealer_1.0.jar&lt;br /&gt;
stelo.Mirror 1.1,http://robocode-archive.strangeautomata.com/robots/stelo.Mirror_1.1.jar&lt;br /&gt;
stelo.MirrorMicro 1.0,http://robocode-archive.strangeautomata.com/robots/stelo.MirrorMicro_1.0.jar&lt;br /&gt;
stelo.MirrorNano 1.3,http://robocode-archive.strangeautomata.com/robots/stelo.MirrorNano_1.3.jar&lt;br /&gt;
stelo.MyAgileRobot 0.2,http://robocode-archive.strangeautomata.com/robots/stelo.MyAgileRobot_0.2.jar&lt;br /&gt;
stelo.PatternRobot 1.0,http://robocode-archive.strangeautomata.com/robots/stelo.PatternRobot_1.0.jar&lt;br /&gt;
stelo.PianistNano 1.2,http://robocode-archive.strangeautomata.com/robots/stelo.PianistNano_1.2.jar&lt;br /&gt;
stelo.RamTrackSurfer 1.2,http://robocode-archive.strangeautomata.com/robots/stelo.RamTrackSurfer_1.2.jar&lt;br /&gt;
stelo.Randomness 1.0,http://robocode-archive.strangeautomata.com/robots/stelo.Randomness_1.0.jar&lt;br /&gt;
stelo.SoJNanoMelee 1.1,http://robocode-archive.strangeautomata.com/robots/stelo.SoJNanoMelee_1.1.jar&lt;br /&gt;
stelo.SoRobotNanoMelee 1.2,http://robocode-archive.strangeautomata.com/robots/stelo.SoRobotNanoMelee_1.2.jar&lt;br /&gt;
stelo.UntouchableNano 1.3,http://robocode-archive.strangeautomata.com/robots/stelo.UntouchableNano_1.3.jar&lt;br /&gt;
stelo.Wang 1.0,http://robocode-archive.strangeautomata.com/robots/stelo.Wang_1.0.jar&lt;br /&gt;
stelo.WangRobot 1.0,http://robocode-archive.strangeautomata.com/robots/stelo.WangRobot_1.0.jar&lt;br /&gt;
step.nanoPri 1.0,http://robocode-archive.strangeautomata.com/robots/step.nanoPri_1.0.jar&lt;br /&gt;
stf.PanzerGeneral 0.1,http://robocode-archive.strangeautomata.com/robots/stf.PanzerGeneral_0.1.jar&lt;br /&gt;
stuff.Vlad 0.1,http://robocode-archive.strangeautomata.com/robots/stuff.Vlad_0.1.jar&lt;br /&gt;
sul.Lunar 1.1,http://robocode-archive.strangeautomata.com/robots/sul.Lunar_1.1.jar&lt;br /&gt;
supersample.SuperBoxBot 1.0,http://robocode-archive.strangeautomata.com/robots/supersample.SuperBoxBot_1.0.jar&lt;br /&gt;
tad.Dalek98 0.98,http://robocode-archive.strangeautomata.com/robots/tad.Dalek98_0.98.jar&lt;br /&gt;
tcf.Reach 3,http://robocode-archive.strangeautomata.com/robots/tcf.Reach_3.jar&lt;br /&gt;
techdude.forest.FlamingForest 1.1,http://robocode-archive.strangeautomata.com/robots/techdude.forest.FlamingForest_1.1.jar&lt;br /&gt;
techdude.kombat.FlamingKombat 1.5,http://robocode-archive.strangeautomata.com/robots/techdude.kombat.FlamingKombat_1.5.jar&lt;br /&gt;
testantiswapgun.AntiSwap 1.0,http://robocode-archive.strangeautomata.com/robots/asd.AntiSwap_1.0.jar&lt;br /&gt;
tex.Longbot 0.4,http://robocode-archive.strangeautomata.com/robots/tex.Longbot_0.4.jar&lt;br /&gt;
throxbot.ThroxBot 0.1,http://robocode-archive.strangeautomata.com/robots/throxbot.ThroxBot_0.1.jar&lt;br /&gt;
timmit.nano.TimDog 0.33,http://robocode-archive.strangeautomata.com/robots/timmit.nano.TimDog_0.33.jar&lt;br /&gt;
tj.zombie1n 1.0.1,http://robocode-archive.strangeautomata.com/robots/tj.zombie1n_1.0.1.jar&lt;br /&gt;
tlp.ThreeLeggedPig 1,http://robocode-archive.strangeautomata.com/robots/tlp.ThreeLeggedPig_1.jar&lt;br /&gt;
tm.Yuugao 1.0,http://robocode-archive.strangeautomata.com/robots/tm.Yuugao_1.0.jar&lt;br /&gt;
tripphippy.Alice 1.1,http://robocode-archive.strangeautomata.com/robots/tripphippy.Alice_1.1.jar&lt;br /&gt;
trm.Wrekt 1.1.6.f,http://robocode-archive.strangeautomata.com/robots/trm.Wrekt_1.1.6.f.jar&lt;br /&gt;
tvv.micro.Antares 1.1.1,http://robocode-archive.strangeautomata.com/robots/tvv.micro.Antares_1.1.1.jar&lt;br /&gt;
tvv.nano.Polaris 1.2,http://robocode-archive.strangeautomata.com/robots/tvv.nano.Polaris_1.2.jar&lt;br /&gt;
tzu.TheArtOfWar 1.2,http://robocode-archive.strangeautomata.com/robots/tzu.TheArtOfWar_1.2.jar&lt;br /&gt;
uji.Antique 1.0,http://robocode-archive.strangeautomata.com/robots/uji.Antique_1.0.jar&lt;br /&gt;
uji.DBH 1.1,http://robocode-archive.strangeautomata.com/robots/uji.DBH_1.1.jar&lt;br /&gt;
uji.YellohFellah 1.0,http://robocode-archive.strangeautomata.com/robots/uji.YellohFellah_1.0.jar&lt;br /&gt;
urdos.URDOS 1.3,http://robocode-archive.strangeautomata.com/robots/urdos.URDOS_1.3.jar&lt;br /&gt;
vjik.UnViolation 1.1,http://robocode-archive.strangeautomata.com/robots/vjik.UnViolation_1.1.jar&lt;br /&gt;
voidious.Diamond 1.8.28,http://robocode-archive.strangeautomata.com/robots/voidious.Diamond_1.8.28.jar&lt;br /&gt;
voidious.micro.BlitzBat 1.05,http://robocode-archive.strangeautomata.com/robots/voidious.micro.BlitzBat_1.05.jar&lt;br /&gt;
voidious.mini.BrokenSword 2.0.3,http://robocode-archive.strangeautomata.com/robots/voidious.mini.BrokenSword_2.0.3.jar&lt;br /&gt;
vStar.RAFzilla 2.15,https://drive.google.com/uc?export=download&amp;amp;id=1mSf7wnoO5VnMdHDCJcC-tT9X7NzIcLJF&lt;br /&gt;
vuen.Cake 2.51,http://robocode-archive.strangeautomata.com/robots/vuen.Cake_2.51.jar&lt;br /&gt;
WarfaJibril.Jibril_Warfa_Andromeda 1.11,http://robocode-archive.strangeautomata.com/robots/WarfaJibril.Jibril_Warfa_Andromeda_1.11.jar&lt;br /&gt;
wcsv.melee.EngineerMelee 0.1,http://robocode-archive.strangeautomata.com/robots/wcsv.melee.EngineerMelee_0.1.jar&lt;br /&gt;
wee.Gem 1.8.4,http://robocode-archive.strangeautomata.com/robots/wee.Gem_1.8.4.jar&lt;br /&gt;
whitesquare.robots.SkynetAdvanced 1.1,https://dl.dropboxusercontent.com/s/6epm51goxqp7p0h/whitesquare.robots.SkynetAdvanced_1.1.jar?dl=1&lt;br /&gt;
winamp32.micro.MicroMacro 1.0,http://robocode-archive.strangeautomata.com/robots/winamp32.micro.MicroMacro_1.0.jar&lt;br /&gt;
wit.Chuliath 1.0,http://robocode-archive.strangeautomata.com/robots/wit.Chuliath_1.0.jar&lt;br /&gt;
wit.Deep7 2.0,http://robocode-archive.strangeautomata.com/robots/wit.Deep7_2.0.jar&lt;br /&gt;
wompi.Numbat 2.1,http://www.casepool.de/robocode/wompi.Numbat_2.1.jar&lt;br /&gt;
wompi.Quokka 1.6,http://www.casepool.de/robocode/wompi.Quokka_1.6.jar&lt;br /&gt;
wompi.Wallaby 5.1,http://www.casepool.de/robocode/wompi.Wallaby_5.1.jar&lt;br /&gt;
yagami.Tidus 0.11,http://robocode-archive.strangeautomata.com/robots/yagami.Tidus_0.11.jar&lt;br /&gt;
yk.JahMicro 1.0,http://robocode-archive.strangeautomata.com/robots/yk.JahMicro_1.0.jar&lt;br /&gt;
yk.JahRoslav 1.1,http://robocode-archive.strangeautomata.com/robots/yk.JahRoslav_1.1.jar&lt;br /&gt;
zyx.mega.YersiniaPestis 3.1,http://robocode-archive.strangeautomata.com/robots/zyx.mega.YersiniaPestis_3.1.jar&lt;br /&gt;
zyx.micro.Ant 1.1,http://robocode-archive.strangeautomata.com/robots/zyx.micro.Ant_1.1.jar&lt;br /&gt;
zyx.nano.Ant 1.1,http://robocode-archive.strangeautomata.com/robots/zyx.nano.Ant_1.1.jar&lt;br /&gt;
zyx.nano.BacillusComma 1.0,http://robocode-archive.strangeautomata.com/robots/zyx.nano.BacillusComma_1.0.jar&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
'''''No chatting on this page. Use the /ParticipantsChat page for that.'''''&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
'''''Removed because the server says: Ignoring. Also client cannot download these'''''&amp;lt;br&amp;gt;&lt;br /&gt;
''traker.Eraser 1,http://lablanchisserie.fr/Parissou/traker.Eraser.jar&lt;br /&gt;
''xyzdev.SimpleJack 1.0,https://xyzdev.webfactional.com/archive/xyzdev.SimpleJack_1.0.jar&lt;br /&gt;
&lt;br /&gt;
'''''Removed because the jarcontent/filename is not correct'''''&amp;lt;br&amp;gt;&lt;br /&gt;
''ary.HelpMeelee 1.0,3624''&amp;lt;br&amp;gt;&lt;br /&gt;
''dmsr.MiniR101 0.6''&amp;lt;br&amp;gt;&lt;br /&gt;
''enriquevilela.TieFighter 0.1,3224''&amp;lt;br&amp;gt;&lt;br /&gt;
''cw.melee.Burner 2.0&amp;lt;br&amp;gt;&lt;br /&gt;
''ROB.TraumaLlama 1.0,https://www.dropbox.com/s/b14r13f4xwc5kj5/ROB.TraumaLlama_1.0.jar?dl=0''&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''Removed because he crashes the vm frequently (mac/linux) 1.6'''''&amp;lt;br&amp;gt;&lt;br /&gt;
''dam.MogBot 2.9,http://www.robocoderepository.com/BotFiles/555/dam.MogBot_2.9.jar&lt;br /&gt;
&lt;br /&gt;
'''''Removed due to WontFix issues in Robocode 1.7+:'''''&amp;lt;br&amp;gt;&lt;br /&gt;
''* Hviela: ([[http://sourceforge.net/tracker/?func=detail&amp;amp;aid=2953268&amp;amp;group_id=37202&amp;amp;atid=419486 SF #2953268]])&amp;lt;br&amp;gt;&lt;br /&gt;
'': hvilela.HVilela 0.9.3,http://henrique.vilela.googlepages.com/hvilela.HVilela_0.9.3.jar''&lt;br /&gt;
&lt;br /&gt;
'''''Removed due to constant timeouts'''''&amp;lt;br&amp;gt;&lt;br /&gt;
''ary.FourWD 1.3c,http://robocode-archive.strangeautomata.com/robots/ary.FourWD_1.3c.jar&amp;lt;br&amp;gt;&lt;br /&gt;
''stelo.Moojuk 1.3,http://robocode-archive.strangeautomata.com/robots/stelo.Moojuk_1.3.jar&lt;br /&gt;
&lt;br /&gt;
'''''Removed due to constant unstoppable and compatibility issue under java 8'''''&amp;lt;br&amp;gt;&lt;br /&gt;
''apc.Caan 1.0,http://robocode-archive.strangeautomata.com/robots/apc.Caan_1.0.jar&lt;br /&gt;
&lt;br /&gt;
'''''Removed due to attempting to read environment variables'''''&amp;lt;br&amp;gt;&lt;br /&gt;
''gm.GaetanoA 2.15,http://robocode-archive.strangeautomata.com/robots/gm.GaetanoA_2.15.jar&lt;br /&gt;
&lt;br /&gt;
'''''Removed due to invalid robot or team'''''&amp;lt;br&amp;gt;&lt;br /&gt;
''stelo.Spread 0.5.2,https://github.com/kimtg/robocode-bots/releases/download/release/stelo.Spread_0.5.2.jar&lt;br /&gt;
''stelo.PastFuture 2.3.1,https://github.com/kimtg/robocode-bots/releases/download/release/stelo.PastFuture_2.3.1.jar&lt;br /&gt;
&lt;br /&gt;
'''Removed due to not working in 1.9.4.2'''&amp;lt;br&amp;gt;&lt;br /&gt;
''abc.tron3.Tron 3.11,http://robocode-archive.strangeautomata.com/robots/abc.tron3.Tron_3.11.jar''&lt;br /&gt;
&lt;br /&gt;
'''Removed due to not working with Java 17. Don't use Java 18. '''&amp;lt;br&amp;gt;&lt;br /&gt;
dylanb.xyz 2.0,https://drive.google.com/uc?export=download&amp;amp;id=18ugz_el8xentgdnPipnK4zGyBOoT3fN9&lt;/div&gt;</summary>
		<author><name>D414</name></author>
		
	</entry>
	<entry>
		<id>http://robowiki.net/w/index.php?title=Thread:Talk:RoboRumble/Enter_The_Competition/Correct_way_to_revert_a_bot_to_a_previous_version&amp;diff=57937</id>
		<title>Thread:Talk:RoboRumble/Enter The Competition/Correct way to revert a bot to a previous version</title>
		<link rel="alternate" type="text/html" href="http://robowiki.net/w/index.php?title=Thread:Talk:RoboRumble/Enter_The_Competition/Correct_way_to_revert_a_bot_to_a_previous_version&amp;diff=57937"/>
		<updated>2024-06-09T21:23:24Z</updated>

		<summary type="html">&lt;p&gt;D414: New thread: Correct way to revert a bot to a previous version&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Can I revert the wiki page to the previous link and version number, or should I repackage it with a new version number? eg. Re-release v1.0.0 as v.1.0.0a&lt;/div&gt;</summary>
		<author><name>D414</name></author>
		
	</entry>
	<entry>
		<id>http://robowiki.net/w/index.php?title=User:D414/Diary_of_a_Robocoder&amp;diff=57936</id>
		<title>User:D414/Diary of a Robocoder</title>
		<link rel="alternate" type="text/html" href="http://robowiki.net/w/index.php?title=User:D414/Diary_of_a_Robocoder&amp;diff=57936"/>
		<updated>2024-06-07T18:10:26Z</updated>

		<summary type="html">&lt;p&gt;D414: Brief update after some disappointing results&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;; 7th June 2024&lt;br /&gt;
My last couple of updates to [[Quantum]] have hammered home the point that my test benches don't reflect rumble performance nearly as well as I'd like - v1.2.1 and v1.2.2 performed similarly in my testing but quite differently to each other in the rumble. They both outperformed v1.0.0 by around 1% APS in testing but failed to live up to that when released. I don't think I can get away with putting off building a good testing framework any longer!&lt;br /&gt;
&lt;br /&gt;
It's not a complete loss though. I've learned a lot, found a few more bytes to play with and I'm still confident that the approach to bullet power selection will yield better performance (eventually).&lt;br /&gt;
&lt;br /&gt;
; 14th May 2024&lt;br /&gt;
Well, that was unexpected! The minor update to [[Quantum]] that I released reduced the codesize enough to allow me to fix the radar bug I added in v0.2.2 to make room for colours (Each time an opponent died there was a 50% chance the radar would switch directions). That bugfix was worth around 0.7 APS in the micro melee rumble, which was enough to push [[Quantum]] above [[HawkOnFire]]! I'm ''very'' excited to tune the gun...&lt;br /&gt;
&lt;br /&gt;
; 13th May 2024&lt;br /&gt;
ProGuard didn’t manage to shrink [[Quantum]] at all and installing Jikes is a bit of a faff these days (on an Arm MacBook anyway) so I decided to try out [https://github.com/Storyyeller/Krakatau Krakatau] to work with the assembly code directly. It looks like I can make room for the gun to use quite a few attributes - distance, bullet power, number of opponents, lateral velocity and lateral acceleration should all fit. I definitely need to improve on the spaghetti shaped shell scripts I’m using to build and test my bots if I’m going to successfully tune the gun, but I reckon it’ll be worth it. Whether or not it’s enough to outperform [[HawkOnFire]] with a nano remains to be seen, but I’m hopeful.&lt;br /&gt;
&lt;br /&gt;
; 10th May 2024&lt;br /&gt;
[[User:Sheldor2|Sheldor]]'s adaptation of [[Quantum]] (NaturalScience) motivated me to put development of a micro bot on hold. I had space for table based bullet power selection, albeit much simpler than [[User:Sheldor2|Sheldor]]'s, but only found marginal gains and tuning it by hand was both tedious and slow. I did manage to squeeze another 3 bytes out of my code though, bringing [[Quantum]] down to 239 bytes (without colours). There is room now for several different table based approaches but I'm going to need an automated way of tuning them. This leaves me with a nice todo list that will also benefit the development of other bots:&lt;br /&gt;
&lt;br /&gt;
* Try some other compilers, Jikes in particular&lt;br /&gt;
* Add ProGuard to my build scripts&lt;br /&gt;
* Build a test system that allows me to tune tables genetically&lt;br /&gt;
&lt;br /&gt;
; 4th May 2024&lt;br /&gt;
I managed to find another half-dozen or so bytes in [[FireHammer]] which was enough to improve the movement a bit. I've entered it into the rumble and will run some battles overnight so we'll see where it ranks when I wake up in the morning.&lt;br /&gt;
&lt;br /&gt;
Update: Can't complain about top 5 in the micros, although I was hoping to edge out Sprout to make top 3. This has confirmed my belief that a good circular gun is the way to go in a micro; 116 bytes for movement really isn't much to work with!&lt;br /&gt;
&lt;br /&gt;
; 2nd May 2024&lt;br /&gt;
I've finally given [[FireHammer]] a better (but not good) movement without going over 749 bytes. Once I've tidied the code up it will be ready to enter the rumble! I'm torn on whether to release it now versus waiting until I have a minibot ready to challenge [[Mirage]], I don't like to think about how much stronger [[User:Kev|Kev]] could make [[Mirage]] with all the extra space to play with!&lt;br /&gt;
&lt;br /&gt;
; 26th April 2024&lt;br /&gt;
My experimentation with micro sized melee guns is paying off; I've finally managed to squeeze [[Mirage]]'s amazing gun into a micro! The only (intended) functional changes are switching to [[Quantum]]'s bullet power selection and going back to a fixed size for bot width as per [[Mirage]] v0.1.&lt;br /&gt;
&lt;br /&gt;
So far I'm down to 733 bytes from a starting point of 919 (both without colours).&lt;br /&gt;
&lt;br /&gt;
Results are promising despite only spending 21 bytes on movement to move in an [[Infinity]] style box pattern.&lt;br /&gt;
&lt;br /&gt;
; 18th April 2024&lt;br /&gt;
I've started playing around with ideas for an entrant to the micro melee rumble. For now I'm looking at guns and mostly finding that [[DustBunny]]'s gun seems to give excellent performance per byte and is difficult to improve upon. The next best thing seems to be a good implementation of [[Circular Targeting]] but ultimately I think that movement is where the money is.&lt;br /&gt;
&lt;br /&gt;
I should probably turn my attention to finding the most efficient way I can to track enemy state, rather than relying on rolling averages, since the obvious HashMap approach introduces a lot of overhead. I'd also like to see if there's much to gain by switching from a basic nano style radar to something a little bit more sophisticated.&lt;br /&gt;
&lt;br /&gt;
In short, challenging [[Wallaby]] for the micro crown isn't going to be easy!&lt;br /&gt;
&lt;br /&gt;
; 14th April 2024&lt;br /&gt;
It turns out that Quantum is rather competetive! It knocked DustBunny off of the nano melee throne for a few days before settling in to second place. It still achieves a 100% PWIN and has by far the best survival score of any nano melee bot (and it has colours!). If I remove the colours I have 7 bytes to play with but I've not been able to find any changes that make a significant improvement. It would be interesting to see how the table looks once Quantum has run a similar number of battle to the other nanos (currently it's at less than 10%) however my rumble client has stopped working, which is a pain. Once we have internet again I'll see if I can get one of my low power machines setup as a dedicated client.&lt;br /&gt;
&lt;br /&gt;
; 6th April 2024&lt;br /&gt;
I haven't had much time for robocode over the last month but I have been able to experiment a little with a nano melee bot, heavily inspired by [[DustBunny]] and [[Infinity]]. I'm quite pleased with the idea to calculate [[Anti-Gravity Movement|anti-gravity]] forces based on the angle my bot would fire at instead of the angle to the enemy's current position. This bot (Quantum) is my first entry into the [[Roborumble]]!&lt;br /&gt;
&lt;br /&gt;
; 5th March 2024&lt;br /&gt;
My experiments with a nano [[Shadow/Melee Gun]] haven't gotten me the results I'd expected and I got a bit burned out from debugging it so I tried throwing a PM gun on which was okay but nothing to write home about. I think I'm going to experiment with different movements for a while for a change of pace. I've found I enjoy codesize restricted bots much more than megabots - I was getting a bit bogged down in top down development when I was allowed as much code as I liked.&lt;br /&gt;
&lt;br /&gt;
; 28th February 2024&lt;br /&gt;
[[File:Quantum Painting Firing Angles.png|thumb|Targeting everybody at once, Nanobot version!]]&lt;br /&gt;
I've managed to get a (very) basic version of [[Shadow/Melee Gun]] squeezed into my Nanobot. At the moment it only aims (at everybody) with [[Head-On Targeting]] weighted by distance. Once I'm done with bug fixing I think I'll be able to find room to add another gun or two and/or better energy management into the mix.&lt;br /&gt;
&lt;br /&gt;
; 27th February 2024&lt;br /&gt;
For the past couple of evenings I've been playing with nanobots for the first time. I'm interested in developing guns so decided to start by borrowing a movement from somewhere. [[Infinity]] was most appealing because its movement doesn't depend on the radar and only requires 68 bytes. I've managed to shrink the movement code by a further 15 bytes, giving me almost 200 bytes to use for a gun. ::Edit:: I've gotten it down to 35 bytes!&lt;br /&gt;
&lt;br /&gt;
; 23rd February 2024&lt;br /&gt;
I'm wondering if there should be an equivalent page to [[Wave Suffering]] for [[Displacement Vector|Displacement Vectors]]. My early efforts at collecting displacement vectors with a codesize restricted gun have resulted in some interesting and wild arrows being drawn all over the place. I'm making progress but I'm sure that subtle bugs will continue to be found for quite some time. Still not sure I'll make it work with enough space left to pair it with decent movement but the experience will be helpful either way.&lt;br /&gt;
&lt;br /&gt;
; 19th February 2024&lt;br /&gt;
[[File:Risk Function Painting.png|thumb|A picture is worth a thousand words]]&lt;br /&gt;
Over the last couple of days I've fallen face first into the &amp;lt;big&amp;gt;''pit of premature optimisation''&amp;lt;/big&amp;gt;. I noticed some interesting behaviour emerging as a result of my risk function and got carried away tweaking parameters and adding cobbled together versions of bits of code I'd not implemented in the hope of perfecting it. This predictably led to another pile of spaghetti code that needs (another) rewrite. /sigh.&lt;br /&gt;
&lt;br /&gt;
; 15th February 2024&lt;br /&gt;
My experimental bot had become a pile of spaghetti so it got a rewrite today. I'm still pleased with core design principle, especially given how quickly I was able to experiment with an idea I've not seen mentioned on the wiki before (no spoilers :p). My initial assessment is that it shows promise but definitely needs refinement as my bot now has the tendency under certain conditions to turn into a melee rambot...&lt;br /&gt;
&lt;br /&gt;
; 14th February 2024&lt;br /&gt;
My Robocoding time has been quite sporadic lately so it's been difficult to make progress on the ideas I have for a build system, testing framework and modular robot class. On the one hand that's disappointing because it's greatly slowing my efforts to develop an advanced melee contender however a few throwaway experiments have led to some interesting ideas for movement in mini (or possibly even micro) bots.&lt;br /&gt;
&lt;br /&gt;
The movement appears to be doing a good job at evaluating risk despite using a spinning radar and tracking very little information on enemies. The code is a bit buggy and needs some improvement but I think a half-decent gun could be implemented that mostly reuses the movement code, which is very interesting.&lt;br /&gt;
&lt;br /&gt;
At the very least the graphics displaying the risk evaluation are very satisfying to watch, even if these experiments don't find their way into a released bot.&lt;/div&gt;</summary>
		<author><name>D414</name></author>
		
	</entry>
	<entry>
		<id>http://robowiki.net/w/index.php?title=RoboRumble/Participants/Melee&amp;diff=57935</id>
		<title>RoboRumble/Participants/Melee</title>
		<link rel="alternate" type="text/html" href="http://robowiki.net/w/index.php?title=RoboRumble/Participants/Melee&amp;diff=57935"/>
		<updated>2024-06-07T12:51:14Z</updated>

		<summary type="html">&lt;p&gt;D414: Update Quantum&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{:RoboRumble/Navigation}}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Just add your bot name ('''as appears in the Robocode selector after packaging''', so including versionnumber) and the download link by &amp;quot;,&amp;quot; (there must be no space after the comma).&lt;br /&gt;
&lt;br /&gt;
The list is in '''alphabetical''' order. Add your bot in the right slot.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;For your bot to be accepted by the RR@Home server, the following rules are mandatory:&amp;lt;/span&amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
* The bot must have a package-name.&lt;br /&gt;
* The bot must be packaged in a jar-file.&lt;br /&gt;
* A &amp;lt;botname&amp;gt;.properties file must be present in the jar-file.&lt;br /&gt;
* The naming of the bot must reflect the internal structure, see [http://home.versatel.nl/gheijenk/plaatjes/bot_naming.png]for sample.RamFire.&lt;br /&gt;
* '''&amp;lt;font color=&amp;quot;#CA0813&amp;quot;&amp;gt;The bot should be compatible with Java 17&amp;lt;/font&amp;gt; (Don't compile your code with Java 18 or newer versions)'''&lt;br /&gt;
&lt;br /&gt;
The easiest way to do this is to package your bot with Robocode (Robot -&amp;gt; Package robot for upload).&lt;br /&gt;
&lt;br /&gt;
'''PLEASE MAKE SURE YOUR BOT IS NOT ALREADY ON THE LIST BEFORE YOU ADD IT.&amp;lt;br&amp;gt;IF YOU ARE ADDING A NEW VERSION OF YOUR BOT, PLEASE DELETE THE OLD ONE.'''&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
aaa.r.ScalarR 0.005g.047,https://drive.google.com/uc?export=download&amp;amp;id=1RtyCnpE6XI_WHHvJwjj2brqFPvfgX9Uv&lt;br /&gt;
abc.Shadow 3.84i,http://robocode-archive.strangeautomata.com/robots/abc.Shadow_3.84i.jar&lt;br /&gt;
abud.ThirdRobo 1.0,http://robocode-archive.strangeautomata.com/robots/abud.ThirdRobo_1.0.jar&lt;br /&gt;
acogdev.alpha 0.2,http://robocode-archive.strangeautomata.com/robots/acogdev.alpha_0.2.jar&lt;br /&gt;
adt.Ar1 2.1,http://robocode-archive.strangeautomata.com/robots/adt.Ar1_2.1.jar&lt;br /&gt;
adt.Ar2 1.0,http://robocode-archive.strangeautomata.com/robots/adt.Ar2_1.0.jar&lt;br /&gt;
adt.Ar2 1.1,http://robocode-archive.strangeautomata.com/robots/adt.Ar2_1.1.jar&lt;br /&gt;
agd.Mooserwirt2 2.7,http://robocode-archive.strangeautomata.com/robots/agd.Mooserwirt2_2.7.jar&lt;br /&gt;
agrach.Dalek 1.0,https://github.com/aleksey-zhidkov/rc-repo-mirror/raw/master/agrach.Dalek_1.0.jar&lt;br /&gt;
ags.surreptitious.MiniSurreptitious 0.0.1,http://robocode-archive.strangeautomata.com/robots/ags.surreptitious.MiniSurreptitious_0.0.1.jar&lt;br /&gt;
ags.Glacier 0.2.11,http://robocode-archive.strangeautomata.com/robots/ags.Glacier_0.2.11.jar&lt;br /&gt;
ahf.NanoAndrew .4,http://robocode-archive.strangeautomata.com/robots/ahf.NanoAndrew_.4.jar&lt;br /&gt;
ahr.ice.Ice 1.0.2,http://robocode-archive.strangeautomata.com/robots/ahr.ice.Ice_1.0.2.jar&lt;br /&gt;
ak.Fermat 2.0,http://robocode-archive.strangeautomata.com/robots/ak.Fermat_2.0.jar&lt;br /&gt;
alpha.BlackIce 1.0,http://robocode-archive.strangeautomata.com/robots/alpha.BlackIce_1.0.jar&lt;br /&gt;
alpha.RainingFire 1.0,http://robocode-archive.strangeautomata.com/robots/alpha.RainingFire_1.0.jar&lt;br /&gt;
amk.ChumbaMini 0.2,http://robocode-archive.strangeautomata.com/robots/amk.ChumbaMini_0.2.jar&lt;br /&gt;
amk.ChumbaWumba 0.3,http://robocode-archive.strangeautomata.com/robots/amk.ChumbaWumba_0.3.jar&lt;br /&gt;
amk.jointstrike.JointStrike 0.2,http://robocode-archive.strangeautomata.com/robots/amk.jointstrike.JointStrike_0.2.jar&lt;br /&gt;
amk.ShizzleStiX.ShizzleStiX 0.6,http://robocode-archive.strangeautomata.com/robots/amk.ShizzleStiX.ShizzleStiX_0.6.jar&lt;br /&gt;
amk.superstrike.SuperStrike 0.3,http://robocode-archive.strangeautomata.com/robots/amk.superstrike.SuperStrike_0.3.jar&lt;br /&gt;
amk.Punbot.Punbot 0.01,http://robocode-archive.strangeautomata.com/robots/amk.Punbot.Punbot_0.01.jar&lt;br /&gt;
amz.NanoClone 1.41,http://robocode-archive.strangeautomata.com/robots/amz.NanoClone_1.41.jar&lt;br /&gt;
ap.Frederick 1.1,http://robocode-archive.strangeautomata.com/robots/ap.Frederick_1.1.jar&lt;br /&gt;
apc.botM 3.0,http://robocode-archive.strangeautomata.com/robots/apc.botM_3.0.jar&lt;br /&gt;
apc.Colossus2 0.17,http://robocode-archive.strangeautomata.com/robots/apc.Colossus2_0.17.jar&lt;br /&gt;
apc.LeeroyJenkins2 1.0,http://robocode-archive.strangeautomata.com/robots/apc.LeeroyJenkins2_1.0.jar&lt;br /&gt;
apollokidd.ApolloKidd 0.9,http://robocode-archive.strangeautomata.com/robots/apollokidd.ApolloKidd_0.9.jar&lt;br /&gt;
ara.Shera 0.88,http://robocode-archive.strangeautomata.com/robots/ara.Shera_0.88.jar&lt;br /&gt;
arthord.MannyPacquiao Beta,http://robocode-archive.strangeautomata.com/robots/arthord.MannyPacquiao_Beta.jar&lt;br /&gt;
arthord.NanoSatanMelee Beta,http://robocode-archive.strangeautomata.com/robots/arthord.NanoSatanMelee_Beta.jar&lt;br /&gt;
ary.Swarm 1.1,http://robocode-archive.strangeautomata.com/robots/ary.Swarm_1.1.jar&lt;br /&gt;
as.FrankTheTank 1.3,http://robocode-archive.strangeautomata.com/robots/as.FrankTheTank_1.3.jar&lt;br /&gt;
asd.Cthulhu 1.3,http://robocode-archive.strangeautomata.com/robots/asd.Cthulhu_1.3.jar&lt;br /&gt;
awesomeness.Elite 1.0,http://robocode-archive.strangeautomata.com/robots/awesomeness.Elite_1.0.jar&lt;br /&gt;
axeBots.HataMoto 3.09,http://robocode-archive.strangeautomata.com/robots/axeBots.HataMoto_3.09.jar&lt;br /&gt;
ayk.WallHugger 1.0,http://robocode-archive.strangeautomata.com/robots/ayk.WallHugger_1.0.jar&lt;br /&gt;
az.Ololobot 0.2.4,https://github.com/alexei-zayakin/robocode/raw/master/az.Ololobot_0.2.4.jar&lt;br /&gt;
baal.nano.N 1.42,http://robocode-archive.strangeautomata.com/robots/baal.nano.N_1.42.jar&lt;br /&gt;
bayen.nut.Squirrel 1.615,http://robocode-archive.strangeautomata.com/robots/bayen.nut.Squirrel_1.615.jar&lt;br /&gt;
bayen.UbaMicro 1.4,http://robocode-archive.strangeautomata.com/robots/bayen.UbaMicro_1.4.jar&lt;br /&gt;
bigpete.Stewie 1.0,http://robocode-archive.strangeautomata.com/robots/bigpete.Stewie_1.0.jar&lt;br /&gt;
br2.MobyDickBot 1.6,http://robocode-archive.strangeautomata.com/robots/br2.MobyDickBot_1.6.jar&lt;br /&gt;
brainfade.melee.Dusk 0.44,http://robocode-archive.strangeautomata.com/robots/brainfade.melee.Dusk_0.44.jar&lt;br /&gt;
brainfade.melee.Genghis 0.36,http://robocode-archive.strangeautomata.com/robots/brainfade.melee.Genghis_0.36.jar&lt;br /&gt;
bts.mega.Gnarly 1.4,http://robocode-archive.strangeautomata.com/robots/bts.mega.Gnarly_1.4.jar&lt;br /&gt;
bts.wiki.RipCurl 0.9b,http://robocode-archive.strangeautomata.com/robots/bts.wiki.RipCurl_0.9b.jar&lt;br /&gt;
bvh.fnr.Fenrir 0.36l,http://robocode-archive.strangeautomata.com/robots/bvh.fnr.Fenrir_0.36l.jar&lt;br /&gt;
bvh.fry.Freya 0.82,http://robocode-archive.strangeautomata.com/robots/bvh.fry.Freya_0.82.jar&lt;br /&gt;
bvh.micro.Freya 0.3,http://robocode-archive.strangeautomata.com/robots/bvh.micro.Freya_0.3.jar&lt;br /&gt;
bvh.mini.Fenrir 0.39,http://robocode-archive.strangeautomata.com/robots/bvh.mini.Fenrir_0.39.jar&lt;br /&gt;
bvh.mini.Freya 0.55,http://robocode-archive.strangeautomata.com/robots/bvh.mini.Freya_0.55.jar&lt;br /&gt;
bwbaugh.nano.Tirunculus 0.0.0a,http://robocode-archive.strangeautomata.com/robots/bwbaugh.nano.Tirunculus_0.0.0a.jar&lt;br /&gt;
bzdp.BoxCar 2.0,http://robocode-archive.strangeautomata.com/robots/bzdp.BoxCar_2.0.jar&lt;br /&gt;
bzdp.Pansy 2.1,http://robocode-archive.strangeautomata.com/robots/bzdp.Pansy_2.1.jar&lt;br /&gt;
caimano.Furia_Ceca 0.22,http://robocode-archive.strangeautomata.com/robots/caimano.Furia_Ceca_0.22.jar&lt;br /&gt;
catcat20.Lambda 0.024,https://drive.google.com/uc?export=download&amp;amp;id=1KgQRpAJVYtrnX_M0YCUT3iS1SjInSvcX&lt;br /&gt;
catcat20.Rabbit 0.001,https://drive.google.com/uc?export=download&amp;amp;id=1Cz81GQX7u9qe0muFXWx4qm-lNOA0MXeE&lt;br /&gt;
catcat20.shape.Theta 0.018,https://drive.google.com/uc?export=download&amp;amp;id=1EXcQ5PlX7m2alnvlISipPF2ywsWPMSA0&lt;br /&gt;
cb.fire.Firestarter 2.0f,https://www.dropbox.com/s/96qhyuh648ufuju/cb.fire.Firestarter_2.0f.jar?dl=1&lt;br /&gt;
cb.nano.Insomnia 1.0,https://www.dropbox.com/s/3sl5bz9knsgxewe/cb.nano.Insomnia_1.0.jar?dl=1&lt;br /&gt;
cf.RiO.RiOx 4.2.1,http://robocode-archive.strangeautomata.com/robots/cf.RiO.RiOx_4.2.1.jar&lt;br /&gt;
cli.Dancer 1.1,http://robocode-archive.strangeautomata.com/robots/cli.Dancer_1.1.jar&lt;br /&gt;
cli.WasteOfAmmo 1.0,http://robocode-archive.strangeautomata.com/robots/cli.WasteOfAmmo_1.0.jar&lt;br /&gt;
co.edu.usb.rc.LidisTron 1.0,http://robocode-archive.strangeautomata.com/robots/co.edu.usb.rc.LidisTron_1.0.jar&lt;br /&gt;
com.blogspot.malinkody.DestrobotMalin 1.0,http://robocode-archive.strangeautomata.com/robots/com.blogspot.malinkody.DestrobotMalin_1.0.jar&lt;br /&gt;
com.cgarias.rc.AdvancedTrackerII 1.0,http://robocode-archive.strangeautomata.com/robots/com.cgarias.rc.AdvancedTrackerII_1.0.jar&lt;br /&gt;
com.cohesiva.robocode.ManOwaR 1.0,http://robocode-archive.strangeautomata.com/robots/com.cohesiva.robocode.ManOwaR_1.0.jar&lt;br /&gt;
com.spp.robocode.MostlyHarmless 010,https://drive.google.com/u/0/uc?id=1VAJUrVH2LCj94MJyQXBL9w8NtNeSoCtm&amp;amp;export=download&lt;br /&gt;
com.syncleus.robocode.Dreadnaught 0.1,http://robocode-archive.strangeautomata.com/robots/com.syncleus.robocode.Dreadnaught_0.1.jar&lt;br /&gt;
conscience.Electron 1.3g,http://robocode-archive.strangeautomata.com/robots/conscience.Electron_1.3g.jar&lt;br /&gt;
cre.Karolos 0.32,http://robocode-archive.strangeautomata.com/robots/cre.Karolos_0.32.jar&lt;br /&gt;
cs.Grudge 1.0,http://robocode-archive.strangeautomata.com/robots/cs.Grudge_1.0.jar&lt;br /&gt;
cs.sheldor.Talon 1.1,http://robocode-archive.strangeautomata.com/robots/cs.sheldor.Talon_1.1.jar&lt;br /&gt;
cs.Wren 1.0,http://robocode-archive.strangeautomata.com/robots/cs.Wren_1.0.jar&lt;br /&gt;
css.Delitioner 0.11,http://robocode-archive.strangeautomata.com/robots/css.Delitioner_0.11.jar&lt;br /&gt;
cvt.Firsty 1.0,http://robocode-archive.strangeautomata.com/robots/cvt.Firsty_1.0.jar&lt;br /&gt;
cw.megas.Blade 0.8,http://robocode-archive.strangeautomata.com/robots/cw.megas.Blade_0.8.jar&lt;br /&gt;
cx.BlestPain 1.41,http://robocode-archive.strangeautomata.com/robots/cx.BlestPain_1.41.jar&lt;br /&gt;
cx.mini.Nimrod 0.55,http://robocode-archive.strangeautomata.com/robots/cx.mini.Nimrod_0.55.jar&lt;br /&gt;
cx.Princess 1.0,http://robocode-archive.strangeautomata.com/robots/cx.Princess_1.0.jar&lt;br /&gt;
d414.nano.Quantum 1.2.2,https://drive.google.com/uc?export=download&amp;amp;id=1Y8wXN7jTrFOq9MBJeoMnkV38C8OqphgM&lt;br /&gt;
dans.Cinnamon 1.2,http://robocode-archive.strangeautomata.com/robots/dans.Cinnamon_1.2.jar&lt;br /&gt;
darkcanuck.B26354 1.06,http://robocode-archive.strangeautomata.com/robots/darkcanuck.B26354_1.06.jar&lt;br /&gt;
darkcanuck.Leon 1.01,http://robocode-archive.strangeautomata.com/robots/darkcanuck.Leon_1.01.jar&lt;br /&gt;
darwinsnightmare.DNGEN474UI85390C20S0R528 1.0,http://robocode-archive.strangeautomata.com/robots/darwinsnightmare.DNGEN474UI85390C20S0R528_1.0.jar&lt;br /&gt;
davidalves.net.DuelistMicroMelee 1.4,http://robocode-archive.strangeautomata.com/robots/davidalves.net.DuelistMicroMelee_1.4.jar&lt;br /&gt;
davidalves.net.DuelistMiniMelee 1.2,http://robocode-archive.strangeautomata.com/robots/davidalves.net.DuelistMiniMelee_1.2.jar&lt;br /&gt;
davidalves.net.DuelistNanoMelee 1.01,http://robocode-archive.strangeautomata.com/robots/davidalves.net.DuelistNanoMelee_1.01.jar&lt;br /&gt;
davidalves.Phoenix 0.54,https://github.com/aleksey-zhidkov/rc-repo-mirror/raw/master/davidalves.Phoenix_0.54.jar&lt;br /&gt;
DBall.Anarchy 0.1,http://robocode-archive.strangeautomata.com/robots/DBall.Anarchy_0.1.jar&lt;br /&gt;
DBall.NUKE 0.1,http://robocode-archive.strangeautomata.com/robots/DBall.NUKE_0.1.jar&lt;br /&gt;
dcs.Eater_of_Worlds 1.1.3-A,http://robocode-archive.strangeautomata.com/robots/dcs.Eater_of_Worlds_1.1.3-A.jar&lt;br /&gt;
deewiant.Anomaly 0.2,http://robocode-archive.strangeautomata.com/robots/deewiant.Anomaly_0.2.jar&lt;br /&gt;
de.simpleworks.robocode.bots.swiBot 1.0,http://robocode-archive.strangeautomata.com/robots/de.simpleworks.robocode.bots.swiBot_1.0.jar&lt;br /&gt;
de.simpleworks.robocode.bots.swiBot 1.1,http://robocode-archive.strangeautomata.com/robots/de.simpleworks.robocode.bots.swiBot_1.1.jar&lt;br /&gt;
dft.Calliope 5.6,http://robocode-archive.strangeautomata.com/robots/dft.Calliope_5.6.jar&lt;br /&gt;
disan.Chair 2.2.0,http://robocode-archive.strangeautomata.com/robots/disan.Chair_2.2.0.jar&lt;br /&gt;
divineomega.DivineBot 1.9.4.5,https://dl.dropboxusercontent.com/s/sk33qkpx7cfcmv6/divineomega.DivineBot_1.9.4.5.jar?dl=1&amp;amp;token_hash=AAGI4C3Fm8km-0aLNU3pUVE1JEZqx8UDV6qk5s8PoRgjhg&lt;br /&gt;
divineomega.TrialBot 0.003,https://dl.dropboxusercontent.com/s/an44muntp8f0p6h/divineomega.TrialBot_0.003.jar?token_hash=AAG5XTuv2fkEkTYhNIEJ0zre-SpWgK-jvKNqQ120pFeYSA&amp;amp;dl=1&lt;br /&gt;
djc.DynaBot 0.1.1,http://robocode-archive.strangeautomata.com/robots/djc.DynaBot_0.1.1.jar&lt;br /&gt;
djdjdj.NanoSkunk10 1.0,http://robocode-archive.strangeautomata.com/robots/djdjdj.NanoSkunk10_1.0.jar&lt;br /&gt;
dl.BetterWalls 1.0,http://robocode-archive.strangeautomata.com/robots/dl.BetterWalls_1.0.jar&lt;br /&gt;
dmh.robocode.robot.BlackDeath 9.2,https://www.dropbox.com/s/tads4vk7jrgmv6u/dmh.robocode.robot.BlackDeath_9.2.jar?dl=1&lt;br /&gt;
dmh.robocode.robot.RedDwarf 0.4,https://www.dropbox.com/s/n0k5n5iyr66ssut/dmh.robocode.robot.RedDwarf_0.4.jar?dl=1&lt;br /&gt;
donjezza.Jezza 1.0,http://robocode-archive.strangeautomata.com/robots/donjezza.Jezza_1.0.jar&lt;br /&gt;
donjezza.Muncho 1.0,http://robocode-archive.strangeautomata.com/robots/donjezza.Muncho_1.0.jar&lt;br /&gt;
drd.Dreadknoght 0.9,http://robocode-archive.strangeautomata.com/robots/drd.Dreadknoght_0.9.jar&lt;br /&gt;
ds.Oo 2.2,http://robocode-archive.strangeautomata.com/robots/ds.Oo_2.2.jar&lt;br /&gt;
dsw.StaticD 1.0,http://robocode-archive.strangeautomata.com/robots/dsw.StaticD_1.0.jar&lt;br /&gt;
DTF.Kludgy 1.2b,http://robocode-archive.strangeautomata.com/robots/DTF.Kludgy_1.2b.jar&lt;br /&gt;
dummy.micro.Sparrow 2.5,http://robocode-archive.strangeautomata.com/robots/dummy.micro.Sparrow_2.5.jar&lt;br /&gt;
dummy.mini.Scimitar 1.01,http://robocode-archive.strangeautomata.com/robots/dummy.mini.Scimitar_1.01.jar&lt;br /&gt;
EBBU.Sim2 1.02,http://robocode-archive.strangeautomata.com/robots/EBBU.Sim2_1.02.jar&lt;br /&gt;
edu.otg.spr.TheTeacher 1.2,http://robocode-archive.strangeautomata.com/robots/edu.otg.spr.TheTeacher_1.2.jar&lt;br /&gt;
eem.EvBot v4.6.16,http://robocode-archive.strangeautomata.com/robots/eem.EvBot_v4.6.16.jar&lt;br /&gt;
eem.EvBotNG v12.8,http://robocode-archive.strangeautomata.com/robots/eem.EvBotNG_v12.8.jar&lt;br /&gt;
eem.IWillFireNoBullet v2.8,http://robocode-archive.strangeautomata.com/robots/eem.IWillFireNoBullet_v2.8.jar&lt;br /&gt;
EH.Eagle 1.0.6,http://robocode-archive.strangeautomata.com/robots/EH.Eagle_1.0.6.jar&lt;br /&gt;
ejb.Polaris 1.0.1,http://robocode-archive.strangeautomata.com/robots/ejb.Polaris_1.0.1.jar&lt;br /&gt;
el.JumpShoot 0.2,http://robocode-archive.strangeautomata.com/robots/el.JumpShoot_0.2.jar&lt;br /&gt;
eld.Hmm 1.0,http://robocode-archive.strangeautomata.com/robots/eld.Hmm_1.0.jar&lt;br /&gt;
emp.Yngwie 1.11,http://robocode-archive.strangeautomata.com/robots/emp.Yngwie_1.11.jar&lt;br /&gt;
erdnis.Rover 0.3,http://robocode-archive.strangeautomata.com/robots/erdnis.Rover_0.3.jar&lt;br /&gt;
et.Predator 1.8,http://robocode-archive.strangeautomata.com/robots/et.Predator_1.8.jar&lt;br /&gt;
evd.X1 0.01,http://robocode-archive.strangeautomata.com/robots/evd.X1_0.01.jar&lt;br /&gt;
exauge.GateKeeper 1.1.121g,http://robocode-archive.strangeautomata.com/robots/exauge.GateKeeper_1.1.121g.jar&lt;br /&gt;
fire219.CatBot 1.0,https://dl.dropbox.com/s/bhboah2ps3r9xuj/fire219.CatBot_1.0.jar?dl=0&lt;br /&gt;
florent.XSeries.X2 0.12,http://wesley3.free.fr/florent.XSeries.X2_0.12.jar&lt;br /&gt;
fm.claire 1.7,http://robocode-archive.strangeautomata.com/robots/fm.claire_1.7.jar&lt;br /&gt;
fm.mammillarias 1.3,http://robocode-archive.strangeautomata.com/robots/fm.mammillarias_1.3.jar&lt;br /&gt;
fnc.bandit.Bandit 5.2.0,http://robocode-archive.strangeautomata.com/robots/fnc.bandit.Bandit_5.2.0.jar&lt;br /&gt;
fowl3628800.LightningBolt 2.6.0,http://robocode-archive.strangeautomata.com/robots/fowl3628800.LightningBolt_2.6.0.jar&lt;br /&gt;
franzor.Lizt 1.3.1,http://robocode-archive.strangeautomata.com/robots/franzor.Lizt_1.3.1.jar&lt;br /&gt;
fullsail.LaxativeTeaTwo 1.0,http://robocode-archive.strangeautomata.com/robots/fullsail.LaxativeTeaTwo_1.0.jar&lt;br /&gt;
fullsail.TimbotNoPrediction 1.0,http://robocode-archive.strangeautomata.com/robots/fullsail.TimbotNoPrediction_1.0.jar&lt;br /&gt;
fullsail.SweetTea 1.1,http://robocode-archive.strangeautomata.com/robots/fullsail.SweetTea_1.1.jar&lt;br /&gt;
fwb.Nine 1.0.1,http://robocode-archive.strangeautomata.com/robots/fwb.Nine_1.0.1.jar&lt;br /&gt;
GarmBox.Anger 1.0,https://drive.google.com/uc?export=download&amp;amp;id=12mUMd9tKHdCAV_JYVSuyJfkwVl6HZ42y&lt;br /&gt;
GarmBox.Oranges 1.0,https://drive.google.com/uc?export=download&amp;amp;id=1b6sXfphAg_ARqbZ1-Kg2pzILY2jObElv&lt;br /&gt;
Gecko.ultimateGeckoBot 1.0,http://robocode-archive.strangeautomata.com/robots/Gecko.ultimateGeckoBot_1.0.jar&lt;br /&gt;
germ.TheMind .2,http://robocode-archive.strangeautomata.com/robots/germ.TheMind_.2.jar&lt;br /&gt;
gg.Squaraus 0.6,http://robocode-archive.strangeautomata.com/robots/gg.Squaraus_0.6.jar&lt;br /&gt;
gg.Wolverine 2.0,http://robocode-archive.strangeautomata.com/robots/gg.Wolverine_2.0.jar&lt;br /&gt;
gh.Griezel 0.5.2,http://robocode-archive.strangeautomata.com/robots/gh.Griezel_0.5.2.jar&lt;br /&gt;
gh.micro.Gruweltje 0.7,http://robocode-archive.strangeautomata.com/robots/gh.micro.Gruweltje_0.7.jar&lt;br /&gt;
gh.mini.Griezel 0.2,http://robocode-archive.strangeautomata.com/robots/gh.mini.Griezel_0.2.jar&lt;br /&gt;
gh.mini.GrubbmOne 1.0,http://robocode-archive.strangeautomata.com/robots/gh.mini.GrubbmOne_1.0.jar&lt;br /&gt;
gh.mini.Gruwel 0.9,http://robocode-archive.strangeautomata.com/robots/gh.mini.Gruwel_0.9.jar&lt;br /&gt;
gh.nano.Grofvuil 0.2,http://robocode-archive.strangeautomata.com/robots/gh.nano.Grofvuil_0.2.jar&lt;br /&gt;
ghent.ArthurPanzergon 1.0.0,http://franck.jousseaume.free.fr/robocode/ArthurPanzergon_1.0.0.jar&lt;br /&gt;
gimp.GimpBot 0.1,http://robocode-archive.strangeautomata.com/robots/gimp.GimpBot_0.1.jar&lt;br /&gt;
gjr.Cephalosporin 0.1,http://robocode-archive.strangeautomata.com/robots/gjr.Cephalosporin_0.1.jar&lt;br /&gt;
goblin.Bender 2.4,http://robocode-archive.strangeautomata.com/robots/goblin.Bender_2.4.jar&lt;br /&gt;
gre.svman4.Leonidas 1.3.2,https://drive.google.com/uc?export=download&amp;amp;id=1ZeSWWgjvqsnq-44JyQR776ebBuOnTTd3&lt;br /&gt;
gre.svman4.Morfeas 1.4.1,https://drive.google.com/uc?export=download&amp;amp;id=1D4P_zT0zqxasqpCNoFB34KikbJKVXTn0&lt;br /&gt;
Grystrion.RandomTrackerNOREV 1.0,https://www.dropbox.com/s/9ym5golnwurhfxw/Grystrion.RandomTrackerNOREV_1.0.jar?dl=1&lt;br /&gt;
Grystrion.TrackerWO 1.0,https://www.dropbox.com/s/f1j88yf69zn37jp/Grystrion.TrackerWO_1.0.jar?dl=1&lt;br /&gt;
hvilela.HVilela 0.9,http://robocode-archive.strangeautomata.com/robots/hvilela.HVilela_0.9.jar&lt;br /&gt;
ICS4U1.Patrick_White_Schrodinger 1.1,http://robocode-archive.strangeautomata.com/robots/ICS4U1.Patrick_White_Schrodinger_1.1.jar&lt;br /&gt;
inonit.robocode.javascript.MyFirstRobot 1.1,https://github.com/davidpcaldwell/roborumble-participants/blob/master/inonit.robocode.javascript.MyFirstRobot_1.1.jar?raw=true&lt;br /&gt;
intruder.PrairieWolf 2.61,http://robocode-archive.strangeautomata.com/robots/intruder.PrairieWolf_2.61.jar&lt;br /&gt;
jab.DiamondStealer 5,http://robocode-archive.strangeautomata.com/robots/jab.DiamondStealers_5.jar&lt;br /&gt;
jangs.ns51 1.0,http://robocode-archive.strangeautomata.com/robots/jangs.ns51_1.0.jar&lt;br /&gt;
jaybot.adv.bots.JayBot 2.0,http://robocode-archive.strangeautomata.com/robots/jaybot.adv.bots.JayBot_2.0.jar&lt;br /&gt;
jaybot.bots.Oddball 4.0,http://robocode-archive.strangeautomata.com/robots/jaybot.bots.Oddball_4.0.jar&lt;br /&gt;
jcs.Seth 1.8,http://robocode-archive.strangeautomata.com/robots/jcs.Seth_1.8.jar&lt;br /&gt;
jdw.Hurricane 1.4,http://robocode-archive.strangeautomata.com/robots/jdw.Hurricane_1.4.jar&lt;br /&gt;
jekl.StoneGhost 0.7,http://robocode-archive.strangeautomata.com/robots/jekl.StoneGhost_0.7.jar&lt;br /&gt;
jeremyreeder.collective.Prophet 5,http://robocode-archive.strangeautomata.com/robots/jeremyreeder.collective.Prophet_5.jar&lt;br /&gt;
jeremyreeder.Vincent 2011.12.09,http://robocode-archive.strangeautomata.com/robots/jeremyreeder.Vincent_2011.12.09.jar&lt;br /&gt;
jje.BagPuss 1.2,http://robocode-archive.strangeautomata.com/robots/jje.BagPuss_1.2.jar&lt;br /&gt;
jk.melee.Neuromancer 7.12,https://www.dropbox.com/s/ctjzl08u2f3x3r0/jk.melee.Neuromancer_7.12.jar?dl=1&lt;br /&gt;
jlm.javaDisturbance 0.59,http://robocode-archive.strangeautomata.com/robots/jlm.javaDisturbance_0.59.jar&lt;br /&gt;
joe.ADinosaur 1.0,http://robocode-archive.strangeautomata.com/robots/joe.ADinosaur_1.0.jar&lt;br /&gt;
jok.PheonixM 0.1.2,http://robocode-archive.strangeautomata.com/robots/jok.PheonixM_0.1.2.jar&lt;br /&gt;
josago.Jorgito 0.16,http://robocode-archive.strangeautomata.com/robots/josago.Jorgito_0.16.jar&lt;br /&gt;
jp.Perpy 16.0,http://robocode-archive.strangeautomata.com/robots/jp.Perpy_16.0.jar&lt;br /&gt;
jrm.Test0 1.0,http://robocode-archive.strangeautomata.com/robots/jrm.Test0_1.0.jar&lt;br /&gt;
js.PinBall 1.6,http://robocode-archive.strangeautomata.com/robots/js.PinBall_1.6.jar&lt;br /&gt;
jsal.Jsalbot 1.0,http://robocode-archive.strangeautomata.com/robots/jsal.Jsalbot_1.0.jar&lt;br /&gt;
justin.Mallais 14.0,http://robocode-archive.strangeautomata.com/robots/justin.Mallais_14.0.jar&lt;br /&gt;
justin.DemonicRage 3.4,http://robocode-archive.strangeautomata.com/robots/justin.DemonicRage_3.4.jar&lt;br /&gt;
jwirde.Gort 2.0,http://robocode-archive.strangeautomata.com/robots/jwirde.Gort_2.0.jar&lt;br /&gt;
jwst.DAD.DarkAndDarker 1.1,http://robocode-archive.strangeautomata.com/robots/jwst.DAD.DarkAndDarker_1.1.jar&lt;br /&gt;
kano.gamma.KanoGamma 1.8,http://robocode-archive.strangeautomata.com/robots/kano.gamma.KanoGamma_1.8.jar&lt;br /&gt;
kawigi.micro.Shiz 1.1,http://robocode-archive.strangeautomata.com/robots/kawigi.micro.Shiz_1.1.jar&lt;br /&gt;
kawigi.mini.Coriantumr 1.1,http://robocode-archive.strangeautomata.com/robots/kawigi.mini.Coriantumr_1.1.jar&lt;br /&gt;
kawigi.mini.Fhqwhgads 1.1,http://robocode-archive.strangeautomata.com/robots/kawigi.mini.Fhqwhgads_1.1.jar&lt;br /&gt;
kawigi.nano.Lib 1.0,http://robocode-archive.strangeautomata.com/robots/kawigi.nano.Lib_1.0.jar&lt;br /&gt;
kawigi.robot.Girl 1.2,http://robocode-archive.strangeautomata.com/robots/kawigi.robot.Girl_1.2.jar&lt;br /&gt;
kawigi.sbf.FloodHT 0.9.2,http://robocode-archive.strangeautomata.com/robots/kawigi.sbf.FloodHT_0.9.2.jar&lt;br /&gt;
kawigi.sbf.FloodSonnet 0.9,http://robocode-archive.strangeautomata.com/robots/kawigi.sbf.FloodSonnet_0.9.jar&lt;br /&gt;
kawigi.spare.SpareParts 0.7.6nosnd,http://robocode-archive.strangeautomata.com/robots/kawigi.spare.SpareParts_0.7.6nosnd.jar&lt;br /&gt;
kc.micro.Figment 1.0,https://drive.google.com/uc?export=download&amp;amp;id=149sdMTNnpP57iGcIZ995AeZnbJHX5EL-&lt;br /&gt;
kc.mini.Mirage 0.2,https://drive.google.com/uc?export=download&amp;amp;id=1d2pv16MB2BXdAODf2mTGpS-yRIYOJJcT&lt;br /&gt;
kdf.KoulDestroyer 1.0,https://icarus.cs.weber.edu/~kfeuz/downloads/kdf.KoulDestroyer_1.0.jar&lt;br /&gt;
kid.Gladiator .7.2,http://robocode-archive.strangeautomata.com/robots/kid.Gladiator_.7.2.jar&lt;br /&gt;
kid.test.NightFox .2,http://robocode-archive.strangeautomata.com/robots/kid.test.NightFox_.2.jar&lt;br /&gt;
KiraNL.Chupacabra 0.4,http://robocode-archive.strangeautomata.com/robots/KiraNL.Chupacabra_0.4.jar&lt;br /&gt;
kinsen.melee.Angsaichmophobia 1.8c,http://robocode-archive.strangeautomata.com/robots/kinsen.melee.Angsaichmophobia_1.8c.jar&lt;br /&gt;
Krabb.akim2.Akim2 1.1b,http://robocode-archive.strangeautomata.com/robots/Krabb.akim2.Akim2_1.1b.jar&lt;br /&gt;
Krabb.sliNk.Garm 0.9u,http://robocode-archive.strangeautomata.com/robots/Krabb.sliNk.Garm_0.9u.jar&lt;br /&gt;
krillr.mini.JointStrike 2.0.0,http://robocode-archive.strangeautomata.com/robots/krillr.mini.JointStrike_2.0.0.jar&lt;br /&gt;
kurios.DOSexe .9a,http://robocode-archive.strangeautomata.com/robots/kurios.DOSexe_.9a.jar&lt;br /&gt;
kurios.DOSexe .9b,http://robocode-archive.strangeautomata.com/robots/kurios.DOSexe_.9b.jar&lt;br /&gt;
kvk.HebusLeTroll 0.35,http://robocode-archive.strangeautomata.com/robots/kvk.HebusLeTroll_0.35.jar&lt;br /&gt;
labg.Cataclysm 2.05,http://robocode-archive.strangeautomata.com/robots/labg.Cataclysm_2.05.jar&lt;br /&gt;
lambdaxy.TBot 0.1,http://robocode-archive.strangeautomata.com/robots/lambdaxy.TBot_0.1.jar&lt;br /&gt;
lessonz.robocode.Oz 0.5.0,http://robocode-archive.strangeautomata.com/robots/lessonz.robocode.Oz_0.5.0.jar&lt;br /&gt;
lmk.ACPFinal 0.1,http://robocode-archive.strangeautomata.com/robots/lmk.ACPFinal_0.1.jar&lt;br /&gt;
Lo_Ian.Gandalf_V4 4.0,http://robocode-archive.strangeautomata.com/robots/Lo_Ian.Gandalf_V4_4.0.jar&lt;br /&gt;
logiblocs.SittingDroid 1.0,http://robocode-archive.strangeautomata.com/robots/logiblocs.SittingDroid_1.0.jar&lt;br /&gt;
lorneswork.Predator 1.0,http://robocode-archive.strangeautomata.com/robots/lorneswork.Predator_1.0.jar&lt;br /&gt;
lrem.Spectre 0.4.4,http://robocode-archive.strangeautomata.com/robots/lrem.Spectre_0.4.4.jar&lt;br /&gt;
lrem.micro.MoggFanatic 0.2,http://robocode-archive.strangeautomata.com/robots/lrem.micro.MoggFanatic_0.2.jar&lt;br /&gt;
lrem.micro.SpikeSoldier 0.4,http://robocode-archive.strangeautomata.com/robots/lrem.micro.SpikeSoldier_0.4.jar&lt;br /&gt;
lunchie.Lunchbox 0.93,http://robocode-archive.strangeautomata.com/robots/lunchie.Lunchbox_0.93.jar&lt;br /&gt;
lxx.ConceptA 0.8,https://github.com/aleksey-zhidkov/ConceptA/raw/master/builds/lxx.ConceptA_0.8.jar&lt;br /&gt;
m3thos.Eva00 1.1,http://robocode-archive.strangeautomata.com/robots/m3thos.Eva00_1.1.jar&lt;br /&gt;
m3thos.Eva02 0.7.1,http://robocode-archive.strangeautomata.com/robots/m3thos.Eva02_0.7.1.jar&lt;br /&gt;
m3thos.mini.Eva01 0.5.5,http://robocode-archive.strangeautomata.com/robots/m3thos.mini.Eva01_0.5.5.jar&lt;br /&gt;
maribo.FollowFire 1,http://robocode-archive.strangeautomata.com/robots/maribo.FollowFire_1.jar&lt;br /&gt;
maribo.IotaCT 1.1,http://robocode-archive.strangeautomata.com/robots/maribo.IotaCT_1.1.jar&lt;br /&gt;
maribo.melee.BMV 0.1,http://robocode-archive.strangeautomata.com/robots/maribo.melee.BMV_0.1.jar&lt;br /&gt;
maribo.mini.MiniQuester 0.1,https://dl.dropboxusercontent.com/s/67bfz8fhhrnc34j/maribo.mini.MiniQuester_0.1.jar&lt;br /&gt;
maribo.Quester 0.3,https://dl.dropboxusercontent.com/s/3jtoh2u1qdulof4/maribo.Quester_0.3.jar&lt;br /&gt;
matt.advanced.Katana 1.0,http://robocode-archive.strangeautomata.com/robots/matt.advanced.Katana_1.0.jar&lt;br /&gt;
matt.UnderDark3 2.4.34,http://robocode-archive.strangeautomata.com/robots/matt.UnderDark3_2.4.34.jar&lt;br /&gt;
mb.Beast 0.1,http://robocode-archive.strangeautomata.com/robots/mb.Beast_0.1.jar&lt;br /&gt;
mbh.Mbh 0.1,http://robocode-archive.strangeautomata.com/robots/mbh.Mbh_0.1.jar&lt;br /&gt;
mbro.Detektor3 0.1.1,http://robocode-archive.strangeautomata.com/robots/mbro.Detektor3_0.1.1.jar&lt;br /&gt;
mc2.enemy.Original 0.9,http://robocode-archive.strangeautomata.com/robots/mc2.enemy.Original_0.9.jar&lt;br /&gt;
mk.Alpha 0.2.1,http://robocode-archive.strangeautomata.com/robots/mk.Alpha_0.2.1.jar&lt;br /&gt;
mld.DustBunny 3.8,http://robocode-archive.strangeautomata.com/robots/mld.DustBunny_3.8.jar&lt;br /&gt;
mld.Infinity 2.2,http://robocode-archive.strangeautomata.com/robots/mld.Infinity_2.2.jar&lt;br /&gt;
mld.Wisdom 1.0,http://robocode-archive.strangeautomata.com/robots/mld.Wisdom_1.0.jar&lt;br /&gt;
mme.NikeEnhanced 2.0,http://robocode-archive.strangeautomata.com/robots/mme.NikeEnhanced_2.0.jar&lt;br /&gt;
mn.nano.perceptual.Impact 1.3.0,https://www.dropbox.com/s/njuuaycr3qswlgu/mn.nano.perceptual.Impact_1.3.0.jar?dl=1&lt;br /&gt;
mn.Combat 3.25.0,https://www.dropbox.com/s/5iufszjp28qfptw/mn.Combat_3.25.0.jar?dl=1&lt;br /&gt;
morbid.MorbidPriest 1.0,http://robocode-archive.strangeautomata.com/robots/morbid.MorbidPriest_1.0.jar&lt;br /&gt;
ms.Ares 0.19,http://robocode-archive.strangeautomata.com/robots/ms.Ares_0.19.jar&lt;br /&gt;
myl.micro.Troodon 1.10,http://robocode-archive.strangeautomata.com/robots/myl.micro.Troodon_1.10.jar&lt;br /&gt;
myl.nano.Graviton 1.10,http://robocode-archive.strangeautomata.com/robots/myl.nano.Graviton_1.10.jar&lt;br /&gt;
myl.nano.KomoriNinja 1.1,http://robocode-archive.strangeautomata.com/robots/myl.nano.KomoriNinja_1.1.jar&lt;br /&gt;
mym.EdgeStalker 1.0,http://robocode-archive.strangeautomata.com/robots/mym.EdgeStalker_1.0.jar&lt;br /&gt;
mz.AntiGrav 1.0,http://robocode-archive.strangeautomata.com/robots/mz.AntiGrav_1.0.jar&lt;br /&gt;
mz.MicroGodMelee 1,http://robocode-archive.strangeautomata.com/robots/mz.MicroGodMelee_1.jar&lt;br /&gt;
mz.MicroSheep 1.0,http://robocode-archive.strangeautomata.com/robots/mz.MicroSheep_1.0.jar&lt;br /&gt;
mz.Cork 0.1,http://robocode-archive.strangeautomata.com/robots/mz.Cork_0.1.jar&lt;br /&gt;
mz.NanoGod 2.02,http://robocode-archive.strangeautomata.com/robots/mz.NanoGod_2.02.jar&lt;br /&gt;
nat.PallasHawk 1.0,http://robocode-archive.strangeautomata.com/robots/nat.PallasHawk_1.0.jar&lt;br /&gt;
ne.Chimera 1.2,http://robocode-archive.strangeautomata.com/robots/ne.Chimera_1.2.jar&lt;br /&gt;
nic.Nicator 2.4,http://robocode-archive.strangeautomata.com/robots/nic.Nicator_2.4.jar&lt;br /&gt;
Noran.BitchingElk 0.054,http://robocode-archive.strangeautomata.com/robots/Noran.BitchingElk_0.054.jar&lt;br /&gt;
ntc.ControlledChaos 1.1.4,http://robocode-archive.strangeautomata.com/robots/ntc.ControlledChaos_1.1.4.jar&lt;br /&gt;
ntc.Opposite 1.5,http://robocode-archive.strangeautomata.com/robots/ntc.Opposite_1.5.jar&lt;br /&gt;
nz.jdc.nano.GridFu 1.0,http://robocode-archive.strangeautomata.com/robots/nz.jdc.nano.GridFu_1.0.jar&lt;br /&gt;
oa.weak.BotherBot 0.1,http://robocode-archive.strangeautomata.com/robots/oa.weak.BotherBot_0.1.jar&lt;br /&gt;
oa.weak.FlyMk1 0.1,http://robocode-archive.strangeautomata.com/robots/oa.weak.FlyMk1_0.1.jar&lt;br /&gt;
oog.melee.Capulet 1.2,http://robocode-archive.strangeautomata.com/robots/oog.melee.Capulet_1.2.jar&lt;br /&gt;
oog.melee.CapuletDroid 1.1,http://robocode-archive.strangeautomata.com/robots/oog.melee.CapuletDroid_1.1.jar&lt;br /&gt;
oog.melee.Corsair 1.0,http://robocode-archive.strangeautomata.com/robots/oog.melee.Corsair_1.0.jar&lt;br /&gt;
oog.melee.Mercutio 1.0,http://robocode-archive.strangeautomata.com/robots/oog.melee.Mercutio_1.0.jar&lt;br /&gt;
origin.SleepSiphon 1.7b,https://github.com/John-Paul-R/SleepSiphon/releases/download/1.7b/origin.SleepSiphon_1.7b.jar&lt;br /&gt;
pa.Improved 1.0,http://robocode-archive.strangeautomata.com/robots/pa.Improved_1.0.jar&lt;br /&gt;
pac.ABC 2.1,http://robocode-archive.strangeautomata.com/robots/pac.ABC_2.1.jar&lt;br /&gt;
panzer.Panzer 0.2,http://robocode-archive.strangeautomata.com/robots/panzer.Panzer_0.2.jar&lt;br /&gt;
patson.PatsonTestBot 1.0,http://robocode-archive.strangeautomata.com/robots/patson.PatsonTestBot_1.0.jar&lt;br /&gt;
pbg.R2D2 1.0,http://robocode-archive.strangeautomata.com/robots/pbg.R2D2_1.0.jar&lt;br /&gt;
pbg.NinjaX 1.2,https://github.com/realr2d2/Bots/blob/gh-pages/pbg.NinjaX_1.2.jar?raw=true&lt;br /&gt;
TNT.TNT 0.99.1,http://robocode-archive.strangeautomata.com/robots/TNT.TNT_0.99.1.jar&lt;br /&gt;
pe.minimelee.SandboxMiniMelee 1.1,http://robocode-archive.strangeautomata.com/robots/pe.minimelee.SandboxMiniMelee_1.1.jar&lt;br /&gt;
pe.SandboxDT 2.71m,http://robocode-archive.strangeautomata.com/robots/pe.SandboxDT_2.71m.jar&lt;br /&gt;
pe.SandboxLump 1.52,http://robocode-archive.strangeautomata.com/robots/pe.SandboxLump_1.52.jar&lt;br /&gt;
pedersen.Grishnakh 1.0,http://robocode-archive.strangeautomata.com/robots/pedersen.Grishnakh_1.0.jar&lt;br /&gt;
pedersen.Moron 2.0,http://robocode-archive.strangeautomata.com/robots/pedersen.Moron_2.0.jar&lt;br /&gt;
pedersen.Ugluk 1.1.1,http://robocode-archive.strangeautomata.com/robots/pedersen.Ugluk_1.1.1.jar&lt;br /&gt;
pez.mini.ChironexFleckeri 0.5,http://robocode-archive.strangeautomata.com/robots/pez.mini.ChironexFleckeri_0.5.jar&lt;br /&gt;
pfvicm.Sobieski 7.2.3b,http://robocode-archive.strangeautomata.com/robots/pfvicm.Sobieski_7.2.3b.jar&lt;br /&gt;
ph.melee.ArcherME 0.3,http://robocode-archive.strangeautomata.com/robots/ph.melee.ArcherME_0.3.jar&lt;br /&gt;
Polkwane.SmashMelee 1.0,https://dl.dropboxusercontent.com/s/hog8g5km2pu3q1i/Polkwane.SmashMelee_1.0.jar?token_hash=AAEYkudeilgEUEILMqRqcdMrqBYFMaGSzuqXAO6BMVi2gQ&amp;amp;dl=1&lt;br /&gt;
positive.Portia 1.26e,http://robocode-archive.strangeautomata.com/robots/positive.Portia_1.26e.jar&lt;br /&gt;
PSW.Relentless 0.1,http://robocode-archive.strangeautomata.com/robots/PSW.Relentless_0.1.jar&lt;br /&gt;
pulsar.PulsarMax 0.8.9,http://robocode-archive.strangeautomata.com/robots/pulsar.PulsarMax_0.8.9.jar&lt;br /&gt;
qohnil.blot.BlotBot 3.61,http://robocode-archive.strangeautomata.com/robots/qohnil.blot.BlotBot_3.61.jar&lt;br /&gt;
qualidafial.MajorDick 1.0.1,https://www.dropbox.com/sh/n570kf8rsq6fuw2/vVQSIJJnAS/qualidafial.MajorDick_1.0.1.jar?dl=1&lt;br /&gt;
Queens_teamrobot.UltraRazor 1.0,http://robocode-archive.strangeautomata.com/robots/Queens_teamrobot.UltraRazor_1.0.jar&lt;br /&gt;
radnor.DoctorBob 1.42,http://robocode-archive.strangeautomata.com/robots/radnor.DoctorBob_1.42.jar&lt;br /&gt;
rampancy.Durandal 2.1d,http://robocode-archive.strangeautomata.com/robots/rampancy.Durandal_2.1d.jar&lt;br /&gt;
ratosh.Nobo 0.21,http://robocode-archive.strangeautomata.com/robots/ratosh.Nobo_0.21.jar&lt;br /&gt;
ratosh.Wesco 1.4,http://robocode-archive.strangeautomata.com/robots/ratosh.Wesco_1.4.jar&lt;br /&gt;
rdm.Dueler 0.4x,https://drive.google.com/uc?export=download&amp;amp;id=16x234SaadG-76wT0TJhpyDTxdQhO-j3j&lt;br /&gt;
rdt199.Warlord 0.73,http://robocode-archive.strangeautomata.com/robots/rdt199.Warlord_0.73.jar&lt;br /&gt;
repositorio.NanoStep 1.0,http://robocode-archive.strangeautomata.com/robots/repositorio.NanoStep_1.0.jar&lt;br /&gt;
robar.nano.Assertive_Melee 0.2,http://robocode-archive.strangeautomata.com/robots/robar.nano.Assertive_Melee_0.2.jar&lt;br /&gt;
rrh.Iwillfindyou 2.0,https://drive.google.com/uc?export=download&amp;amp;id=1wE-V_PQeMvKLisPmM8s6JEaznXEHYAIt&lt;br /&gt;
rsalesc.roborio.RoborioPorradeiro 1.1b,http://robocode-archive.strangeautomata.com/robots/rsalesc.roborio.RoborioPorradeiro_1.1b.jar&lt;br /&gt;
rsalesc.melee.Medina 0.4.5,http://robocode-archive.strangeautomata.com/robots/rsalesc.melee.Medina_0.4.5.jar&lt;br /&gt;
rsalesc.melee.Monk 0.3.6c,http://robocode-archive.strangeautomata.com/robots/rsalesc.melee.Monk_0.3.6c.jar&lt;br /&gt;
rtk.Tachikoma 1.0,http://robocode-archive.strangeautomata.com/robots/rtk.Tachikoma_1.0.jar&lt;br /&gt;
rz.Aleph 0.34,http://robocode-archive.strangeautomata.com/robots/rz.Aleph_0.34.jar&lt;br /&gt;
rz.GlowBlowMelee 1.4,http://robocode-archive.strangeautomata.com/robots/rz.GlowBlowMelee_1.4.jar&lt;br /&gt;
rz.HawkOnFire 0.1,http://robocode-archive.strangeautomata.com/robots/rz.HawkOnFire_0.1.jar&lt;br /&gt;
sadoner.killer 0.2,http://robocode-archive.strangeautomata.com/robots/sadoner.killer_0.2.jar&lt;br /&gt;
sam.Samspin 1.0,http://robocode-archive.strangeautomata.com/robots/sam.Samspin_1.0.jar&lt;br /&gt;
sample.Corners 1.0,http://robocode-archive.strangeautomata.com/robots/sample.Corners_1.0.jar&lt;br /&gt;
sample.Crazy 1.0,http://robocode-archive.strangeautomata.com/robots/sample.Crazy_1.0.jar&lt;br /&gt;
sample.Fire 1.0,http://robocode-archive.strangeautomata.com/robots/sample.Fire_1.0.jar&lt;br /&gt;
sample.MyFirstJuniorRobot 1.0,http://robocode-archive.strangeautomata.com/robots/sample.MyFirstJuniorRobot_1.0.jar&lt;br /&gt;
sample.MyFirstRobot 1.0,http://robocode-archive.strangeautomata.com/robots/sample.MyFirstRobot_1.0.jar&lt;br /&gt;
sample.RamFire 1.0,http://robocode-archive.strangeautomata.com/robots/sample.RamFire_1.0.jar&lt;br /&gt;
sample.SittingDuck 1.0,http://robocode-archive.strangeautomata.com/robots/sample.SittingDuck_1.0.jar&lt;br /&gt;
sample.SpinBot 1.0,http://robocode-archive.strangeautomata.com/robots/sample.SpinBot_1.0.jar&lt;br /&gt;
sample.Target 1.0,http://robocode-archive.strangeautomata.com/robots/sample.Target_1.0.jar&lt;br /&gt;
sample.Tracker 1.0,http://robocode-archive.strangeautomata.com/robots/sample.Tracker_1.0.jar&lt;br /&gt;
sample.TrackFire 1.0,http://robocode-archive.strangeautomata.com/robots/sample.TrackFire_1.0.jar&lt;br /&gt;
sample.VelociRobot 1.0,http://robocode-archive.strangeautomata.com/robots/sample.VelociRobot_1.0.jar&lt;br /&gt;
sample.Walls 1.0,http://robocode-archive.strangeautomata.com/robots/sample.Walls_1.0.jar&lt;br /&gt;
sanyi.mikrobi.Roberto 1.0,http://robocode-archive.strangeautomata.com/robots/sanyi.mikrobi.Roberto_1.0.jar&lt;br /&gt;
sanja.First 0.1,http://robocode-archive.strangeautomata.com/robots/sanja.First_0.1.jar&lt;br /&gt;
sch.Simone 0.3d,http://robocode-archive.strangeautomata.com/robots/sch.Simone_0.3d.jar&lt;br /&gt;
sgp.JollyNinja 3.53,http://robocode-archive.strangeautomata.com/robots/sgp.JollyNinja_3.53.jar&lt;br /&gt;
SHAM.WOW 1.4,http://robocode-archive.strangeautomata.com/robots/SHAM.WOW_1.4.jar&lt;br /&gt;
sheldor.melee.nano.NaturalScience 1.2.1,https://github.com/sheldor-robocode/jar-files/raw/main/sheldor.melee.nano.NaturalScience_1.2.1.jar&lt;br /&gt;
sheldor.melee.nano.TestMelee 0.1,http://robocode-archive.strangeautomata.com/robots/sheldor.melee.nano.TestMelee_0.1.jar&lt;br /&gt;
sheldor.nano.PointInLineRRAL 1.0.0,http://robocode-archive.strangeautomata.com/robots/sheldor.nano.PointInLineRRAL_1.0.0.jar&lt;br /&gt;
shinh.Entangled 0.3,http://robocode-archive.strangeautomata.com/robots/shinh.Entangled_0.3.jar&lt;br /&gt;
shrub.Silver v048,http://robocode-archive.strangeautomata.com/robots/shrub.Silver_v048.jar&lt;br /&gt;
shrub.Vapour v159,http://robocode-archive.strangeautomata.com/robots/shrub.Vapour_v159.jar&lt;br /&gt;
shu.nitro.LENIN .T34,http://robocode-archive.strangeautomata.com/robots/shu.nitro.LENIN_.T34.jar&lt;br /&gt;
sigterm.Sigterm 1.0,http://robocode-archive.strangeautomata.com/robots/sigterm.Sigterm_1.0.jar&lt;br /&gt;
simonton.micro.Sprout 1.1.3,http://robocode-archive.strangeautomata.com/robots/simonton.micro.Sprout_1.1.3.jar&lt;br /&gt;
simonton.nano.MeleeSeed 1.8,http://robocode-archive.strangeautomata.com/robots/simonton.nano.MeleeSeed_1.8.jar&lt;br /&gt;
simonton.nano.WeekendObsession_Melee 1.0,http://robocode-archive.strangeautomata.com/robots/simonton.nano.WeekendObsession_Melee_1.0.jar&lt;br /&gt;
skm.butterfly 1.0,http://robocode-archive.strangeautomata.com/robots/skm.butterfly_1.0.jar&lt;br /&gt;
skm.Ryubot 1.0,http://robocode-archive.strangeautomata.com/robots/skm.Ryubot_1.0.jar&lt;br /&gt;
skm.PateranBotlock2 1.0,http://robocode-archive.strangeautomata.com/robots/skm.PateranBotlock2_1.0.jar&lt;br /&gt;
spin.Bugstard 0.012b,http://robocode-archive.strangeautomata.com/robots/spin.Bugstard_0.012b.jar?dl=1&lt;br /&gt;
spinnercat.Omen 1.0,http://robocode-archive.strangeautomata.com/robots/spinnercat.Omen_1.0.jar&lt;br /&gt;
spinnercat.micro.Tyger 0.1,http://robocode-archive.strangeautomata.com/robots/spinnercat.micro.Tyger_0.1.jar&lt;br /&gt;
spinnercat.Robovirus 2.718,http://robocode-archive.strangeautomata.com/robots/spinnercat.Robovirus_2.718.jar&lt;br /&gt;
sp.Nanos.Ember 1.1,http://robocode-archive.strangeautomata.com/robots/sp.Nanos.Ember_1.1.jar&lt;br /&gt;
squidM.TentalceMeleeNano 1.1,http://robocode-archive.strangeautomata.com/robots/squidM.TentalceMeleeNano_1.1.jar&lt;br /&gt;
stelo.AreaTargetingBot 1.1,http://robocode-archive.strangeautomata.com/robots/stelo.AreaTargetingBot_1.1.jar&lt;br /&gt;
stelo.IntrinsicVolatility 1.4,http://robocode-archive.strangeautomata.com/robots/stelo.IntrinsicVolatility_1.4.jar&lt;br /&gt;
stelo.Liblix 0.3.1,https://github.com/kimtg/robocode-bots/releases/download/release/stelo.Liblix_0.3.1.jar&lt;br /&gt;
stelo.Lifestealer 1.0,http://robocode-archive.strangeautomata.com/robots/stelo.Lifestealer_1.0.jar&lt;br /&gt;
stelo.Mirror 1.1,http://robocode-archive.strangeautomata.com/robots/stelo.Mirror_1.1.jar&lt;br /&gt;
stelo.MirrorMicro 1.0,http://robocode-archive.strangeautomata.com/robots/stelo.MirrorMicro_1.0.jar&lt;br /&gt;
stelo.MirrorNano 1.3,http://robocode-archive.strangeautomata.com/robots/stelo.MirrorNano_1.3.jar&lt;br /&gt;
stelo.MyAgileRobot 0.2,http://robocode-archive.strangeautomata.com/robots/stelo.MyAgileRobot_0.2.jar&lt;br /&gt;
stelo.PatternRobot 1.0,http://robocode-archive.strangeautomata.com/robots/stelo.PatternRobot_1.0.jar&lt;br /&gt;
stelo.PianistNano 1.2,http://robocode-archive.strangeautomata.com/robots/stelo.PianistNano_1.2.jar&lt;br /&gt;
stelo.RamTrackSurfer 1.2,http://robocode-archive.strangeautomata.com/robots/stelo.RamTrackSurfer_1.2.jar&lt;br /&gt;
stelo.Randomness 1.0,http://robocode-archive.strangeautomata.com/robots/stelo.Randomness_1.0.jar&lt;br /&gt;
stelo.SoJNanoMelee 1.1,http://robocode-archive.strangeautomata.com/robots/stelo.SoJNanoMelee_1.1.jar&lt;br /&gt;
stelo.SoRobotNanoMelee 1.2,http://robocode-archive.strangeautomata.com/robots/stelo.SoRobotNanoMelee_1.2.jar&lt;br /&gt;
stelo.UntouchableNano 1.3,http://robocode-archive.strangeautomata.com/robots/stelo.UntouchableNano_1.3.jar&lt;br /&gt;
stelo.Wang 1.0,http://robocode-archive.strangeautomata.com/robots/stelo.Wang_1.0.jar&lt;br /&gt;
stelo.WangRobot 1.0,http://robocode-archive.strangeautomata.com/robots/stelo.WangRobot_1.0.jar&lt;br /&gt;
step.nanoPri 1.0,http://robocode-archive.strangeautomata.com/robots/step.nanoPri_1.0.jar&lt;br /&gt;
stf.PanzerGeneral 0.1,http://robocode-archive.strangeautomata.com/robots/stf.PanzerGeneral_0.1.jar&lt;br /&gt;
stuff.Vlad 0.1,http://robocode-archive.strangeautomata.com/robots/stuff.Vlad_0.1.jar&lt;br /&gt;
sul.Lunar 1.1,http://robocode-archive.strangeautomata.com/robots/sul.Lunar_1.1.jar&lt;br /&gt;
supersample.SuperBoxBot 1.0,http://robocode-archive.strangeautomata.com/robots/supersample.SuperBoxBot_1.0.jar&lt;br /&gt;
tad.Dalek98 0.98,http://robocode-archive.strangeautomata.com/robots/tad.Dalek98_0.98.jar&lt;br /&gt;
tcf.Reach 3,http://robocode-archive.strangeautomata.com/robots/tcf.Reach_3.jar&lt;br /&gt;
techdude.forest.FlamingForest 1.1,http://robocode-archive.strangeautomata.com/robots/techdude.forest.FlamingForest_1.1.jar&lt;br /&gt;
techdude.kombat.FlamingKombat 1.5,http://robocode-archive.strangeautomata.com/robots/techdude.kombat.FlamingKombat_1.5.jar&lt;br /&gt;
testantiswapgun.AntiSwap 1.0,http://robocode-archive.strangeautomata.com/robots/asd.AntiSwap_1.0.jar&lt;br /&gt;
tex.Longbot 0.4,http://robocode-archive.strangeautomata.com/robots/tex.Longbot_0.4.jar&lt;br /&gt;
throxbot.ThroxBot 0.1,http://robocode-archive.strangeautomata.com/robots/throxbot.ThroxBot_0.1.jar&lt;br /&gt;
timmit.nano.TimDog 0.33,http://robocode-archive.strangeautomata.com/robots/timmit.nano.TimDog_0.33.jar&lt;br /&gt;
tj.zombie1n 1.0.1,http://robocode-archive.strangeautomata.com/robots/tj.zombie1n_1.0.1.jar&lt;br /&gt;
tlp.ThreeLeggedPig 1,http://robocode-archive.strangeautomata.com/robots/tlp.ThreeLeggedPig_1.jar&lt;br /&gt;
tm.Yuugao 1.0,http://robocode-archive.strangeautomata.com/robots/tm.Yuugao_1.0.jar&lt;br /&gt;
tripphippy.Alice 1.1,http://robocode-archive.strangeautomata.com/robots/tripphippy.Alice_1.1.jar&lt;br /&gt;
trm.Wrekt 1.1.6.f,http://robocode-archive.strangeautomata.com/robots/trm.Wrekt_1.1.6.f.jar&lt;br /&gt;
tvv.micro.Antares 1.1.1,http://robocode-archive.strangeautomata.com/robots/tvv.micro.Antares_1.1.1.jar&lt;br /&gt;
tvv.nano.Polaris 1.2,http://robocode-archive.strangeautomata.com/robots/tvv.nano.Polaris_1.2.jar&lt;br /&gt;
tzu.TheArtOfWar 1.2,http://robocode-archive.strangeautomata.com/robots/tzu.TheArtOfWar_1.2.jar&lt;br /&gt;
uji.Antique 1.0,http://robocode-archive.strangeautomata.com/robots/uji.Antique_1.0.jar&lt;br /&gt;
uji.DBH 1.1,http://robocode-archive.strangeautomata.com/robots/uji.DBH_1.1.jar&lt;br /&gt;
uji.YellohFellah 1.0,http://robocode-archive.strangeautomata.com/robots/uji.YellohFellah_1.0.jar&lt;br /&gt;
urdos.URDOS 1.3,http://robocode-archive.strangeautomata.com/robots/urdos.URDOS_1.3.jar&lt;br /&gt;
vjik.UnViolation 1.1,http://robocode-archive.strangeautomata.com/robots/vjik.UnViolation_1.1.jar&lt;br /&gt;
voidious.Diamond 1.8.28,http://robocode-archive.strangeautomata.com/robots/voidious.Diamond_1.8.28.jar&lt;br /&gt;
voidious.micro.BlitzBat 1.05,http://robocode-archive.strangeautomata.com/robots/voidious.micro.BlitzBat_1.05.jar&lt;br /&gt;
voidious.mini.BrokenSword 2.0.3,http://robocode-archive.strangeautomata.com/robots/voidious.mini.BrokenSword_2.0.3.jar&lt;br /&gt;
vStar.RAFzilla 2.15,https://drive.google.com/uc?export=download&amp;amp;id=1mSf7wnoO5VnMdHDCJcC-tT9X7NzIcLJF&lt;br /&gt;
vuen.Cake 2.51,http://robocode-archive.strangeautomata.com/robots/vuen.Cake_2.51.jar&lt;br /&gt;
WarfaJibril.Jibril_Warfa_Andromeda 1.11,http://robocode-archive.strangeautomata.com/robots/WarfaJibril.Jibril_Warfa_Andromeda_1.11.jar&lt;br /&gt;
wcsv.melee.EngineerMelee 0.1,http://robocode-archive.strangeautomata.com/robots/wcsv.melee.EngineerMelee_0.1.jar&lt;br /&gt;
wee.Gem 1.8.4,http://robocode-archive.strangeautomata.com/robots/wee.Gem_1.8.4.jar&lt;br /&gt;
whitesquare.robots.SkynetAdvanced 1.1,https://dl.dropboxusercontent.com/s/6epm51goxqp7p0h/whitesquare.robots.SkynetAdvanced_1.1.jar?dl=1&lt;br /&gt;
winamp32.micro.MicroMacro 1.0,http://robocode-archive.strangeautomata.com/robots/winamp32.micro.MicroMacro_1.0.jar&lt;br /&gt;
wit.Chuliath 1.0,http://robocode-archive.strangeautomata.com/robots/wit.Chuliath_1.0.jar&lt;br /&gt;
wit.Deep7 2.0,http://robocode-archive.strangeautomata.com/robots/wit.Deep7_2.0.jar&lt;br /&gt;
wompi.Numbat 2.1,http://www.casepool.de/robocode/wompi.Numbat_2.1.jar&lt;br /&gt;
wompi.Quokka 1.6,http://www.casepool.de/robocode/wompi.Quokka_1.6.jar&lt;br /&gt;
wompi.Wallaby 5.1,http://www.casepool.de/robocode/wompi.Wallaby_5.1.jar&lt;br /&gt;
yagami.Tidus 0.11,http://robocode-archive.strangeautomata.com/robots/yagami.Tidus_0.11.jar&lt;br /&gt;
yk.JahMicro 1.0,http://robocode-archive.strangeautomata.com/robots/yk.JahMicro_1.0.jar&lt;br /&gt;
yk.JahRoslav 1.1,http://robocode-archive.strangeautomata.com/robots/yk.JahRoslav_1.1.jar&lt;br /&gt;
zyx.mega.YersiniaPestis 3.1,http://robocode-archive.strangeautomata.com/robots/zyx.mega.YersiniaPestis_3.1.jar&lt;br /&gt;
zyx.micro.Ant 1.1,http://robocode-archive.strangeautomata.com/robots/zyx.micro.Ant_1.1.jar&lt;br /&gt;
zyx.nano.Ant 1.1,http://robocode-archive.strangeautomata.com/robots/zyx.nano.Ant_1.1.jar&lt;br /&gt;
zyx.nano.BacillusComma 1.0,http://robocode-archive.strangeautomata.com/robots/zyx.nano.BacillusComma_1.0.jar&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
'''''No chatting on this page. Use the /ParticipantsChat page for that.'''''&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
'''''Removed because the server says: Ignoring. Also client cannot download these'''''&amp;lt;br&amp;gt;&lt;br /&gt;
''traker.Eraser 1,http://lablanchisserie.fr/Parissou/traker.Eraser.jar&lt;br /&gt;
''xyzdev.SimpleJack 1.0,https://xyzdev.webfactional.com/archive/xyzdev.SimpleJack_1.0.jar&lt;br /&gt;
&lt;br /&gt;
'''''Removed because the jarcontent/filename is not correct'''''&amp;lt;br&amp;gt;&lt;br /&gt;
''ary.HelpMeelee 1.0,3624''&amp;lt;br&amp;gt;&lt;br /&gt;
''dmsr.MiniR101 0.6''&amp;lt;br&amp;gt;&lt;br /&gt;
''enriquevilela.TieFighter 0.1,3224''&amp;lt;br&amp;gt;&lt;br /&gt;
''cw.melee.Burner 2.0&amp;lt;br&amp;gt;&lt;br /&gt;
''ROB.TraumaLlama 1.0,https://www.dropbox.com/s/b14r13f4xwc5kj5/ROB.TraumaLlama_1.0.jar?dl=0''&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''Removed because he crashes the vm frequently (mac/linux) 1.6'''''&amp;lt;br&amp;gt;&lt;br /&gt;
''dam.MogBot 2.9,http://www.robocoderepository.com/BotFiles/555/dam.MogBot_2.9.jar&lt;br /&gt;
&lt;br /&gt;
'''''Removed due to WontFix issues in Robocode 1.7+:'''''&amp;lt;br&amp;gt;&lt;br /&gt;
''* Hviela: ([[http://sourceforge.net/tracker/?func=detail&amp;amp;aid=2953268&amp;amp;group_id=37202&amp;amp;atid=419486 SF #2953268]])&amp;lt;br&amp;gt;&lt;br /&gt;
'': hvilela.HVilela 0.9.3,http://henrique.vilela.googlepages.com/hvilela.HVilela_0.9.3.jar''&lt;br /&gt;
&lt;br /&gt;
'''''Removed due to constant timeouts'''''&amp;lt;br&amp;gt;&lt;br /&gt;
''ary.FourWD 1.3c,http://robocode-archive.strangeautomata.com/robots/ary.FourWD_1.3c.jar&amp;lt;br&amp;gt;&lt;br /&gt;
''stelo.Moojuk 1.3,http://robocode-archive.strangeautomata.com/robots/stelo.Moojuk_1.3.jar&lt;br /&gt;
&lt;br /&gt;
'''''Removed due to constant unstoppable and compatibility issue under java 8'''''&amp;lt;br&amp;gt;&lt;br /&gt;
''apc.Caan 1.0,http://robocode-archive.strangeautomata.com/robots/apc.Caan_1.0.jar&lt;br /&gt;
&lt;br /&gt;
'''''Removed due to attempting to read environment variables'''''&amp;lt;br&amp;gt;&lt;br /&gt;
''gm.GaetanoA 2.15,http://robocode-archive.strangeautomata.com/robots/gm.GaetanoA_2.15.jar&lt;br /&gt;
&lt;br /&gt;
'''''Removed due to invalid robot or team'''''&amp;lt;br&amp;gt;&lt;br /&gt;
''stelo.Spread 0.5.2,https://github.com/kimtg/robocode-bots/releases/download/release/stelo.Spread_0.5.2.jar&lt;br /&gt;
''stelo.PastFuture 2.3.1,https://github.com/kimtg/robocode-bots/releases/download/release/stelo.PastFuture_2.3.1.jar&lt;br /&gt;
&lt;br /&gt;
'''Removed due to not working in 1.9.4.2'''&amp;lt;br&amp;gt;&lt;br /&gt;
''abc.tron3.Tron 3.11,http://robocode-archive.strangeautomata.com/robots/abc.tron3.Tron_3.11.jar''&lt;br /&gt;
&lt;br /&gt;
'''Removed due to not working with Java 17. Don't use Java 18. '''&amp;lt;br&amp;gt;&lt;br /&gt;
dylanb.xyz 2.0,https://drive.google.com/uc?export=download&amp;amp;id=18ugz_el8xentgdnPipnK4zGyBOoT3fN9&lt;/div&gt;</summary>
		<author><name>D414</name></author>
		
	</entry>
	<entry>
		<id>http://robowiki.net/w/index.php?title=RoboRumble/Participants/Melee&amp;diff=57934</id>
		<title>RoboRumble/Participants/Melee</title>
		<link rel="alternate" type="text/html" href="http://robowiki.net/w/index.php?title=RoboRumble/Participants/Melee&amp;diff=57934"/>
		<updated>2024-06-07T09:04:40Z</updated>

		<summary type="html">&lt;p&gt;D414: Update Quantum&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{:RoboRumble/Navigation}}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Just add your bot name ('''as appears in the Robocode selector after packaging''', so including versionnumber) and the download link by &amp;quot;,&amp;quot; (there must be no space after the comma).&lt;br /&gt;
&lt;br /&gt;
The list is in '''alphabetical''' order. Add your bot in the right slot.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;For your bot to be accepted by the RR@Home server, the following rules are mandatory:&amp;lt;/span&amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
* The bot must have a package-name.&lt;br /&gt;
* The bot must be packaged in a jar-file.&lt;br /&gt;
* A &amp;lt;botname&amp;gt;.properties file must be present in the jar-file.&lt;br /&gt;
* The naming of the bot must reflect the internal structure, see [http://home.versatel.nl/gheijenk/plaatjes/bot_naming.png]for sample.RamFire.&lt;br /&gt;
* '''&amp;lt;font color=&amp;quot;#CA0813&amp;quot;&amp;gt;The bot should be compatible with Java 17&amp;lt;/font&amp;gt; (Don't compile your code with Java 18 or newer versions)'''&lt;br /&gt;
&lt;br /&gt;
The easiest way to do this is to package your bot with Robocode (Robot -&amp;gt; Package robot for upload).&lt;br /&gt;
&lt;br /&gt;
'''PLEASE MAKE SURE YOUR BOT IS NOT ALREADY ON THE LIST BEFORE YOU ADD IT.&amp;lt;br&amp;gt;IF YOU ARE ADDING A NEW VERSION OF YOUR BOT, PLEASE DELETE THE OLD ONE.'''&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
aaa.r.ScalarR 0.005g.047,https://drive.google.com/uc?export=download&amp;amp;id=1RtyCnpE6XI_WHHvJwjj2brqFPvfgX9Uv&lt;br /&gt;
abc.Shadow 3.84i,http://robocode-archive.strangeautomata.com/robots/abc.Shadow_3.84i.jar&lt;br /&gt;
abud.ThirdRobo 1.0,http://robocode-archive.strangeautomata.com/robots/abud.ThirdRobo_1.0.jar&lt;br /&gt;
acogdev.alpha 0.2,http://robocode-archive.strangeautomata.com/robots/acogdev.alpha_0.2.jar&lt;br /&gt;
adt.Ar1 2.1,http://robocode-archive.strangeautomata.com/robots/adt.Ar1_2.1.jar&lt;br /&gt;
adt.Ar2 1.0,http://robocode-archive.strangeautomata.com/robots/adt.Ar2_1.0.jar&lt;br /&gt;
adt.Ar2 1.1,http://robocode-archive.strangeautomata.com/robots/adt.Ar2_1.1.jar&lt;br /&gt;
agd.Mooserwirt2 2.7,http://robocode-archive.strangeautomata.com/robots/agd.Mooserwirt2_2.7.jar&lt;br /&gt;
agrach.Dalek 1.0,https://github.com/aleksey-zhidkov/rc-repo-mirror/raw/master/agrach.Dalek_1.0.jar&lt;br /&gt;
ags.surreptitious.MiniSurreptitious 0.0.1,http://robocode-archive.strangeautomata.com/robots/ags.surreptitious.MiniSurreptitious_0.0.1.jar&lt;br /&gt;
ags.Glacier 0.2.11,http://robocode-archive.strangeautomata.com/robots/ags.Glacier_0.2.11.jar&lt;br /&gt;
ahf.NanoAndrew .4,http://robocode-archive.strangeautomata.com/robots/ahf.NanoAndrew_.4.jar&lt;br /&gt;
ahr.ice.Ice 1.0.2,http://robocode-archive.strangeautomata.com/robots/ahr.ice.Ice_1.0.2.jar&lt;br /&gt;
ak.Fermat 2.0,http://robocode-archive.strangeautomata.com/robots/ak.Fermat_2.0.jar&lt;br /&gt;
alpha.BlackIce 1.0,http://robocode-archive.strangeautomata.com/robots/alpha.BlackIce_1.0.jar&lt;br /&gt;
alpha.RainingFire 1.0,http://robocode-archive.strangeautomata.com/robots/alpha.RainingFire_1.0.jar&lt;br /&gt;
amk.ChumbaMini 0.2,http://robocode-archive.strangeautomata.com/robots/amk.ChumbaMini_0.2.jar&lt;br /&gt;
amk.ChumbaWumba 0.3,http://robocode-archive.strangeautomata.com/robots/amk.ChumbaWumba_0.3.jar&lt;br /&gt;
amk.jointstrike.JointStrike 0.2,http://robocode-archive.strangeautomata.com/robots/amk.jointstrike.JointStrike_0.2.jar&lt;br /&gt;
amk.ShizzleStiX.ShizzleStiX 0.6,http://robocode-archive.strangeautomata.com/robots/amk.ShizzleStiX.ShizzleStiX_0.6.jar&lt;br /&gt;
amk.superstrike.SuperStrike 0.3,http://robocode-archive.strangeautomata.com/robots/amk.superstrike.SuperStrike_0.3.jar&lt;br /&gt;
amk.Punbot.Punbot 0.01,http://robocode-archive.strangeautomata.com/robots/amk.Punbot.Punbot_0.01.jar&lt;br /&gt;
amz.NanoClone 1.41,http://robocode-archive.strangeautomata.com/robots/amz.NanoClone_1.41.jar&lt;br /&gt;
ap.Frederick 1.1,http://robocode-archive.strangeautomata.com/robots/ap.Frederick_1.1.jar&lt;br /&gt;
apc.botM 3.0,http://robocode-archive.strangeautomata.com/robots/apc.botM_3.0.jar&lt;br /&gt;
apc.Colossus2 0.17,http://robocode-archive.strangeautomata.com/robots/apc.Colossus2_0.17.jar&lt;br /&gt;
apc.LeeroyJenkins2 1.0,http://robocode-archive.strangeautomata.com/robots/apc.LeeroyJenkins2_1.0.jar&lt;br /&gt;
apollokidd.ApolloKidd 0.9,http://robocode-archive.strangeautomata.com/robots/apollokidd.ApolloKidd_0.9.jar&lt;br /&gt;
ara.Shera 0.88,http://robocode-archive.strangeautomata.com/robots/ara.Shera_0.88.jar&lt;br /&gt;
arthord.MannyPacquiao Beta,http://robocode-archive.strangeautomata.com/robots/arthord.MannyPacquiao_Beta.jar&lt;br /&gt;
arthord.NanoSatanMelee Beta,http://robocode-archive.strangeautomata.com/robots/arthord.NanoSatanMelee_Beta.jar&lt;br /&gt;
ary.Swarm 1.1,http://robocode-archive.strangeautomata.com/robots/ary.Swarm_1.1.jar&lt;br /&gt;
as.FrankTheTank 1.3,http://robocode-archive.strangeautomata.com/robots/as.FrankTheTank_1.3.jar&lt;br /&gt;
asd.Cthulhu 1.3,http://robocode-archive.strangeautomata.com/robots/asd.Cthulhu_1.3.jar&lt;br /&gt;
awesomeness.Elite 1.0,http://robocode-archive.strangeautomata.com/robots/awesomeness.Elite_1.0.jar&lt;br /&gt;
axeBots.HataMoto 3.09,http://robocode-archive.strangeautomata.com/robots/axeBots.HataMoto_3.09.jar&lt;br /&gt;
ayk.WallHugger 1.0,http://robocode-archive.strangeautomata.com/robots/ayk.WallHugger_1.0.jar&lt;br /&gt;
az.Ololobot 0.2.4,https://github.com/alexei-zayakin/robocode/raw/master/az.Ololobot_0.2.4.jar&lt;br /&gt;
baal.nano.N 1.42,http://robocode-archive.strangeautomata.com/robots/baal.nano.N_1.42.jar&lt;br /&gt;
bayen.nut.Squirrel 1.615,http://robocode-archive.strangeautomata.com/robots/bayen.nut.Squirrel_1.615.jar&lt;br /&gt;
bayen.UbaMicro 1.4,http://robocode-archive.strangeautomata.com/robots/bayen.UbaMicro_1.4.jar&lt;br /&gt;
bigpete.Stewie 1.0,http://robocode-archive.strangeautomata.com/robots/bigpete.Stewie_1.0.jar&lt;br /&gt;
br2.MobyDickBot 1.6,http://robocode-archive.strangeautomata.com/robots/br2.MobyDickBot_1.6.jar&lt;br /&gt;
brainfade.melee.Dusk 0.44,http://robocode-archive.strangeautomata.com/robots/brainfade.melee.Dusk_0.44.jar&lt;br /&gt;
brainfade.melee.Genghis 0.36,http://robocode-archive.strangeautomata.com/robots/brainfade.melee.Genghis_0.36.jar&lt;br /&gt;
bts.mega.Gnarly 1.4,http://robocode-archive.strangeautomata.com/robots/bts.mega.Gnarly_1.4.jar&lt;br /&gt;
bts.wiki.RipCurl 0.9b,http://robocode-archive.strangeautomata.com/robots/bts.wiki.RipCurl_0.9b.jar&lt;br /&gt;
bvh.fnr.Fenrir 0.36l,http://robocode-archive.strangeautomata.com/robots/bvh.fnr.Fenrir_0.36l.jar&lt;br /&gt;
bvh.fry.Freya 0.82,http://robocode-archive.strangeautomata.com/robots/bvh.fry.Freya_0.82.jar&lt;br /&gt;
bvh.micro.Freya 0.3,http://robocode-archive.strangeautomata.com/robots/bvh.micro.Freya_0.3.jar&lt;br /&gt;
bvh.mini.Fenrir 0.39,http://robocode-archive.strangeautomata.com/robots/bvh.mini.Fenrir_0.39.jar&lt;br /&gt;
bvh.mini.Freya 0.55,http://robocode-archive.strangeautomata.com/robots/bvh.mini.Freya_0.55.jar&lt;br /&gt;
bwbaugh.nano.Tirunculus 0.0.0a,http://robocode-archive.strangeautomata.com/robots/bwbaugh.nano.Tirunculus_0.0.0a.jar&lt;br /&gt;
bzdp.BoxCar 2.0,http://robocode-archive.strangeautomata.com/robots/bzdp.BoxCar_2.0.jar&lt;br /&gt;
bzdp.Pansy 2.1,http://robocode-archive.strangeautomata.com/robots/bzdp.Pansy_2.1.jar&lt;br /&gt;
caimano.Furia_Ceca 0.22,http://robocode-archive.strangeautomata.com/robots/caimano.Furia_Ceca_0.22.jar&lt;br /&gt;
catcat20.Lambda 0.024,https://drive.google.com/uc?export=download&amp;amp;id=1KgQRpAJVYtrnX_M0YCUT3iS1SjInSvcX&lt;br /&gt;
catcat20.Rabbit 0.001,https://drive.google.com/uc?export=download&amp;amp;id=1Cz81GQX7u9qe0muFXWx4qm-lNOA0MXeE&lt;br /&gt;
catcat20.shape.Theta 0.018,https://drive.google.com/uc?export=download&amp;amp;id=1EXcQ5PlX7m2alnvlISipPF2ywsWPMSA0&lt;br /&gt;
cb.fire.Firestarter 2.0f,https://www.dropbox.com/s/96qhyuh648ufuju/cb.fire.Firestarter_2.0f.jar?dl=1&lt;br /&gt;
cb.nano.Insomnia 1.0,https://www.dropbox.com/s/3sl5bz9knsgxewe/cb.nano.Insomnia_1.0.jar?dl=1&lt;br /&gt;
cf.RiO.RiOx 4.2.1,http://robocode-archive.strangeautomata.com/robots/cf.RiO.RiOx_4.2.1.jar&lt;br /&gt;
cli.Dancer 1.1,http://robocode-archive.strangeautomata.com/robots/cli.Dancer_1.1.jar&lt;br /&gt;
cli.WasteOfAmmo 1.0,http://robocode-archive.strangeautomata.com/robots/cli.WasteOfAmmo_1.0.jar&lt;br /&gt;
co.edu.usb.rc.LidisTron 1.0,http://robocode-archive.strangeautomata.com/robots/co.edu.usb.rc.LidisTron_1.0.jar&lt;br /&gt;
com.blogspot.malinkody.DestrobotMalin 1.0,http://robocode-archive.strangeautomata.com/robots/com.blogspot.malinkody.DestrobotMalin_1.0.jar&lt;br /&gt;
com.cgarias.rc.AdvancedTrackerII 1.0,http://robocode-archive.strangeautomata.com/robots/com.cgarias.rc.AdvancedTrackerII_1.0.jar&lt;br /&gt;
com.cohesiva.robocode.ManOwaR 1.0,http://robocode-archive.strangeautomata.com/robots/com.cohesiva.robocode.ManOwaR_1.0.jar&lt;br /&gt;
com.spp.robocode.MostlyHarmless 010,https://drive.google.com/u/0/uc?id=1VAJUrVH2LCj94MJyQXBL9w8NtNeSoCtm&amp;amp;export=download&lt;br /&gt;
com.syncleus.robocode.Dreadnaught 0.1,http://robocode-archive.strangeautomata.com/robots/com.syncleus.robocode.Dreadnaught_0.1.jar&lt;br /&gt;
conscience.Electron 1.3g,http://robocode-archive.strangeautomata.com/robots/conscience.Electron_1.3g.jar&lt;br /&gt;
cre.Karolos 0.32,http://robocode-archive.strangeautomata.com/robots/cre.Karolos_0.32.jar&lt;br /&gt;
cs.Grudge 1.0,http://robocode-archive.strangeautomata.com/robots/cs.Grudge_1.0.jar&lt;br /&gt;
cs.sheldor.Talon 1.1,http://robocode-archive.strangeautomata.com/robots/cs.sheldor.Talon_1.1.jar&lt;br /&gt;
cs.Wren 1.0,http://robocode-archive.strangeautomata.com/robots/cs.Wren_1.0.jar&lt;br /&gt;
css.Delitioner 0.11,http://robocode-archive.strangeautomata.com/robots/css.Delitioner_0.11.jar&lt;br /&gt;
cvt.Firsty 1.0,http://robocode-archive.strangeautomata.com/robots/cvt.Firsty_1.0.jar&lt;br /&gt;
cw.megas.Blade 0.8,http://robocode-archive.strangeautomata.com/robots/cw.megas.Blade_0.8.jar&lt;br /&gt;
cx.BlestPain 1.41,http://robocode-archive.strangeautomata.com/robots/cx.BlestPain_1.41.jar&lt;br /&gt;
cx.mini.Nimrod 0.55,http://robocode-archive.strangeautomata.com/robots/cx.mini.Nimrod_0.55.jar&lt;br /&gt;
cx.Princess 1.0,http://robocode-archive.strangeautomata.com/robots/cx.Princess_1.0.jar&lt;br /&gt;
d414.nano.Quantum 1.2.1,https://drive.google.com/uc?export=download&amp;amp;id=1sMp18SZo6IfoSTtAwUJkfiUqjK5KloAf&lt;br /&gt;
dans.Cinnamon 1.2,http://robocode-archive.strangeautomata.com/robots/dans.Cinnamon_1.2.jar&lt;br /&gt;
darkcanuck.B26354 1.06,http://robocode-archive.strangeautomata.com/robots/darkcanuck.B26354_1.06.jar&lt;br /&gt;
darkcanuck.Leon 1.01,http://robocode-archive.strangeautomata.com/robots/darkcanuck.Leon_1.01.jar&lt;br /&gt;
darwinsnightmare.DNGEN474UI85390C20S0R528 1.0,http://robocode-archive.strangeautomata.com/robots/darwinsnightmare.DNGEN474UI85390C20S0R528_1.0.jar&lt;br /&gt;
davidalves.net.DuelistMicroMelee 1.4,http://robocode-archive.strangeautomata.com/robots/davidalves.net.DuelistMicroMelee_1.4.jar&lt;br /&gt;
davidalves.net.DuelistMiniMelee 1.2,http://robocode-archive.strangeautomata.com/robots/davidalves.net.DuelistMiniMelee_1.2.jar&lt;br /&gt;
davidalves.net.DuelistNanoMelee 1.01,http://robocode-archive.strangeautomata.com/robots/davidalves.net.DuelistNanoMelee_1.01.jar&lt;br /&gt;
davidalves.Phoenix 0.54,https://github.com/aleksey-zhidkov/rc-repo-mirror/raw/master/davidalves.Phoenix_0.54.jar&lt;br /&gt;
DBall.Anarchy 0.1,http://robocode-archive.strangeautomata.com/robots/DBall.Anarchy_0.1.jar&lt;br /&gt;
DBall.NUKE 0.1,http://robocode-archive.strangeautomata.com/robots/DBall.NUKE_0.1.jar&lt;br /&gt;
dcs.Eater_of_Worlds 1.1.3-A,http://robocode-archive.strangeautomata.com/robots/dcs.Eater_of_Worlds_1.1.3-A.jar&lt;br /&gt;
deewiant.Anomaly 0.2,http://robocode-archive.strangeautomata.com/robots/deewiant.Anomaly_0.2.jar&lt;br /&gt;
de.simpleworks.robocode.bots.swiBot 1.0,http://robocode-archive.strangeautomata.com/robots/de.simpleworks.robocode.bots.swiBot_1.0.jar&lt;br /&gt;
de.simpleworks.robocode.bots.swiBot 1.1,http://robocode-archive.strangeautomata.com/robots/de.simpleworks.robocode.bots.swiBot_1.1.jar&lt;br /&gt;
dft.Calliope 5.6,http://robocode-archive.strangeautomata.com/robots/dft.Calliope_5.6.jar&lt;br /&gt;
disan.Chair 2.2.0,http://robocode-archive.strangeautomata.com/robots/disan.Chair_2.2.0.jar&lt;br /&gt;
divineomega.DivineBot 1.9.4.5,https://dl.dropboxusercontent.com/s/sk33qkpx7cfcmv6/divineomega.DivineBot_1.9.4.5.jar?dl=1&amp;amp;token_hash=AAGI4C3Fm8km-0aLNU3pUVE1JEZqx8UDV6qk5s8PoRgjhg&lt;br /&gt;
divineomega.TrialBot 0.003,https://dl.dropboxusercontent.com/s/an44muntp8f0p6h/divineomega.TrialBot_0.003.jar?token_hash=AAG5XTuv2fkEkTYhNIEJ0zre-SpWgK-jvKNqQ120pFeYSA&amp;amp;dl=1&lt;br /&gt;
djc.DynaBot 0.1.1,http://robocode-archive.strangeautomata.com/robots/djc.DynaBot_0.1.1.jar&lt;br /&gt;
djdjdj.NanoSkunk10 1.0,http://robocode-archive.strangeautomata.com/robots/djdjdj.NanoSkunk10_1.0.jar&lt;br /&gt;
dl.BetterWalls 1.0,http://robocode-archive.strangeautomata.com/robots/dl.BetterWalls_1.0.jar&lt;br /&gt;
dmh.robocode.robot.BlackDeath 9.2,https://www.dropbox.com/s/tads4vk7jrgmv6u/dmh.robocode.robot.BlackDeath_9.2.jar?dl=1&lt;br /&gt;
dmh.robocode.robot.RedDwarf 0.4,https://www.dropbox.com/s/n0k5n5iyr66ssut/dmh.robocode.robot.RedDwarf_0.4.jar?dl=1&lt;br /&gt;
donjezza.Jezza 1.0,http://robocode-archive.strangeautomata.com/robots/donjezza.Jezza_1.0.jar&lt;br /&gt;
donjezza.Muncho 1.0,http://robocode-archive.strangeautomata.com/robots/donjezza.Muncho_1.0.jar&lt;br /&gt;
drd.Dreadknoght 0.9,http://robocode-archive.strangeautomata.com/robots/drd.Dreadknoght_0.9.jar&lt;br /&gt;
ds.Oo 2.2,http://robocode-archive.strangeautomata.com/robots/ds.Oo_2.2.jar&lt;br /&gt;
dsw.StaticD 1.0,http://robocode-archive.strangeautomata.com/robots/dsw.StaticD_1.0.jar&lt;br /&gt;
DTF.Kludgy 1.2b,http://robocode-archive.strangeautomata.com/robots/DTF.Kludgy_1.2b.jar&lt;br /&gt;
dummy.micro.Sparrow 2.5,http://robocode-archive.strangeautomata.com/robots/dummy.micro.Sparrow_2.5.jar&lt;br /&gt;
dummy.mini.Scimitar 1.01,http://robocode-archive.strangeautomata.com/robots/dummy.mini.Scimitar_1.01.jar&lt;br /&gt;
EBBU.Sim2 1.02,http://robocode-archive.strangeautomata.com/robots/EBBU.Sim2_1.02.jar&lt;br /&gt;
edu.otg.spr.TheTeacher 1.2,http://robocode-archive.strangeautomata.com/robots/edu.otg.spr.TheTeacher_1.2.jar&lt;br /&gt;
eem.EvBot v4.6.16,http://robocode-archive.strangeautomata.com/robots/eem.EvBot_v4.6.16.jar&lt;br /&gt;
eem.EvBotNG v12.8,http://robocode-archive.strangeautomata.com/robots/eem.EvBotNG_v12.8.jar&lt;br /&gt;
eem.IWillFireNoBullet v2.8,http://robocode-archive.strangeautomata.com/robots/eem.IWillFireNoBullet_v2.8.jar&lt;br /&gt;
EH.Eagle 1.0.6,http://robocode-archive.strangeautomata.com/robots/EH.Eagle_1.0.6.jar&lt;br /&gt;
ejb.Polaris 1.0.1,http://robocode-archive.strangeautomata.com/robots/ejb.Polaris_1.0.1.jar&lt;br /&gt;
el.JumpShoot 0.2,http://robocode-archive.strangeautomata.com/robots/el.JumpShoot_0.2.jar&lt;br /&gt;
eld.Hmm 1.0,http://robocode-archive.strangeautomata.com/robots/eld.Hmm_1.0.jar&lt;br /&gt;
emp.Yngwie 1.11,http://robocode-archive.strangeautomata.com/robots/emp.Yngwie_1.11.jar&lt;br /&gt;
erdnis.Rover 0.3,http://robocode-archive.strangeautomata.com/robots/erdnis.Rover_0.3.jar&lt;br /&gt;
et.Predator 1.8,http://robocode-archive.strangeautomata.com/robots/et.Predator_1.8.jar&lt;br /&gt;
evd.X1 0.01,http://robocode-archive.strangeautomata.com/robots/evd.X1_0.01.jar&lt;br /&gt;
exauge.GateKeeper 1.1.121g,http://robocode-archive.strangeautomata.com/robots/exauge.GateKeeper_1.1.121g.jar&lt;br /&gt;
fire219.CatBot 1.0,https://dl.dropbox.com/s/bhboah2ps3r9xuj/fire219.CatBot_1.0.jar?dl=0&lt;br /&gt;
florent.XSeries.X2 0.12,http://wesley3.free.fr/florent.XSeries.X2_0.12.jar&lt;br /&gt;
fm.claire 1.7,http://robocode-archive.strangeautomata.com/robots/fm.claire_1.7.jar&lt;br /&gt;
fm.mammillarias 1.3,http://robocode-archive.strangeautomata.com/robots/fm.mammillarias_1.3.jar&lt;br /&gt;
fnc.bandit.Bandit 5.2.0,http://robocode-archive.strangeautomata.com/robots/fnc.bandit.Bandit_5.2.0.jar&lt;br /&gt;
fowl3628800.LightningBolt 2.6.0,http://robocode-archive.strangeautomata.com/robots/fowl3628800.LightningBolt_2.6.0.jar&lt;br /&gt;
franzor.Lizt 1.3.1,http://robocode-archive.strangeautomata.com/robots/franzor.Lizt_1.3.1.jar&lt;br /&gt;
fullsail.LaxativeTeaTwo 1.0,http://robocode-archive.strangeautomata.com/robots/fullsail.LaxativeTeaTwo_1.0.jar&lt;br /&gt;
fullsail.TimbotNoPrediction 1.0,http://robocode-archive.strangeautomata.com/robots/fullsail.TimbotNoPrediction_1.0.jar&lt;br /&gt;
fullsail.SweetTea 1.1,http://robocode-archive.strangeautomata.com/robots/fullsail.SweetTea_1.1.jar&lt;br /&gt;
fwb.Nine 1.0.1,http://robocode-archive.strangeautomata.com/robots/fwb.Nine_1.0.1.jar&lt;br /&gt;
GarmBox.Anger 1.0,https://drive.google.com/uc?export=download&amp;amp;id=12mUMd9tKHdCAV_JYVSuyJfkwVl6HZ42y&lt;br /&gt;
GarmBox.Oranges 1.0,https://drive.google.com/uc?export=download&amp;amp;id=1b6sXfphAg_ARqbZ1-Kg2pzILY2jObElv&lt;br /&gt;
Gecko.ultimateGeckoBot 1.0,http://robocode-archive.strangeautomata.com/robots/Gecko.ultimateGeckoBot_1.0.jar&lt;br /&gt;
germ.TheMind .2,http://robocode-archive.strangeautomata.com/robots/germ.TheMind_.2.jar&lt;br /&gt;
gg.Squaraus 0.6,http://robocode-archive.strangeautomata.com/robots/gg.Squaraus_0.6.jar&lt;br /&gt;
gg.Wolverine 2.0,http://robocode-archive.strangeautomata.com/robots/gg.Wolverine_2.0.jar&lt;br /&gt;
gh.Griezel 0.5.2,http://robocode-archive.strangeautomata.com/robots/gh.Griezel_0.5.2.jar&lt;br /&gt;
gh.micro.Gruweltje 0.7,http://robocode-archive.strangeautomata.com/robots/gh.micro.Gruweltje_0.7.jar&lt;br /&gt;
gh.mini.Griezel 0.2,http://robocode-archive.strangeautomata.com/robots/gh.mini.Griezel_0.2.jar&lt;br /&gt;
gh.mini.GrubbmOne 1.0,http://robocode-archive.strangeautomata.com/robots/gh.mini.GrubbmOne_1.0.jar&lt;br /&gt;
gh.mini.Gruwel 0.9,http://robocode-archive.strangeautomata.com/robots/gh.mini.Gruwel_0.9.jar&lt;br /&gt;
gh.nano.Grofvuil 0.2,http://robocode-archive.strangeautomata.com/robots/gh.nano.Grofvuil_0.2.jar&lt;br /&gt;
ghent.ArthurPanzergon 1.0.0,http://franck.jousseaume.free.fr/robocode/ArthurPanzergon_1.0.0.jar&lt;br /&gt;
gimp.GimpBot 0.1,http://robocode-archive.strangeautomata.com/robots/gimp.GimpBot_0.1.jar&lt;br /&gt;
gjr.Cephalosporin 0.1,http://robocode-archive.strangeautomata.com/robots/gjr.Cephalosporin_0.1.jar&lt;br /&gt;
goblin.Bender 2.4,http://robocode-archive.strangeautomata.com/robots/goblin.Bender_2.4.jar&lt;br /&gt;
gre.svman4.Leonidas 1.3.2,https://drive.google.com/uc?export=download&amp;amp;id=1ZeSWWgjvqsnq-44JyQR776ebBuOnTTd3&lt;br /&gt;
gre.svman4.Morfeas 1.4.1,https://drive.google.com/uc?export=download&amp;amp;id=1D4P_zT0zqxasqpCNoFB34KikbJKVXTn0&lt;br /&gt;
Grystrion.RandomTrackerNOREV 1.0,https://www.dropbox.com/s/9ym5golnwurhfxw/Grystrion.RandomTrackerNOREV_1.0.jar?dl=1&lt;br /&gt;
Grystrion.TrackerWO 1.0,https://www.dropbox.com/s/f1j88yf69zn37jp/Grystrion.TrackerWO_1.0.jar?dl=1&lt;br /&gt;
hvilela.HVilela 0.9,http://robocode-archive.strangeautomata.com/robots/hvilela.HVilela_0.9.jar&lt;br /&gt;
ICS4U1.Patrick_White_Schrodinger 1.1,http://robocode-archive.strangeautomata.com/robots/ICS4U1.Patrick_White_Schrodinger_1.1.jar&lt;br /&gt;
inonit.robocode.javascript.MyFirstRobot 1.1,https://github.com/davidpcaldwell/roborumble-participants/blob/master/inonit.robocode.javascript.MyFirstRobot_1.1.jar?raw=true&lt;br /&gt;
intruder.PrairieWolf 2.61,http://robocode-archive.strangeautomata.com/robots/intruder.PrairieWolf_2.61.jar&lt;br /&gt;
jab.DiamondStealer 5,http://robocode-archive.strangeautomata.com/robots/jab.DiamondStealers_5.jar&lt;br /&gt;
jangs.ns51 1.0,http://robocode-archive.strangeautomata.com/robots/jangs.ns51_1.0.jar&lt;br /&gt;
jaybot.adv.bots.JayBot 2.0,http://robocode-archive.strangeautomata.com/robots/jaybot.adv.bots.JayBot_2.0.jar&lt;br /&gt;
jaybot.bots.Oddball 4.0,http://robocode-archive.strangeautomata.com/robots/jaybot.bots.Oddball_4.0.jar&lt;br /&gt;
jcs.Seth 1.8,http://robocode-archive.strangeautomata.com/robots/jcs.Seth_1.8.jar&lt;br /&gt;
jdw.Hurricane 1.4,http://robocode-archive.strangeautomata.com/robots/jdw.Hurricane_1.4.jar&lt;br /&gt;
jekl.StoneGhost 0.7,http://robocode-archive.strangeautomata.com/robots/jekl.StoneGhost_0.7.jar&lt;br /&gt;
jeremyreeder.collective.Prophet 5,http://robocode-archive.strangeautomata.com/robots/jeremyreeder.collective.Prophet_5.jar&lt;br /&gt;
jeremyreeder.Vincent 2011.12.09,http://robocode-archive.strangeautomata.com/robots/jeremyreeder.Vincent_2011.12.09.jar&lt;br /&gt;
jje.BagPuss 1.2,http://robocode-archive.strangeautomata.com/robots/jje.BagPuss_1.2.jar&lt;br /&gt;
jk.melee.Neuromancer 7.12,https://www.dropbox.com/s/ctjzl08u2f3x3r0/jk.melee.Neuromancer_7.12.jar?dl=1&lt;br /&gt;
jlm.javaDisturbance 0.59,http://robocode-archive.strangeautomata.com/robots/jlm.javaDisturbance_0.59.jar&lt;br /&gt;
joe.ADinosaur 1.0,http://robocode-archive.strangeautomata.com/robots/joe.ADinosaur_1.0.jar&lt;br /&gt;
jok.PheonixM 0.1.2,http://robocode-archive.strangeautomata.com/robots/jok.PheonixM_0.1.2.jar&lt;br /&gt;
josago.Jorgito 0.16,http://robocode-archive.strangeautomata.com/robots/josago.Jorgito_0.16.jar&lt;br /&gt;
jp.Perpy 16.0,http://robocode-archive.strangeautomata.com/robots/jp.Perpy_16.0.jar&lt;br /&gt;
jrm.Test0 1.0,http://robocode-archive.strangeautomata.com/robots/jrm.Test0_1.0.jar&lt;br /&gt;
js.PinBall 1.6,http://robocode-archive.strangeautomata.com/robots/js.PinBall_1.6.jar&lt;br /&gt;
jsal.Jsalbot 1.0,http://robocode-archive.strangeautomata.com/robots/jsal.Jsalbot_1.0.jar&lt;br /&gt;
justin.Mallais 14.0,http://robocode-archive.strangeautomata.com/robots/justin.Mallais_14.0.jar&lt;br /&gt;
justin.DemonicRage 3.4,http://robocode-archive.strangeautomata.com/robots/justin.DemonicRage_3.4.jar&lt;br /&gt;
jwirde.Gort 2.0,http://robocode-archive.strangeautomata.com/robots/jwirde.Gort_2.0.jar&lt;br /&gt;
jwst.DAD.DarkAndDarker 1.1,http://robocode-archive.strangeautomata.com/robots/jwst.DAD.DarkAndDarker_1.1.jar&lt;br /&gt;
kano.gamma.KanoGamma 1.8,http://robocode-archive.strangeautomata.com/robots/kano.gamma.KanoGamma_1.8.jar&lt;br /&gt;
kawigi.micro.Shiz 1.1,http://robocode-archive.strangeautomata.com/robots/kawigi.micro.Shiz_1.1.jar&lt;br /&gt;
kawigi.mini.Coriantumr 1.1,http://robocode-archive.strangeautomata.com/robots/kawigi.mini.Coriantumr_1.1.jar&lt;br /&gt;
kawigi.mini.Fhqwhgads 1.1,http://robocode-archive.strangeautomata.com/robots/kawigi.mini.Fhqwhgads_1.1.jar&lt;br /&gt;
kawigi.nano.Lib 1.0,http://robocode-archive.strangeautomata.com/robots/kawigi.nano.Lib_1.0.jar&lt;br /&gt;
kawigi.robot.Girl 1.2,http://robocode-archive.strangeautomata.com/robots/kawigi.robot.Girl_1.2.jar&lt;br /&gt;
kawigi.sbf.FloodHT 0.9.2,http://robocode-archive.strangeautomata.com/robots/kawigi.sbf.FloodHT_0.9.2.jar&lt;br /&gt;
kawigi.sbf.FloodSonnet 0.9,http://robocode-archive.strangeautomata.com/robots/kawigi.sbf.FloodSonnet_0.9.jar&lt;br /&gt;
kawigi.spare.SpareParts 0.7.6nosnd,http://robocode-archive.strangeautomata.com/robots/kawigi.spare.SpareParts_0.7.6nosnd.jar&lt;br /&gt;
kc.micro.Figment 1.0,https://drive.google.com/uc?export=download&amp;amp;id=149sdMTNnpP57iGcIZ995AeZnbJHX5EL-&lt;br /&gt;
kc.mini.Mirage 0.2,https://drive.google.com/uc?export=download&amp;amp;id=1d2pv16MB2BXdAODf2mTGpS-yRIYOJJcT&lt;br /&gt;
kdf.KoulDestroyer 1.0,https://icarus.cs.weber.edu/~kfeuz/downloads/kdf.KoulDestroyer_1.0.jar&lt;br /&gt;
kid.Gladiator .7.2,http://robocode-archive.strangeautomata.com/robots/kid.Gladiator_.7.2.jar&lt;br /&gt;
kid.test.NightFox .2,http://robocode-archive.strangeautomata.com/robots/kid.test.NightFox_.2.jar&lt;br /&gt;
KiraNL.Chupacabra 0.4,http://robocode-archive.strangeautomata.com/robots/KiraNL.Chupacabra_0.4.jar&lt;br /&gt;
kinsen.melee.Angsaichmophobia 1.8c,http://robocode-archive.strangeautomata.com/robots/kinsen.melee.Angsaichmophobia_1.8c.jar&lt;br /&gt;
Krabb.akim2.Akim2 1.1b,http://robocode-archive.strangeautomata.com/robots/Krabb.akim2.Akim2_1.1b.jar&lt;br /&gt;
Krabb.sliNk.Garm 0.9u,http://robocode-archive.strangeautomata.com/robots/Krabb.sliNk.Garm_0.9u.jar&lt;br /&gt;
krillr.mini.JointStrike 2.0.0,http://robocode-archive.strangeautomata.com/robots/krillr.mini.JointStrike_2.0.0.jar&lt;br /&gt;
kurios.DOSexe .9a,http://robocode-archive.strangeautomata.com/robots/kurios.DOSexe_.9a.jar&lt;br /&gt;
kurios.DOSexe .9b,http://robocode-archive.strangeautomata.com/robots/kurios.DOSexe_.9b.jar&lt;br /&gt;
kvk.HebusLeTroll 0.35,http://robocode-archive.strangeautomata.com/robots/kvk.HebusLeTroll_0.35.jar&lt;br /&gt;
labg.Cataclysm 2.05,http://robocode-archive.strangeautomata.com/robots/labg.Cataclysm_2.05.jar&lt;br /&gt;
lambdaxy.TBot 0.1,http://robocode-archive.strangeautomata.com/robots/lambdaxy.TBot_0.1.jar&lt;br /&gt;
lessonz.robocode.Oz 0.5.0,http://robocode-archive.strangeautomata.com/robots/lessonz.robocode.Oz_0.5.0.jar&lt;br /&gt;
lmk.ACPFinal 0.1,http://robocode-archive.strangeautomata.com/robots/lmk.ACPFinal_0.1.jar&lt;br /&gt;
Lo_Ian.Gandalf_V4 4.0,http://robocode-archive.strangeautomata.com/robots/Lo_Ian.Gandalf_V4_4.0.jar&lt;br /&gt;
logiblocs.SittingDroid 1.0,http://robocode-archive.strangeautomata.com/robots/logiblocs.SittingDroid_1.0.jar&lt;br /&gt;
lorneswork.Predator 1.0,http://robocode-archive.strangeautomata.com/robots/lorneswork.Predator_1.0.jar&lt;br /&gt;
lrem.Spectre 0.4.4,http://robocode-archive.strangeautomata.com/robots/lrem.Spectre_0.4.4.jar&lt;br /&gt;
lrem.micro.MoggFanatic 0.2,http://robocode-archive.strangeautomata.com/robots/lrem.micro.MoggFanatic_0.2.jar&lt;br /&gt;
lrem.micro.SpikeSoldier 0.4,http://robocode-archive.strangeautomata.com/robots/lrem.micro.SpikeSoldier_0.4.jar&lt;br /&gt;
lunchie.Lunchbox 0.93,http://robocode-archive.strangeautomata.com/robots/lunchie.Lunchbox_0.93.jar&lt;br /&gt;
lxx.ConceptA 0.8,https://github.com/aleksey-zhidkov/ConceptA/raw/master/builds/lxx.ConceptA_0.8.jar&lt;br /&gt;
m3thos.Eva00 1.1,http://robocode-archive.strangeautomata.com/robots/m3thos.Eva00_1.1.jar&lt;br /&gt;
m3thos.Eva02 0.7.1,http://robocode-archive.strangeautomata.com/robots/m3thos.Eva02_0.7.1.jar&lt;br /&gt;
m3thos.mini.Eva01 0.5.5,http://robocode-archive.strangeautomata.com/robots/m3thos.mini.Eva01_0.5.5.jar&lt;br /&gt;
maribo.FollowFire 1,http://robocode-archive.strangeautomata.com/robots/maribo.FollowFire_1.jar&lt;br /&gt;
maribo.IotaCT 1.1,http://robocode-archive.strangeautomata.com/robots/maribo.IotaCT_1.1.jar&lt;br /&gt;
maribo.melee.BMV 0.1,http://robocode-archive.strangeautomata.com/robots/maribo.melee.BMV_0.1.jar&lt;br /&gt;
maribo.mini.MiniQuester 0.1,https://dl.dropboxusercontent.com/s/67bfz8fhhrnc34j/maribo.mini.MiniQuester_0.1.jar&lt;br /&gt;
maribo.Quester 0.3,https://dl.dropboxusercontent.com/s/3jtoh2u1qdulof4/maribo.Quester_0.3.jar&lt;br /&gt;
matt.advanced.Katana 1.0,http://robocode-archive.strangeautomata.com/robots/matt.advanced.Katana_1.0.jar&lt;br /&gt;
matt.UnderDark3 2.4.34,http://robocode-archive.strangeautomata.com/robots/matt.UnderDark3_2.4.34.jar&lt;br /&gt;
mb.Beast 0.1,http://robocode-archive.strangeautomata.com/robots/mb.Beast_0.1.jar&lt;br /&gt;
mbh.Mbh 0.1,http://robocode-archive.strangeautomata.com/robots/mbh.Mbh_0.1.jar&lt;br /&gt;
mbro.Detektor3 0.1.1,http://robocode-archive.strangeautomata.com/robots/mbro.Detektor3_0.1.1.jar&lt;br /&gt;
mc2.enemy.Original 0.9,http://robocode-archive.strangeautomata.com/robots/mc2.enemy.Original_0.9.jar&lt;br /&gt;
mk.Alpha 0.2.1,http://robocode-archive.strangeautomata.com/robots/mk.Alpha_0.2.1.jar&lt;br /&gt;
mld.DustBunny 3.8,http://robocode-archive.strangeautomata.com/robots/mld.DustBunny_3.8.jar&lt;br /&gt;
mld.Infinity 2.2,http://robocode-archive.strangeautomata.com/robots/mld.Infinity_2.2.jar&lt;br /&gt;
mld.Wisdom 1.0,http://robocode-archive.strangeautomata.com/robots/mld.Wisdom_1.0.jar&lt;br /&gt;
mme.NikeEnhanced 2.0,http://robocode-archive.strangeautomata.com/robots/mme.NikeEnhanced_2.0.jar&lt;br /&gt;
mn.nano.perceptual.Impact 1.3.0,https://www.dropbox.com/s/njuuaycr3qswlgu/mn.nano.perceptual.Impact_1.3.0.jar?dl=1&lt;br /&gt;
mn.Combat 3.25.0,https://www.dropbox.com/s/5iufszjp28qfptw/mn.Combat_3.25.0.jar?dl=1&lt;br /&gt;
morbid.MorbidPriest 1.0,http://robocode-archive.strangeautomata.com/robots/morbid.MorbidPriest_1.0.jar&lt;br /&gt;
ms.Ares 0.19,http://robocode-archive.strangeautomata.com/robots/ms.Ares_0.19.jar&lt;br /&gt;
myl.micro.Troodon 1.10,http://robocode-archive.strangeautomata.com/robots/myl.micro.Troodon_1.10.jar&lt;br /&gt;
myl.nano.Graviton 1.10,http://robocode-archive.strangeautomata.com/robots/myl.nano.Graviton_1.10.jar&lt;br /&gt;
myl.nano.KomoriNinja 1.1,http://robocode-archive.strangeautomata.com/robots/myl.nano.KomoriNinja_1.1.jar&lt;br /&gt;
mym.EdgeStalker 1.0,http://robocode-archive.strangeautomata.com/robots/mym.EdgeStalker_1.0.jar&lt;br /&gt;
mz.AntiGrav 1.0,http://robocode-archive.strangeautomata.com/robots/mz.AntiGrav_1.0.jar&lt;br /&gt;
mz.MicroGodMelee 1,http://robocode-archive.strangeautomata.com/robots/mz.MicroGodMelee_1.jar&lt;br /&gt;
mz.MicroSheep 1.0,http://robocode-archive.strangeautomata.com/robots/mz.MicroSheep_1.0.jar&lt;br /&gt;
mz.Cork 0.1,http://robocode-archive.strangeautomata.com/robots/mz.Cork_0.1.jar&lt;br /&gt;
mz.NanoGod 2.02,http://robocode-archive.strangeautomata.com/robots/mz.NanoGod_2.02.jar&lt;br /&gt;
nat.PallasHawk 1.0,http://robocode-archive.strangeautomata.com/robots/nat.PallasHawk_1.0.jar&lt;br /&gt;
ne.Chimera 1.2,http://robocode-archive.strangeautomata.com/robots/ne.Chimera_1.2.jar&lt;br /&gt;
nic.Nicator 2.4,http://robocode-archive.strangeautomata.com/robots/nic.Nicator_2.4.jar&lt;br /&gt;
Noran.BitchingElk 0.054,http://robocode-archive.strangeautomata.com/robots/Noran.BitchingElk_0.054.jar&lt;br /&gt;
ntc.ControlledChaos 1.1.4,http://robocode-archive.strangeautomata.com/robots/ntc.ControlledChaos_1.1.4.jar&lt;br /&gt;
ntc.Opposite 1.5,http://robocode-archive.strangeautomata.com/robots/ntc.Opposite_1.5.jar&lt;br /&gt;
nz.jdc.nano.GridFu 1.0,http://robocode-archive.strangeautomata.com/robots/nz.jdc.nano.GridFu_1.0.jar&lt;br /&gt;
oa.weak.BotherBot 0.1,http://robocode-archive.strangeautomata.com/robots/oa.weak.BotherBot_0.1.jar&lt;br /&gt;
oa.weak.FlyMk1 0.1,http://robocode-archive.strangeautomata.com/robots/oa.weak.FlyMk1_0.1.jar&lt;br /&gt;
oog.melee.Capulet 1.2,http://robocode-archive.strangeautomata.com/robots/oog.melee.Capulet_1.2.jar&lt;br /&gt;
oog.melee.CapuletDroid 1.1,http://robocode-archive.strangeautomata.com/robots/oog.melee.CapuletDroid_1.1.jar&lt;br /&gt;
oog.melee.Corsair 1.0,http://robocode-archive.strangeautomata.com/robots/oog.melee.Corsair_1.0.jar&lt;br /&gt;
oog.melee.Mercutio 1.0,http://robocode-archive.strangeautomata.com/robots/oog.melee.Mercutio_1.0.jar&lt;br /&gt;
origin.SleepSiphon 1.7b,https://github.com/John-Paul-R/SleepSiphon/releases/download/1.7b/origin.SleepSiphon_1.7b.jar&lt;br /&gt;
pa.Improved 1.0,http://robocode-archive.strangeautomata.com/robots/pa.Improved_1.0.jar&lt;br /&gt;
pac.ABC 2.1,http://robocode-archive.strangeautomata.com/robots/pac.ABC_2.1.jar&lt;br /&gt;
panzer.Panzer 0.2,http://robocode-archive.strangeautomata.com/robots/panzer.Panzer_0.2.jar&lt;br /&gt;
patson.PatsonTestBot 1.0,http://robocode-archive.strangeautomata.com/robots/patson.PatsonTestBot_1.0.jar&lt;br /&gt;
pbg.R2D2 1.0,http://robocode-archive.strangeautomata.com/robots/pbg.R2D2_1.0.jar&lt;br /&gt;
pbg.NinjaX 1.2,https://github.com/realr2d2/Bots/blob/gh-pages/pbg.NinjaX_1.2.jar?raw=true&lt;br /&gt;
TNT.TNT 0.99.1,http://robocode-archive.strangeautomata.com/robots/TNT.TNT_0.99.1.jar&lt;br /&gt;
pe.minimelee.SandboxMiniMelee 1.1,http://robocode-archive.strangeautomata.com/robots/pe.minimelee.SandboxMiniMelee_1.1.jar&lt;br /&gt;
pe.SandboxDT 2.71m,http://robocode-archive.strangeautomata.com/robots/pe.SandboxDT_2.71m.jar&lt;br /&gt;
pe.SandboxLump 1.52,http://robocode-archive.strangeautomata.com/robots/pe.SandboxLump_1.52.jar&lt;br /&gt;
pedersen.Grishnakh 1.0,http://robocode-archive.strangeautomata.com/robots/pedersen.Grishnakh_1.0.jar&lt;br /&gt;
pedersen.Moron 2.0,http://robocode-archive.strangeautomata.com/robots/pedersen.Moron_2.0.jar&lt;br /&gt;
pedersen.Ugluk 1.1.1,http://robocode-archive.strangeautomata.com/robots/pedersen.Ugluk_1.1.1.jar&lt;br /&gt;
pez.mini.ChironexFleckeri 0.5,http://robocode-archive.strangeautomata.com/robots/pez.mini.ChironexFleckeri_0.5.jar&lt;br /&gt;
pfvicm.Sobieski 7.2.3b,http://robocode-archive.strangeautomata.com/robots/pfvicm.Sobieski_7.2.3b.jar&lt;br /&gt;
ph.melee.ArcherME 0.3,http://robocode-archive.strangeautomata.com/robots/ph.melee.ArcherME_0.3.jar&lt;br /&gt;
Polkwane.SmashMelee 1.0,https://dl.dropboxusercontent.com/s/hog8g5km2pu3q1i/Polkwane.SmashMelee_1.0.jar?token_hash=AAEYkudeilgEUEILMqRqcdMrqBYFMaGSzuqXAO6BMVi2gQ&amp;amp;dl=1&lt;br /&gt;
positive.Portia 1.26e,http://robocode-archive.strangeautomata.com/robots/positive.Portia_1.26e.jar&lt;br /&gt;
PSW.Relentless 0.1,http://robocode-archive.strangeautomata.com/robots/PSW.Relentless_0.1.jar&lt;br /&gt;
pulsar.PulsarMax 0.8.9,http://robocode-archive.strangeautomata.com/robots/pulsar.PulsarMax_0.8.9.jar&lt;br /&gt;
qohnil.blot.BlotBot 3.61,http://robocode-archive.strangeautomata.com/robots/qohnil.blot.BlotBot_3.61.jar&lt;br /&gt;
qualidafial.MajorDick 1.0.1,https://www.dropbox.com/sh/n570kf8rsq6fuw2/vVQSIJJnAS/qualidafial.MajorDick_1.0.1.jar?dl=1&lt;br /&gt;
Queens_teamrobot.UltraRazor 1.0,http://robocode-archive.strangeautomata.com/robots/Queens_teamrobot.UltraRazor_1.0.jar&lt;br /&gt;
radnor.DoctorBob 1.42,http://robocode-archive.strangeautomata.com/robots/radnor.DoctorBob_1.42.jar&lt;br /&gt;
rampancy.Durandal 2.1d,http://robocode-archive.strangeautomata.com/robots/rampancy.Durandal_2.1d.jar&lt;br /&gt;
ratosh.Nobo 0.21,http://robocode-archive.strangeautomata.com/robots/ratosh.Nobo_0.21.jar&lt;br /&gt;
ratosh.Wesco 1.4,http://robocode-archive.strangeautomata.com/robots/ratosh.Wesco_1.4.jar&lt;br /&gt;
rdm.Dueler 0.4x,https://drive.google.com/uc?export=download&amp;amp;id=16x234SaadG-76wT0TJhpyDTxdQhO-j3j&lt;br /&gt;
rdt199.Warlord 0.73,http://robocode-archive.strangeautomata.com/robots/rdt199.Warlord_0.73.jar&lt;br /&gt;
repositorio.NanoStep 1.0,http://robocode-archive.strangeautomata.com/robots/repositorio.NanoStep_1.0.jar&lt;br /&gt;
robar.nano.Assertive_Melee 0.2,http://robocode-archive.strangeautomata.com/robots/robar.nano.Assertive_Melee_0.2.jar&lt;br /&gt;
rrh.Iwillfindyou 2.0,https://drive.google.com/uc?export=download&amp;amp;id=1wE-V_PQeMvKLisPmM8s6JEaznXEHYAIt&lt;br /&gt;
rsalesc.roborio.RoborioPorradeiro 1.1b,http://robocode-archive.strangeautomata.com/robots/rsalesc.roborio.RoborioPorradeiro_1.1b.jar&lt;br /&gt;
rsalesc.melee.Medina 0.4.5,http://robocode-archive.strangeautomata.com/robots/rsalesc.melee.Medina_0.4.5.jar&lt;br /&gt;
rsalesc.melee.Monk 0.3.6c,http://robocode-archive.strangeautomata.com/robots/rsalesc.melee.Monk_0.3.6c.jar&lt;br /&gt;
rtk.Tachikoma 1.0,http://robocode-archive.strangeautomata.com/robots/rtk.Tachikoma_1.0.jar&lt;br /&gt;
rz.Aleph 0.34,http://robocode-archive.strangeautomata.com/robots/rz.Aleph_0.34.jar&lt;br /&gt;
rz.GlowBlowMelee 1.4,http://robocode-archive.strangeautomata.com/robots/rz.GlowBlowMelee_1.4.jar&lt;br /&gt;
rz.HawkOnFire 0.1,http://robocode-archive.strangeautomata.com/robots/rz.HawkOnFire_0.1.jar&lt;br /&gt;
sadoner.killer 0.2,http://robocode-archive.strangeautomata.com/robots/sadoner.killer_0.2.jar&lt;br /&gt;
sam.Samspin 1.0,http://robocode-archive.strangeautomata.com/robots/sam.Samspin_1.0.jar&lt;br /&gt;
sample.Corners 1.0,http://robocode-archive.strangeautomata.com/robots/sample.Corners_1.0.jar&lt;br /&gt;
sample.Crazy 1.0,http://robocode-archive.strangeautomata.com/robots/sample.Crazy_1.0.jar&lt;br /&gt;
sample.Fire 1.0,http://robocode-archive.strangeautomata.com/robots/sample.Fire_1.0.jar&lt;br /&gt;
sample.MyFirstJuniorRobot 1.0,http://robocode-archive.strangeautomata.com/robots/sample.MyFirstJuniorRobot_1.0.jar&lt;br /&gt;
sample.MyFirstRobot 1.0,http://robocode-archive.strangeautomata.com/robots/sample.MyFirstRobot_1.0.jar&lt;br /&gt;
sample.RamFire 1.0,http://robocode-archive.strangeautomata.com/robots/sample.RamFire_1.0.jar&lt;br /&gt;
sample.SittingDuck 1.0,http://robocode-archive.strangeautomata.com/robots/sample.SittingDuck_1.0.jar&lt;br /&gt;
sample.SpinBot 1.0,http://robocode-archive.strangeautomata.com/robots/sample.SpinBot_1.0.jar&lt;br /&gt;
sample.Target 1.0,http://robocode-archive.strangeautomata.com/robots/sample.Target_1.0.jar&lt;br /&gt;
sample.Tracker 1.0,http://robocode-archive.strangeautomata.com/robots/sample.Tracker_1.0.jar&lt;br /&gt;
sample.TrackFire 1.0,http://robocode-archive.strangeautomata.com/robots/sample.TrackFire_1.0.jar&lt;br /&gt;
sample.VelociRobot 1.0,http://robocode-archive.strangeautomata.com/robots/sample.VelociRobot_1.0.jar&lt;br /&gt;
sample.Walls 1.0,http://robocode-archive.strangeautomata.com/robots/sample.Walls_1.0.jar&lt;br /&gt;
sanyi.mikrobi.Roberto 1.0,http://robocode-archive.strangeautomata.com/robots/sanyi.mikrobi.Roberto_1.0.jar&lt;br /&gt;
sanja.First 0.1,http://robocode-archive.strangeautomata.com/robots/sanja.First_0.1.jar&lt;br /&gt;
sch.Simone 0.3d,http://robocode-archive.strangeautomata.com/robots/sch.Simone_0.3d.jar&lt;br /&gt;
sgp.JollyNinja 3.53,http://robocode-archive.strangeautomata.com/robots/sgp.JollyNinja_3.53.jar&lt;br /&gt;
SHAM.WOW 1.4,http://robocode-archive.strangeautomata.com/robots/SHAM.WOW_1.4.jar&lt;br /&gt;
sheldor.melee.nano.NaturalScience 1.2.1,https://github.com/sheldor-robocode/jar-files/raw/main/sheldor.melee.nano.NaturalScience_1.2.1.jar&lt;br /&gt;
sheldor.melee.nano.TestMelee 0.1,http://robocode-archive.strangeautomata.com/robots/sheldor.melee.nano.TestMelee_0.1.jar&lt;br /&gt;
sheldor.nano.PointInLineRRAL 1.0.0,http://robocode-archive.strangeautomata.com/robots/sheldor.nano.PointInLineRRAL_1.0.0.jar&lt;br /&gt;
shinh.Entangled 0.3,http://robocode-archive.strangeautomata.com/robots/shinh.Entangled_0.3.jar&lt;br /&gt;
shrub.Silver v048,http://robocode-archive.strangeautomata.com/robots/shrub.Silver_v048.jar&lt;br /&gt;
shrub.Vapour v159,http://robocode-archive.strangeautomata.com/robots/shrub.Vapour_v159.jar&lt;br /&gt;
shu.nitro.LENIN .T34,http://robocode-archive.strangeautomata.com/robots/shu.nitro.LENIN_.T34.jar&lt;br /&gt;
sigterm.Sigterm 1.0,http://robocode-archive.strangeautomata.com/robots/sigterm.Sigterm_1.0.jar&lt;br /&gt;
simonton.micro.Sprout 1.1.3,http://robocode-archive.strangeautomata.com/robots/simonton.micro.Sprout_1.1.3.jar&lt;br /&gt;
simonton.nano.MeleeSeed 1.8,http://robocode-archive.strangeautomata.com/robots/simonton.nano.MeleeSeed_1.8.jar&lt;br /&gt;
simonton.nano.WeekendObsession_Melee 1.0,http://robocode-archive.strangeautomata.com/robots/simonton.nano.WeekendObsession_Melee_1.0.jar&lt;br /&gt;
skm.butterfly 1.0,http://robocode-archive.strangeautomata.com/robots/skm.butterfly_1.0.jar&lt;br /&gt;
skm.Ryubot 1.0,http://robocode-archive.strangeautomata.com/robots/skm.Ryubot_1.0.jar&lt;br /&gt;
skm.PateranBotlock2 1.0,http://robocode-archive.strangeautomata.com/robots/skm.PateranBotlock2_1.0.jar&lt;br /&gt;
spin.Bugstard 0.012b,http://robocode-archive.strangeautomata.com/robots/spin.Bugstard_0.012b.jar?dl=1&lt;br /&gt;
spinnercat.Omen 1.0,http://robocode-archive.strangeautomata.com/robots/spinnercat.Omen_1.0.jar&lt;br /&gt;
spinnercat.micro.Tyger 0.1,http://robocode-archive.strangeautomata.com/robots/spinnercat.micro.Tyger_0.1.jar&lt;br /&gt;
spinnercat.Robovirus 2.718,http://robocode-archive.strangeautomata.com/robots/spinnercat.Robovirus_2.718.jar&lt;br /&gt;
sp.Nanos.Ember 1.1,http://robocode-archive.strangeautomata.com/robots/sp.Nanos.Ember_1.1.jar&lt;br /&gt;
squidM.TentalceMeleeNano 1.1,http://robocode-archive.strangeautomata.com/robots/squidM.TentalceMeleeNano_1.1.jar&lt;br /&gt;
stelo.AreaTargetingBot 1.1,http://robocode-archive.strangeautomata.com/robots/stelo.AreaTargetingBot_1.1.jar&lt;br /&gt;
stelo.IntrinsicVolatility 1.4,http://robocode-archive.strangeautomata.com/robots/stelo.IntrinsicVolatility_1.4.jar&lt;br /&gt;
stelo.Liblix 0.3.1,https://github.com/kimtg/robocode-bots/releases/download/release/stelo.Liblix_0.3.1.jar&lt;br /&gt;
stelo.Lifestealer 1.0,http://robocode-archive.strangeautomata.com/robots/stelo.Lifestealer_1.0.jar&lt;br /&gt;
stelo.Mirror 1.1,http://robocode-archive.strangeautomata.com/robots/stelo.Mirror_1.1.jar&lt;br /&gt;
stelo.MirrorMicro 1.0,http://robocode-archive.strangeautomata.com/robots/stelo.MirrorMicro_1.0.jar&lt;br /&gt;
stelo.MirrorNano 1.3,http://robocode-archive.strangeautomata.com/robots/stelo.MirrorNano_1.3.jar&lt;br /&gt;
stelo.MyAgileRobot 0.2,http://robocode-archive.strangeautomata.com/robots/stelo.MyAgileRobot_0.2.jar&lt;br /&gt;
stelo.PatternRobot 1.0,http://robocode-archive.strangeautomata.com/robots/stelo.PatternRobot_1.0.jar&lt;br /&gt;
stelo.PianistNano 1.2,http://robocode-archive.strangeautomata.com/robots/stelo.PianistNano_1.2.jar&lt;br /&gt;
stelo.RamTrackSurfer 1.2,http://robocode-archive.strangeautomata.com/robots/stelo.RamTrackSurfer_1.2.jar&lt;br /&gt;
stelo.Randomness 1.0,http://robocode-archive.strangeautomata.com/robots/stelo.Randomness_1.0.jar&lt;br /&gt;
stelo.SoJNanoMelee 1.1,http://robocode-archive.strangeautomata.com/robots/stelo.SoJNanoMelee_1.1.jar&lt;br /&gt;
stelo.SoRobotNanoMelee 1.2,http://robocode-archive.strangeautomata.com/robots/stelo.SoRobotNanoMelee_1.2.jar&lt;br /&gt;
stelo.UntouchableNano 1.3,http://robocode-archive.strangeautomata.com/robots/stelo.UntouchableNano_1.3.jar&lt;br /&gt;
stelo.Wang 1.0,http://robocode-archive.strangeautomata.com/robots/stelo.Wang_1.0.jar&lt;br /&gt;
stelo.WangRobot 1.0,http://robocode-archive.strangeautomata.com/robots/stelo.WangRobot_1.0.jar&lt;br /&gt;
step.nanoPri 1.0,http://robocode-archive.strangeautomata.com/robots/step.nanoPri_1.0.jar&lt;br /&gt;
stf.PanzerGeneral 0.1,http://robocode-archive.strangeautomata.com/robots/stf.PanzerGeneral_0.1.jar&lt;br /&gt;
stuff.Vlad 0.1,http://robocode-archive.strangeautomata.com/robots/stuff.Vlad_0.1.jar&lt;br /&gt;
sul.Lunar 1.1,http://robocode-archive.strangeautomata.com/robots/sul.Lunar_1.1.jar&lt;br /&gt;
supersample.SuperBoxBot 1.0,http://robocode-archive.strangeautomata.com/robots/supersample.SuperBoxBot_1.0.jar&lt;br /&gt;
tad.Dalek98 0.98,http://robocode-archive.strangeautomata.com/robots/tad.Dalek98_0.98.jar&lt;br /&gt;
tcf.Reach 3,http://robocode-archive.strangeautomata.com/robots/tcf.Reach_3.jar&lt;br /&gt;
techdude.forest.FlamingForest 1.1,http://robocode-archive.strangeautomata.com/robots/techdude.forest.FlamingForest_1.1.jar&lt;br /&gt;
techdude.kombat.FlamingKombat 1.5,http://robocode-archive.strangeautomata.com/robots/techdude.kombat.FlamingKombat_1.5.jar&lt;br /&gt;
testantiswapgun.AntiSwap 1.0,http://robocode-archive.strangeautomata.com/robots/asd.AntiSwap_1.0.jar&lt;br /&gt;
tex.Longbot 0.4,http://robocode-archive.strangeautomata.com/robots/tex.Longbot_0.4.jar&lt;br /&gt;
throxbot.ThroxBot 0.1,http://robocode-archive.strangeautomata.com/robots/throxbot.ThroxBot_0.1.jar&lt;br /&gt;
timmit.nano.TimDog 0.33,http://robocode-archive.strangeautomata.com/robots/timmit.nano.TimDog_0.33.jar&lt;br /&gt;
tj.zombie1n 1.0.1,http://robocode-archive.strangeautomata.com/robots/tj.zombie1n_1.0.1.jar&lt;br /&gt;
tlp.ThreeLeggedPig 1,http://robocode-archive.strangeautomata.com/robots/tlp.ThreeLeggedPig_1.jar&lt;br /&gt;
tm.Yuugao 1.0,http://robocode-archive.strangeautomata.com/robots/tm.Yuugao_1.0.jar&lt;br /&gt;
tripphippy.Alice 1.1,http://robocode-archive.strangeautomata.com/robots/tripphippy.Alice_1.1.jar&lt;br /&gt;
trm.Wrekt 1.1.6.f,http://robocode-archive.strangeautomata.com/robots/trm.Wrekt_1.1.6.f.jar&lt;br /&gt;
tvv.micro.Antares 1.1.1,http://robocode-archive.strangeautomata.com/robots/tvv.micro.Antares_1.1.1.jar&lt;br /&gt;
tvv.nano.Polaris 1.2,http://robocode-archive.strangeautomata.com/robots/tvv.nano.Polaris_1.2.jar&lt;br /&gt;
tzu.TheArtOfWar 1.2,http://robocode-archive.strangeautomata.com/robots/tzu.TheArtOfWar_1.2.jar&lt;br /&gt;
uji.Antique 1.0,http://robocode-archive.strangeautomata.com/robots/uji.Antique_1.0.jar&lt;br /&gt;
uji.DBH 1.1,http://robocode-archive.strangeautomata.com/robots/uji.DBH_1.1.jar&lt;br /&gt;
uji.YellohFellah 1.0,http://robocode-archive.strangeautomata.com/robots/uji.YellohFellah_1.0.jar&lt;br /&gt;
urdos.URDOS 1.3,http://robocode-archive.strangeautomata.com/robots/urdos.URDOS_1.3.jar&lt;br /&gt;
vjik.UnViolation 1.1,http://robocode-archive.strangeautomata.com/robots/vjik.UnViolation_1.1.jar&lt;br /&gt;
voidious.Diamond 1.8.28,http://robocode-archive.strangeautomata.com/robots/voidious.Diamond_1.8.28.jar&lt;br /&gt;
voidious.micro.BlitzBat 1.05,http://robocode-archive.strangeautomata.com/robots/voidious.micro.BlitzBat_1.05.jar&lt;br /&gt;
voidious.mini.BrokenSword 2.0.3,http://robocode-archive.strangeautomata.com/robots/voidious.mini.BrokenSword_2.0.3.jar&lt;br /&gt;
vStar.RAFzilla 2.15,https://drive.google.com/uc?export=download&amp;amp;id=1mSf7wnoO5VnMdHDCJcC-tT9X7NzIcLJF&lt;br /&gt;
vuen.Cake 2.51,http://robocode-archive.strangeautomata.com/robots/vuen.Cake_2.51.jar&lt;br /&gt;
WarfaJibril.Jibril_Warfa_Andromeda 1.11,http://robocode-archive.strangeautomata.com/robots/WarfaJibril.Jibril_Warfa_Andromeda_1.11.jar&lt;br /&gt;
wcsv.melee.EngineerMelee 0.1,http://robocode-archive.strangeautomata.com/robots/wcsv.melee.EngineerMelee_0.1.jar&lt;br /&gt;
wee.Gem 1.8.4,http://robocode-archive.strangeautomata.com/robots/wee.Gem_1.8.4.jar&lt;br /&gt;
whitesquare.robots.SkynetAdvanced 1.1,https://dl.dropboxusercontent.com/s/6epm51goxqp7p0h/whitesquare.robots.SkynetAdvanced_1.1.jar?dl=1&lt;br /&gt;
winamp32.micro.MicroMacro 1.0,http://robocode-archive.strangeautomata.com/robots/winamp32.micro.MicroMacro_1.0.jar&lt;br /&gt;
wit.Chuliath 1.0,http://robocode-archive.strangeautomata.com/robots/wit.Chuliath_1.0.jar&lt;br /&gt;
wit.Deep7 2.0,http://robocode-archive.strangeautomata.com/robots/wit.Deep7_2.0.jar&lt;br /&gt;
wompi.Numbat 2.1,http://www.casepool.de/robocode/wompi.Numbat_2.1.jar&lt;br /&gt;
wompi.Quokka 1.6,http://www.casepool.de/robocode/wompi.Quokka_1.6.jar&lt;br /&gt;
wompi.Wallaby 5.1,http://www.casepool.de/robocode/wompi.Wallaby_5.1.jar&lt;br /&gt;
yagami.Tidus 0.11,http://robocode-archive.strangeautomata.com/robots/yagami.Tidus_0.11.jar&lt;br /&gt;
yk.JahMicro 1.0,http://robocode-archive.strangeautomata.com/robots/yk.JahMicro_1.0.jar&lt;br /&gt;
yk.JahRoslav 1.1,http://robocode-archive.strangeautomata.com/robots/yk.JahRoslav_1.1.jar&lt;br /&gt;
zyx.mega.YersiniaPestis 3.1,http://robocode-archive.strangeautomata.com/robots/zyx.mega.YersiniaPestis_3.1.jar&lt;br /&gt;
zyx.micro.Ant 1.1,http://robocode-archive.strangeautomata.com/robots/zyx.micro.Ant_1.1.jar&lt;br /&gt;
zyx.nano.Ant 1.1,http://robocode-archive.strangeautomata.com/robots/zyx.nano.Ant_1.1.jar&lt;br /&gt;
zyx.nano.BacillusComma 1.0,http://robocode-archive.strangeautomata.com/robots/zyx.nano.BacillusComma_1.0.jar&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
'''''No chatting on this page. Use the /ParticipantsChat page for that.'''''&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
'''''Removed because the server says: Ignoring. Also client cannot download these'''''&amp;lt;br&amp;gt;&lt;br /&gt;
''traker.Eraser 1,http://lablanchisserie.fr/Parissou/traker.Eraser.jar&lt;br /&gt;
''xyzdev.SimpleJack 1.0,https://xyzdev.webfactional.com/archive/xyzdev.SimpleJack_1.0.jar&lt;br /&gt;
&lt;br /&gt;
'''''Removed because the jarcontent/filename is not correct'''''&amp;lt;br&amp;gt;&lt;br /&gt;
''ary.HelpMeelee 1.0,3624''&amp;lt;br&amp;gt;&lt;br /&gt;
''dmsr.MiniR101 0.6''&amp;lt;br&amp;gt;&lt;br /&gt;
''enriquevilela.TieFighter 0.1,3224''&amp;lt;br&amp;gt;&lt;br /&gt;
''cw.melee.Burner 2.0&amp;lt;br&amp;gt;&lt;br /&gt;
''ROB.TraumaLlama 1.0,https://www.dropbox.com/s/b14r13f4xwc5kj5/ROB.TraumaLlama_1.0.jar?dl=0''&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''Removed because he crashes the vm frequently (mac/linux) 1.6'''''&amp;lt;br&amp;gt;&lt;br /&gt;
''dam.MogBot 2.9,http://www.robocoderepository.com/BotFiles/555/dam.MogBot_2.9.jar&lt;br /&gt;
&lt;br /&gt;
'''''Removed due to WontFix issues in Robocode 1.7+:'''''&amp;lt;br&amp;gt;&lt;br /&gt;
''* Hviela: ([[http://sourceforge.net/tracker/?func=detail&amp;amp;aid=2953268&amp;amp;group_id=37202&amp;amp;atid=419486 SF #2953268]])&amp;lt;br&amp;gt;&lt;br /&gt;
'': hvilela.HVilela 0.9.3,http://henrique.vilela.googlepages.com/hvilela.HVilela_0.9.3.jar''&lt;br /&gt;
&lt;br /&gt;
'''''Removed due to constant timeouts'''''&amp;lt;br&amp;gt;&lt;br /&gt;
''ary.FourWD 1.3c,http://robocode-archive.strangeautomata.com/robots/ary.FourWD_1.3c.jar&amp;lt;br&amp;gt;&lt;br /&gt;
''stelo.Moojuk 1.3,http://robocode-archive.strangeautomata.com/robots/stelo.Moojuk_1.3.jar&lt;br /&gt;
&lt;br /&gt;
'''''Removed due to constant unstoppable and compatibility issue under java 8'''''&amp;lt;br&amp;gt;&lt;br /&gt;
''apc.Caan 1.0,http://robocode-archive.strangeautomata.com/robots/apc.Caan_1.0.jar&lt;br /&gt;
&lt;br /&gt;
'''''Removed due to attempting to read environment variables'''''&amp;lt;br&amp;gt;&lt;br /&gt;
''gm.GaetanoA 2.15,http://robocode-archive.strangeautomata.com/robots/gm.GaetanoA_2.15.jar&lt;br /&gt;
&lt;br /&gt;
'''''Removed due to invalid robot or team'''''&amp;lt;br&amp;gt;&lt;br /&gt;
''stelo.Spread 0.5.2,https://github.com/kimtg/robocode-bots/releases/download/release/stelo.Spread_0.5.2.jar&lt;br /&gt;
''stelo.PastFuture 2.3.1,https://github.com/kimtg/robocode-bots/releases/download/release/stelo.PastFuture_2.3.1.jar&lt;br /&gt;
&lt;br /&gt;
'''Removed due to not working in 1.9.4.2'''&amp;lt;br&amp;gt;&lt;br /&gt;
''abc.tron3.Tron 3.11,http://robocode-archive.strangeautomata.com/robots/abc.tron3.Tron_3.11.jar''&lt;br /&gt;
&lt;br /&gt;
'''Removed due to not working with Java 17. Don't use Java 18. '''&amp;lt;br&amp;gt;&lt;br /&gt;
dylanb.xyz 2.0,https://drive.google.com/uc?export=download&amp;amp;id=18ugz_el8xentgdnPipnK4zGyBOoT3fN9&lt;/div&gt;</summary>
		<author><name>D414</name></author>
		
	</entry>
	<entry>
		<id>http://robowiki.net/w/index.php?title=Melee_Radar&amp;diff=57933</id>
		<title>Melee Radar</title>
		<link rel="alternate" type="text/html" href="http://robowiki.net/w/index.php?title=Melee_Radar&amp;diff=57933"/>
		<updated>2024-06-02T20:35:52Z</updated>

		<summary type="html">&lt;p&gt;D414: Fix syntax highlighting&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Melee Radars''' are [[Radar|radars]] used in [[Melee|melee]] battles. They usually take much more space in a bot than [[One on One Radar|one on one radars]], because there are many more decisions that have to be made about where to scan (in one on one, all you have to do is try to scan your enemy as much as possible). Enemies usually are not all in one 45 degree area, which makes bots have to compromise on what information they receive each turn. There are two major groups of radar strategies: getting frequent data of one bot (e.g., the firing target) and consistently updating data of all bots.&lt;br /&gt;
== Spinning radar ==&lt;br /&gt;
The most used radar both in [[Melee|melee]] and [[One on One|one on one]] is the generic spinning radar. It is by far the easiest to implement.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
public void run() {&lt;br /&gt;
    // ...&lt;br /&gt;
&lt;br /&gt;
    while(true) {&lt;br /&gt;
        turnRadarRightRadians(Double.POSITIVE_INFINITY);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Corner Arc ===&lt;br /&gt;
A variation on the spinning radar, if the robot is in a corner it scans back and forth across the 90 degree arc away from the corner, as not to waste time scanning where there cannot be any robots. Typically, this is used only in smaller melee robots, which do not have room for a more complicated radar system. Melee bots with room tend to use one of the implementations below.&lt;br /&gt;
&lt;br /&gt;
== Oldest Scanned ==&lt;br /&gt;
This type of melee radar spins towards the robot it hasn't seen in the longest amount of time. Here is an example of this type of radar.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
import java.util.*;&lt;br /&gt;
import robocode.*;&lt;br /&gt;
import robocode.util.*;&lt;br /&gt;
&lt;br /&gt;
// ... Within robot class&lt;br /&gt;
&lt;br /&gt;
static LinkedHashMap&amp;lt;String, Double&amp;gt; enemyHashMap;&lt;br /&gt;
static double scanDir;&lt;br /&gt;
static Object sought;&lt;br /&gt;
&lt;br /&gt;
public void run() {&lt;br /&gt;
    scanDir = 1;&lt;br /&gt;
    enemyHashMap = new LinkedHashMap&amp;lt;String, Double&amp;gt;(5, 2, true);&lt;br /&gt;
&lt;br /&gt;
    // ...&lt;br /&gt;
&lt;br /&gt;
    while(true) {&lt;br /&gt;
        setTurnRadarRightRadians(scanDir * Double.POSITIVE_INFINITY);&lt;br /&gt;
        scan();&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
public void onRobotDeath(RobotDeathEvent e) {&lt;br /&gt;
    enemyHashMap.remove(e.getName());&lt;br /&gt;
    sought = null;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
public void onScannedRobot(ScannedRobotEvent e) {&lt;br /&gt;
    String name = e.getName();&lt;br /&gt;
    LinkedHashMap&amp;lt;String, Double&amp;gt; ehm = enemyHashMap;&lt;br /&gt;
&lt;br /&gt;
    ehm.put(name, getHeadingRadians() + e.getBearingRadians());&lt;br /&gt;
&lt;br /&gt;
    if ((name == sought || sought == null) &amp;amp;&amp;amp; ehm.size() == getOthers()) {&lt;br /&gt;
	scanDir = Utils.normalRelativeAngle(ehm.values().iterator().next()&lt;br /&gt;
            - getRadarHeadingRadians());&lt;br /&gt;
        sought = ehm.keySet().iterator().next();&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // ...&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
With above code, the radar will spin past every bot, and then reverse it's direction until its passed all bots, then repeat. If  the spin takes more than 4 ticks, the radar will continue spinning like the spinning radar above. This kind of radar is used in many top bots include Shadow and Phoenix. This kind of radar should be used unless you need a melee radar lock or your targeting system requires you to have enemy scans every 8 ticks.&lt;br /&gt;
&lt;br /&gt;
== Gun Heat Lock ==&lt;br /&gt;
A technique developed by [[Paul Evans]]/[[Kawagi]] for [[SandboxDT]]/[[FloodHT]]. This radar locks onto a target when this robot has low gunheat. Normally this is best for melee robots which use GuessFactor Targeting.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
public void run() {&lt;br /&gt;
    // ...&lt;br /&gt;
    setTurnRadarRightRadians(Double.POSITIVE_INFINITY);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
public void onScannedRobot(ScannedRobotEvent e) {&lt;br /&gt;
    // ... your own target selection&lt;br /&gt;
    double absoluteBearing = getHeadingRadians() + e.getBearingRadians();&lt;br /&gt;
    if (isCurrentTarget &amp;amp;&amp;amp; getGunHeat() &amp;lt; 0.5) // Lock for 5 ticks&lt;br /&gt;
        setTurnRadarRightRadians(3.5 * Utils.normalRelativeAngle(absoluteBearing - getRadarHeadingRadians()));&lt;br /&gt;
    else&lt;br /&gt;
        setTurnRadarRightRadians(Double.POSITIVE_INFINITY); &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
The code above uses a Narrow Lock but the simpler Infinity Lock works just as well. For a narrow lock, it is recommended you multiply by a large factor to continue scanning other robots while locked.&lt;br /&gt;
&lt;br /&gt;
== Small melee sweep radar ==&lt;br /&gt;
Basically a turn multiplier radar with the ability to turn clockwise and counterclockwise. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
public void run() {&lt;br /&gt;
    setTurnRadarRightRadians(Double.POSTIVE_INFINITY)&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
public onScannedRobot(ScannedRobotEvent e) {&lt;br /&gt;
     // only works with some sort of scan break rule (like usual in melee)&lt;br /&gt;
    double turn;&lt;br /&gt;
    if (!Double.isNaN(turn = (Utils.normalRelativeAngle(rM - getRadarHeadingRadians()) * Double.POSTIVE_INFINITY))) {&lt;br /&gt;
        setTurnRadarRightRadians(turn);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For a melee radar it is beneficial not to turn the radar always in one direction. This melee sweep radar has a higher average scan rate than the traditional multiplier radar and is more stable than the infinity lock radar.&lt;/div&gt;</summary>
		<author><name>D414</name></author>
		
	</entry>
	<entry>
		<id>http://robowiki.net/w/index.php?title=User:D414&amp;diff=57932</id>
		<title>User:D414</title>
		<link rel="alternate" type="text/html" href="http://robowiki.net/w/index.php?title=User:D414&amp;diff=57932"/>
		<updated>2024-05-30T03:26:29Z</updated>

		<summary type="html">&lt;p&gt;D414: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Navbox small&lt;br /&gt;
| title = Sub-pages&lt;br /&gt;
| page1 = Diary of a Robocoder&lt;br /&gt;
| page2 = Personal Gotchas&lt;br /&gt;
}}&lt;br /&gt;
= Background =&lt;br /&gt;
I was first introduced to robocode in around 2010 as an undergraduate. For our class competition I wrote a simple melee bot using minimum risk movement and a buggy linear targeting gun which came second overall. I've been fascinated with robocode ever since but it wasn't until 2024 that I finally entered the [[RoboRumble]] with [[Quantum]].&lt;br /&gt;
&lt;br /&gt;
= My bots =&lt;br /&gt;
; Nano&lt;br /&gt;
[[Quantum]] - A melee specialist written in assembly with a novel take on nano sized [[Anti-Gravity Movement]].&lt;br /&gt;
&lt;br /&gt;
; Micro&lt;br /&gt;
[[FireHammer]] - A melee specialist with a powerful gun but very basic movement. My attempt at squeezing [[Mirage]]'s gun into a micro bot. (Retired after the release of [[Figment]])&lt;/div&gt;</summary>
		<author><name>D414</name></author>
		
	</entry>
	<entry>
		<id>http://robowiki.net/w/index.php?title=Quantum/Source_(Assembly)&amp;diff=57931</id>
		<title>Quantum/Source (Assembly)</title>
		<link rel="alternate" type="text/html" href="http://robowiki.net/w/index.php?title=Quantum/Source_(Assembly)&amp;diff=57931"/>
		<updated>2024-05-30T02:34:06Z</updated>

		<summary type="html">&lt;p&gt;D414: Created page with &amp;quot;&amp;lt;syntaxhighlight lang=&amp;quot;jasmin&amp;quot;&amp;gt; .version 61 0 .class public super d414/nano/Quantum .super robocode/AdvancedRobot  ; ----------------------------------------------------------...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;syntaxhighlight lang=&amp;quot;jasmin&amp;quot;&amp;gt;&lt;br /&gt;
.version 61 0&lt;br /&gt;
.class public super d414/nano/Quantum&lt;br /&gt;
.super robocode/AdvancedRobot&lt;br /&gt;
&lt;br /&gt;
; --------------------------------------------------------------------------------------------------&lt;br /&gt;
; ==============&lt;br /&gt;
; Quantum (Nano)&lt;br /&gt;
; ==============&lt;br /&gt;
; Author: David414&lt;br /&gt;
; License: RWPCL (https://robowiki.net/wiki/RWPCL)&lt;br /&gt;
; Credits: Mike Dorgan's bots DustBunny and Infinity&lt;br /&gt;
; --------------------------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
; --------------------------------------------------------------------------------------------------&lt;br /&gt;
; Version History&lt;br /&gt;
; --------------------------------------------------------------------------------------------------&lt;br /&gt;
; ==================================================================================================&lt;br /&gt;
; v0.2.2 (2024-04-06) Codesize: 249 | Colors: Yes | 1v1 capable: No&lt;br /&gt;
; ==================================================================================================&lt;br /&gt;
; - Antigravity movement based on DustBunny, but with forces calculated based on&lt;br /&gt;
;   where we would aim to hit the enemy, rather than where they currently are&lt;br /&gt;
; - Aim like DustBunny but with different energy management based only on how&lt;br /&gt;
;   many enemies are still alive. Fire more agressively early on and much less&lt;br /&gt;
;   agressively in 1v1&lt;br /&gt;
; - Quite a bit of code shrinking to make room for Infinity style target tracking&lt;br /&gt;
;&lt;br /&gt;
; ==================================================================================================&lt;br /&gt;
; v0.2.2a (2024-04-11) Codesize: 249 | Colors: Yes | 1v1 capable: No&lt;br /&gt;
; ==================================================================================================&lt;br /&gt;
; - No functional changes, added credits, version history and commented the code&lt;br /&gt;
;&lt;br /&gt;
; ==================================================================================================&lt;br /&gt;
; v0.2.3 (2024-05-11) Codesize: 245 | Colors: Yes | 1v1 capable: No&lt;br /&gt;
; ==================================================================================================&lt;br /&gt;
; - Change to int for distance and targetDistance variables&lt;br /&gt;
; - Switch to a gunHeat radar lock that doesn't require an if statement&lt;br /&gt;
; - Switch from setTurnRight to setTurnLeft&lt;br /&gt;
; - Fix the radar bug introduced in v0.2.1 that was added to make room for colours&lt;br /&gt;
;&lt;br /&gt;
; ==================================================================================================&lt;br /&gt;
; v0.2.4 (2024-05-16) Codesize: 249 | Colors: No | 1v1 capable: No&lt;br /&gt;
; ==================================================================================================&lt;br /&gt;
; - Add some energy management&lt;br /&gt;
;&lt;br /&gt;
; ==================================================================================================&lt;br /&gt;
; v1.0.0 (2024-05-30) Codesize: 249 | Colors: No | 1v1 capable: No&lt;br /&gt;
; ==================================================================================================&lt;br /&gt;
; - Remove the energy management added in v0.2.4&lt;br /&gt;
; - Switch to DustBunny's bullet power and energy management&lt;br /&gt;
; - Only fire if getGunTurnRemainingRadians &amp;lt; 18.0 / distance (Checked /after/ setTurnGun)&lt;br /&gt;
; - Switch to assembly to squeeze it all in (Saved 13 bytes)&lt;br /&gt;
&lt;br /&gt;
; --------------------------------------------------------------------------------------------------&lt;br /&gt;
; TODO&lt;br /&gt;
; --------------------------------------------------------------------------------------------------&lt;br /&gt;
; - Use the result of normalRelativeAngle in setTurnGunLeftRadians instead of calling&lt;br /&gt;
;   getGunTurnRemainingRadians. Should be able to save 3 bytes.&lt;br /&gt;
; - Revisit xForce/yForce calculations wrt codesize.&lt;br /&gt;
; - Revisit Math.sin(-absBearing + e.getHeadingRadians()) wrt codesize.&lt;br /&gt;
&lt;br /&gt;
; --------------------------------------------------------------------------------------------------&lt;br /&gt;
; Tuning Knobs (Find / Replace)&lt;br /&gt;
; --------------------------------------------------------------------------------------------------&lt;br /&gt;
; WALL_FORCE&lt;br /&gt;
; AGRAV_DECAY&lt;br /&gt;
; AHEAD_AMOUNT&lt;br /&gt;
&lt;br /&gt;
; AIM_START&lt;br /&gt;
; AIM_FACTOR&lt;br /&gt;
; AIM_TOLERANCE&lt;br /&gt;
; BULLET_POWER&lt;br /&gt;
; ENERGY_FACTOR&lt;br /&gt;
; RADAR_LOCK_THRESHOLD&lt;br /&gt;
&lt;br /&gt;
; --------------------------------------------------------------------------------------------------&lt;br /&gt;
; Constants (Find / Replace)&lt;br /&gt;
; --------------------------------------------------------------------------------------------------&lt;br /&gt;
; BATTLEFIELD_SIZE&lt;br /&gt;
&lt;br /&gt;
; --------------------------------------------------------------------------------------------------&lt;br /&gt;
; Globals&lt;br /&gt;
; --------------------------------------------------------------------------------------------------&lt;br /&gt;
.field static targetName Ljava/lang/String;&lt;br /&gt;
.field static targetDistance D&lt;br /&gt;
.field static xForce D&lt;br /&gt;
.field static yForce D&lt;br /&gt;
&lt;br /&gt;
; --------------------------------------------------------------------------------------------------&lt;br /&gt;
; Quantum()&lt;br /&gt;
; --------------------------------------------------------------------------------------------------&lt;br /&gt;
.method public &amp;lt;init&amp;gt; : ()V&lt;br /&gt;
    .code stack 1 locals 1&lt;br /&gt;
        aload_0&lt;br /&gt;
        invokespecial Method robocode/AdvancedRobot &amp;lt;init&amp;gt; ()V&lt;br /&gt;
        return&lt;br /&gt;
    .end code&lt;br /&gt;
.end method&lt;br /&gt;
&lt;br /&gt;
; --------------------------------------------------------------------------------------------------&lt;br /&gt;
; run()&lt;br /&gt;
; --------------------------------------------------------------------------------------------------&lt;br /&gt;
.method public run : ()V&lt;br /&gt;
    .code stack 5 locals 1&lt;br /&gt;
    ; ----------------------------------------------------------------------------------------------&lt;br /&gt;
    ; setTurnRadarRight(targetDistance = Double.POSITIVE_INFINITY)&lt;br /&gt;
    ; ----------------------------------------------------------------------------------------------&lt;br /&gt;
        aload_0&lt;br /&gt;
        ldc2_w +Infinity&lt;br /&gt;
        dup2&lt;br /&gt;
        putstatic Field d414/nano/Quantum targetDistance D&lt;br /&gt;
        invokevirtual Method d414/nano/Quantum setTurnRadarRight (D)V&lt;br /&gt;
&lt;br /&gt;
        return&lt;br /&gt;
    .end code&lt;br /&gt;
.end method&lt;br /&gt;
&lt;br /&gt;
; --------------------------------------------------------------------------------------------------&lt;br /&gt;
; onRobotDeath(RobotDeathEvent)&lt;br /&gt;
; --------------------------------------------------------------------------------------------------&lt;br /&gt;
.method public onRobotDeath : (Lrobocode/RobotDeathEvent;)V&lt;br /&gt;
    .code stack 2 locals 2&lt;br /&gt;
    ; ----------------------------------------------------------------------------------------------&lt;br /&gt;
    ; targetDistance = Double.POSITIVE_INFINITY&lt;br /&gt;
    ; ----------------------------------------------------------------------------------------------&lt;br /&gt;
        ldc2_w +Infinity&lt;br /&gt;
        putstatic Field d414/nano/Quantum targetDistance D&lt;br /&gt;
        return&lt;br /&gt;
    .end code&lt;br /&gt;
.end method&lt;br /&gt;
&lt;br /&gt;
; --------------------------------------------------------------------------------------------------&lt;br /&gt;
; onScannedRobot(ScannedRobotEvent)&lt;br /&gt;
; --------------------------------------------------------------------------------------------------&lt;br /&gt;
.method public onScannedRobot : (Lrobocode/ScannedRobotEvent;)V&lt;br /&gt;
    .code stack 16 locals 5&lt;br /&gt;
    ; ----------------------------------------------------------------------------------------------&lt;br /&gt;
    ; Locals:&lt;br /&gt;
    ;   r0 : Quantum           : this&lt;br /&gt;
    ;   r1 : ScannedRobotEvent : e&lt;br /&gt;
    ;   r2 :                   : (Uninitialised)&lt;br /&gt;
    ;   r3 :                   : (Uninitialised)&lt;br /&gt;
    ; Stack:&lt;br /&gt;
    ;   Empty&lt;br /&gt;
    ; ----------------------------------------------------------------------------------------------&lt;br /&gt;
        aload_1&lt;br /&gt;
        aload_0&lt;br /&gt;
        dup2&lt;br /&gt;
    ; ----------------------------------------------------------------------------------------------&lt;br /&gt;
    ; setAdjustGunForRobotTurn(true)&lt;br /&gt;
    ; ----------------------------------------------------------------------------------------------&lt;br /&gt;
        iconst_1&lt;br /&gt;
        invokevirtual Method d414/nano/Quantum setAdjustGunForRobotTurn (Z)V&lt;br /&gt;
        invokevirtual Method robocode/ScannedRobotEvent getHeadingRadians ()D&lt;br /&gt;
    ; ----------------------------------------------------------------------------------------------&lt;br /&gt;
    ; Locals:&lt;br /&gt;
    ;   r0 : Quantum           : this&lt;br /&gt;
    ;   r1 : ScannedRobotEvent : e&lt;br /&gt;
    ;   r2 :                   : (Uninitialised)&lt;br /&gt;
    ;   r3 :                   : (Uninitialised)&lt;br /&gt;
    ; Stack:&lt;br /&gt;
    ;   e this e.getHeadingRadians()&lt;br /&gt;
    ; ----------------------------------------------------------------------------------------------&lt;br /&gt;
        aload_0&lt;br /&gt;
        invokevirtual Method d414/nano/Quantum getHeadingRadians ()D&lt;br /&gt;
        dup2_x2&lt;br /&gt;
    ; ----------------------------------------------------------------------------------------------&lt;br /&gt;
    ; Locals:&lt;br /&gt;
    ;   r0 : Quantum           : this&lt;br /&gt;
    ;   r1 : ScannedRobotEvent : e&lt;br /&gt;
    ;   r2 :                   : (Uninitialised)&lt;br /&gt;
    ;   r3 :                   : (Uninitialised)&lt;br /&gt;
    ; Stack:&lt;br /&gt;
    ;   e this getHeadingRadians() e.getHeadingRadians() getHeadingRadians()&lt;br /&gt;
    ; ----------------------------------------------------------------------------------------------&lt;br /&gt;
        aload_1&lt;br /&gt;
        invokevirtual Method robocode/ScannedRobotEvent getBearingRadians ()D&lt;br /&gt;
        dadd&lt;br /&gt;
        dup2_x2&lt;br /&gt;
    ; ----------------------------------------------------------------------------------------------&lt;br /&gt;
    ; Locals:&lt;br /&gt;
    ;   r0 : Quantum           : this&lt;br /&gt;
    ;   r1 : ScannedRobotEvent : e&lt;br /&gt;
    ;   r2 :                   : (Uninitialised)&lt;br /&gt;
    ;   r3 :                   : (Uninitialised)&lt;br /&gt;
    ; Stack:&lt;br /&gt;
    ;   e this getHeadingRadians() absBearing e.getHeadingRadians() absBearing&lt;br /&gt;
    ; ----------------------------------------------------------------------------------------------&lt;br /&gt;
        dsub&lt;br /&gt;
        invokestatic Method java/lang/Math sin (D)D&lt;br /&gt;
        aload_1&lt;br /&gt;
        invokevirtual Method robocode/ScannedRobotEvent getVelocity ()D&lt;br /&gt;
        dmul&lt;br /&gt;
    ; ----------------------------------------------------------------------------------------------&lt;br /&gt;
    ; Locals:&lt;br /&gt;
    ;   r0 : Quantum           : this&lt;br /&gt;
    ;   r1 : ScannedRobotEvent : e&lt;br /&gt;
    ;   r2 :                   : (Uninitialised)&lt;br /&gt;
    ;   r3 :                   : (Uninitialised)&lt;br /&gt;
    ; Stack:&lt;br /&gt;
    ;   e this getHeadingRadians() absBearing latVel&lt;br /&gt;
    ; ----------------------------------------------------------------------------------------------&lt;br /&gt;
    ; ----------------------------------------------------------------------------------------------&lt;br /&gt;
    ; Tuning knob: AIM_START&lt;br /&gt;
    ; ----------------------------------------------------------------------------------------------&lt;br /&gt;
        ldc2_w +10.0&lt;br /&gt;
    ; ----------------------------------------------------------------------------------------------&lt;br /&gt;
    ; Tuning knob: AIM_FACTOR&lt;br /&gt;
    ; ----------------------------------------------------------------------------------------------&lt;br /&gt;
        ldc2_w +1.008&lt;br /&gt;
        aload_1&lt;br /&gt;
        invokevirtual Method robocode/ScannedRobotEvent getDistance ()D&lt;br /&gt;
        dup2&lt;br /&gt;
        dstore_1&lt;br /&gt;
    ; ----------------------------------------------------------------------------------------------&lt;br /&gt;
    ; Locals:&lt;br /&gt;
    ;   r0 : Quantum           : this&lt;br /&gt;
    ;   r1 : double            : e.getDistance()&lt;br /&gt;
    ;   r2 : double_2nd        : e.getDistance()&lt;br /&gt;
    ;   r3 :                   : (Uninitialised)&lt;br /&gt;
    ; Stack:&lt;br /&gt;
    ;   e this getHeadingRadians() absBearing latVel AIM_START AIM_FACTOR e.getDistance()&lt;br /&gt;
    ; ----------------------------------------------------------------------------------------------&lt;br /&gt;
        invokestatic Method java/lang/Math pow (DD)D&lt;br /&gt;
        dadd&lt;br /&gt;
        ddiv&lt;br /&gt;
        dadd&lt;br /&gt;
        dstore_3&lt;br /&gt;
    ; ----------------------------------------------------------------------------------------------&lt;br /&gt;
    ; Locals:&lt;br /&gt;
    ;   r0 : Quantum           : this&lt;br /&gt;
    ;   r1 : double            : e.getDistance()&lt;br /&gt;
    ;   r2 : double_2nd        : e.getDistance()&lt;br /&gt;
    ;   r3 : double            : aimAngle&lt;br /&gt;
    ; Stack:&lt;br /&gt;
    ;   e this getHeadingRadians()&lt;br /&gt;
    ; ----------------------------------------------------------------------------------------------&lt;br /&gt;
        aload_0&lt;br /&gt;
        invokevirtual Method d414/nano/Quantum getX ()D&lt;br /&gt;
        getstatic Field d414/nano/Quantum xForce D&lt;br /&gt;
    ; ----------------------------------------------------------------------------------------------&lt;br /&gt;
    ; Tuning knob: AGRAV_DECAY&lt;br /&gt;
    ; ----------------------------------------------------------------------------------------------&lt;br /&gt;
        ldc2_w +0.9&lt;br /&gt;
        dmul&lt;br /&gt;
        dload_3&lt;br /&gt;
        invokestatic Method java/lang/Math sin (D)D&lt;br /&gt;
        dload_1&lt;br /&gt;
        ddiv&lt;br /&gt;
        dsub&lt;br /&gt;
        dup2_x2&lt;br /&gt;
        putstatic Field d414/nano/Quantum xForce D&lt;br /&gt;
        invokestatic Method d414/nano/Quantum calcWallForce (D)D&lt;br /&gt;
        dadd&lt;br /&gt;
    ; ----------------------------------------------------------------------------------------------&lt;br /&gt;
    ; Locals:&lt;br /&gt;
    ;   r0 : Quantum           : this&lt;br /&gt;
    ;   r1 : double            : e.getDistance()&lt;br /&gt;
    ;   r2 : double_2nd        : e.getDistance()&lt;br /&gt;
    ;   r3 : double            : aimAngle&lt;br /&gt;
    ; Stack:&lt;br /&gt;
    ;   e this getHeadingRadians() ( xForce' + calcWallForce(getX()) )&lt;br /&gt;
    ; ----------------------------------------------------------------------------------------------&lt;br /&gt;
        aload_0&lt;br /&gt;
        invokevirtual Method d414/nano/Quantum getY ()D&lt;br /&gt;
        getstatic Field d414/nano/Quantum yForce D&lt;br /&gt;
    ; ----------------------------------------------------------------------------------------------&lt;br /&gt;
    ; Tuning knob: AGRAV_DECAY&lt;br /&gt;
    ; ----------------------------------------------------------------------------------------------&lt;br /&gt;
        ldc2_w +0.9&lt;br /&gt;
        dmul&lt;br /&gt;
        dload_3&lt;br /&gt;
        invokestatic Method java/lang/Math cos (D)D&lt;br /&gt;
        dload_1&lt;br /&gt;
        ddiv&lt;br /&gt;
        dsub&lt;br /&gt;
        dup2_x2&lt;br /&gt;
        putstatic Field d414/nano/Quantum yForce D&lt;br /&gt;
        invokestatic Method d414/nano/Quantum calcWallForce (D)D&lt;br /&gt;
        dadd&lt;br /&gt;
    ; ----------------------------------------------------------------------------------------------&lt;br /&gt;
    ; Locals:&lt;br /&gt;
    ;   r0 : Quantum           : this&lt;br /&gt;
    ;   r1 : double            : e.getDistance()&lt;br /&gt;
    ;   r2 : double_2nd        : e.getDistance()&lt;br /&gt;
    ;   r3 : double            : aimAngle&lt;br /&gt;
    ; Stack:&lt;br /&gt;
    ;   e this getHeadingRadians() ( xForce' + calcWallForce(getX()) ) ( yForce' + calcWallForce(getY()) )&lt;br /&gt;
    ; ----------------------------------------------------------------------------------------------&lt;br /&gt;
        invokestatic Method java/lang/Math atan2 (DD)D&lt;br /&gt;
        dsub&lt;br /&gt;
    ; ----------------------------------------------------------------------------------------------&lt;br /&gt;
    ; Locals:&lt;br /&gt;
    ;   r0 : Quantum           : this&lt;br /&gt;
    ;   r1 : double            : e.getDistance()&lt;br /&gt;
    ;   r2 : double_2nd        : e.getDistance()&lt;br /&gt;
    ;   r3 : double            : aimAngle&lt;br /&gt;
    ; Stack:&lt;br /&gt;
    ;   e this ( turnAngle - getHeadingRadians() )&lt;br /&gt;
    ; ----------------------------------------------------------------------------------------------&lt;br /&gt;
        invokestatic Method robocode/util/Utils normalRelativeAngle (D)D&lt;br /&gt;
        invokevirtual Method d414/nano/Quantum setTurnLeftRadians (D)V&lt;br /&gt;
    ; ----------------------------------------------------------------------------------------------&lt;br /&gt;
    ; Locals:&lt;br /&gt;
    ;   r0 : Quantum           : this&lt;br /&gt;
    ;   r1 : double            : e.getDistance()&lt;br /&gt;
    ;   r2 : double_2nd        : e.getDistance()&lt;br /&gt;
    ;   r3 : double            : aimAngle&lt;br /&gt;
    ; Stack:&lt;br /&gt;
    ;   e&lt;br /&gt;
    ; ----------------------------------------------------------------------------------------------&lt;br /&gt;
        aload_0&lt;br /&gt;
        aload_0&lt;br /&gt;
        dup2_x1&lt;br /&gt;
        dup2_x1&lt;br /&gt;
        invokevirtual Method d414/nano/Quantum getTurnRemaining ()D&lt;br /&gt;
        invokestatic Method java/lang/Math abs (D)D&lt;br /&gt;
    ; ----------------------------------------------------------------------------------------------&lt;br /&gt;
    ; Tuning knob: AHEAD_AMOUNT&lt;br /&gt;
    ; ----------------------------------------------------------------------------------------------&lt;br /&gt;
        ldc2_w +120.0&lt;br /&gt;
        dsub&lt;br /&gt;
        invokevirtual Method d414/nano/Quantum setBack (D)V&lt;br /&gt;
    ; ----------------------------------------------------------------------------------------------&lt;br /&gt;
    ; Locals:&lt;br /&gt;
    ;   r0 : Quantum           : this&lt;br /&gt;
    ;   r1 : double            : e.getDistance()&lt;br /&gt;
    ;   r2 : double_2nd        : e.getDistance()&lt;br /&gt;
    ;   r3 : double            : aimAngle&lt;br /&gt;
    ; Stack:&lt;br /&gt;
    ;   this this this this e&lt;br /&gt;
    ; ----------------------------------------------------------------------------------------------&lt;br /&gt;
        invokevirtual Method robocode/ScannedRobotEvent getName ()Ljava/lang/String;&lt;br /&gt;
        dup&lt;br /&gt;
        getstatic Field d414/nano/Quantum targetName Ljava/lang/String;&lt;br /&gt;
        if_acmpeq L_TARGET&lt;br /&gt;
        dload_1&lt;br /&gt;
        getstatic Field d414/nano/Quantum targetDistance D&lt;br /&gt;
        dcmpg&lt;br /&gt;
        ifge L_NOT_TARGET&lt;br /&gt;
&lt;br /&gt;
L_TARGET:&lt;br /&gt;
        .stack full&lt;br /&gt;
            locals Object d414/nano/Quantum Double Double&lt;br /&gt;
            stack Object d414/nano/Quantum Object d414/nano/Quantum Object d414/nano/Quantum Object d414/nano/Quantum Object java/lang/String&lt;br /&gt;
        .end stack&lt;br /&gt;
&lt;br /&gt;
    ; ----------------------------------------------------------------------------------------------&lt;br /&gt;
    ; Locals:&lt;br /&gt;
    ;   r0 : Quantum           : this&lt;br /&gt;
    ;   r1 : double            : e.getDistance()&lt;br /&gt;
    ;   r2 : double_2nd        : e.getDistance()&lt;br /&gt;
    ;   r3 : double            : aimAngle&lt;br /&gt;
    ; Stack:&lt;br /&gt;
    ;   this this this this e.getName()&lt;br /&gt;
    ; ----------------------------------------------------------------------------------------------&lt;br /&gt;
        putstatic Field d414/nano/Quantum targetName Ljava/lang/String;&lt;br /&gt;
        dload_1&lt;br /&gt;
        putstatic Field d414/nano/Quantum targetDistance D&lt;br /&gt;
&lt;br /&gt;
    ; ----------------------------------------------------------------------------------------------&lt;br /&gt;
    ; Locals:&lt;br /&gt;
    ;   r0 : Quantum           : this&lt;br /&gt;
    ;   r1 : double            : e.getDistance()&lt;br /&gt;
    ;   r2 : double_2nd        : e.getDistance()&lt;br /&gt;
    ;   r3 : double            : aimAngle&lt;br /&gt;
    ; Stack:&lt;br /&gt;
    ;   this this this this&lt;br /&gt;
    ; ----------------------------------------------------------------------------------------------&lt;br /&gt;
        invokevirtual Method d414/nano/Quantum getGunHeat ()D&lt;br /&gt;
    ; ----------------------------------------------------------------------------------------------&lt;br /&gt;
    ; Tuning knob: RADAR_LOCK_THRESHOLD&lt;br /&gt;
    ; ----------------------------------------------------------------------------------------------&lt;br /&gt;
        dconst_1&lt;br /&gt;
        dsub&lt;br /&gt;
        aload_0&lt;br /&gt;
        invokevirtual Method d414/nano/Quantum getRadarTurnRemaining ()D&lt;br /&gt;
        dmul&lt;br /&gt;
        invokevirtual Method d414/nano/Quantum setTurnRadarRight (D)V&lt;br /&gt;
    ; ----------------------------------------------------------------------------------------------&lt;br /&gt;
    ; Locals:&lt;br /&gt;
    ;   r0 : Quantum           : this&lt;br /&gt;
    ;   r1 : double            : e.getDistance()&lt;br /&gt;
    ;   r2 : double_2nd        : e.getDistance()&lt;br /&gt;
    ;   r3 : double            : aimAngle&lt;br /&gt;
    ; Stack:&lt;br /&gt;
    ;   this this&lt;br /&gt;
    ; ----------------------------------------------------------------------------------------------&lt;br /&gt;
        invokevirtual Method d414/nano/Quantum getGunHeadingRadians ()D&lt;br /&gt;
        dload_3&lt;br /&gt;
        dsub&lt;br /&gt;
        invokestatic Method robocode/util/Utils normalRelativeAngle (D)D&lt;br /&gt;
        invokevirtual Method d414/nano/Quantum setTurnGunLeftRadians (D)V&lt;br /&gt;
    ; ----------------------------------------------------------------------------------------------&lt;br /&gt;
    ; Locals:&lt;br /&gt;
    ;   r0 : Quantum           : this&lt;br /&gt;
    ;   r1 : double            : e.getDistance()&lt;br /&gt;
    ;   r2 : double_2nd        : e.getDistance()&lt;br /&gt;
    ;   r3 : double            : aimAngle&lt;br /&gt;
    ; Stack:&lt;br /&gt;
    ;   Empty&lt;br /&gt;
    ; ----------------------------------------------------------------------------------------------&lt;br /&gt;
    ; ----------------------------------------------------------------------------------------------&lt;br /&gt;
    ; Tuning knob: AIM_TOLERANCE&lt;br /&gt;
    ; ----------------------------------------------------------------------------------------------&lt;br /&gt;
        ldc2_w +18.0&lt;br /&gt;
        dload_1&lt;br /&gt;
        ddiv&lt;br /&gt;
        aload_0&lt;br /&gt;
        invokevirtual Method d414/nano/Quantum getGunTurnRemainingRadians ()D&lt;br /&gt;
        invokestatic Method java/lang/Math abs (D)D&lt;br /&gt;
        dcmpl&lt;br /&gt;
        ifle L_DONT_FIRE&lt;br /&gt;
        aload_0&lt;br /&gt;
        aload_0&lt;br /&gt;
        invokevirtual Method d414/nano/Quantum getEnergy ()D&lt;br /&gt;
    ; ----------------------------------------------------------------------------------------------&lt;br /&gt;
    ; Tuning knob: ENERGY_FACTOR&lt;br /&gt;
    ; ----------------------------------------------------------------------------------------------&lt;br /&gt;
        ldc2_w +7.0&lt;br /&gt;
        ddiv&lt;br /&gt;
    ; ----------------------------------------------------------------------------------------------&lt;br /&gt;
    ; Tuning knob: BULLET_POWER&lt;br /&gt;
    ; ----------------------------------------------------------------------------------------------&lt;br /&gt;
        ldc2_w +2.49999&lt;br /&gt;
        invokestatic Method java/lang/Math min (DD)D&lt;br /&gt;
&lt;br /&gt;
        invokevirtual Method d414/nano/Quantum setFire (D)V&lt;br /&gt;
&lt;br /&gt;
L_DONT_FIRE:&lt;br /&gt;
        .stack full&lt;br /&gt;
            locals Object d414/nano/Quantum Double Double&lt;br /&gt;
            stack&lt;br /&gt;
        .end stack&lt;br /&gt;
        return&lt;br /&gt;
&lt;br /&gt;
L_NOT_TARGET:&lt;br /&gt;
        .stack full&lt;br /&gt;
            locals Object d414/nano/Quantum Double Double&lt;br /&gt;
            stack Object d414/nano/Quantum Object d414/nano/Quantum Object d414/nano/Quantum Object d414/nano/Quantum Object java/lang/String&lt;br /&gt;
        .end stack&lt;br /&gt;
        return&lt;br /&gt;
    .end code&lt;br /&gt;
.end method&lt;br /&gt;
&lt;br /&gt;
; --------------------------------------------------------------------------------------------------&lt;br /&gt;
; calcWallForce(double)&lt;br /&gt;
; --------------------------------------------------------------------------------------------------&lt;br /&gt;
.method public static calcWallForce : (D)D&lt;br /&gt;
    .code stack 8 locals 2&lt;br /&gt;
    ; ----------------------------------------------------------------------------------------------&lt;br /&gt;
    ; Tuning knob: WALL_FORCE&lt;br /&gt;
    ; ----------------------------------------------------------------------------------------------&lt;br /&gt;
        dconst_1&lt;br /&gt;
        dload_0&lt;br /&gt;
        ddiv&lt;br /&gt;
    ; ----------------------------------------------------------------------------------------------&lt;br /&gt;
    ; Tuning knob: WALL_FORCE&lt;br /&gt;
    ; ----------------------------------------------------------------------------------------------&lt;br /&gt;
        dconst_1&lt;br /&gt;
    ; ----------------------------------------------------------------------------------------------&lt;br /&gt;
    ; Constant: BATTLEFIELD_SIZE&lt;br /&gt;
    ; ----------------------------------------------------------------------------------------------&lt;br /&gt;
        ldc2_w +1000.0&lt;br /&gt;
        dload_0&lt;br /&gt;
        dsub&lt;br /&gt;
        ddiv&lt;br /&gt;
        dsub&lt;br /&gt;
        dreturn&lt;br /&gt;
    .end code&lt;br /&gt;
.end method&lt;br /&gt;
&lt;br /&gt;
.end class&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>D414</name></author>
		
	</entry>
	<entry>
		<id>http://robowiki.net/w/index.php?title=Quantum/Source_(Java)&amp;diff=57930</id>
		<title>Quantum/Source (Java)</title>
		<link rel="alternate" type="text/html" href="http://robowiki.net/w/index.php?title=Quantum/Source_(Java)&amp;diff=57930"/>
		<updated>2024-05-30T02:28:50Z</updated>

		<summary type="html">&lt;p&gt;D414: Update to v1.0.0&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The following code is functionally equivalent to [[Quantum/Source (Assembly)]] but when compiled with OpenJDK 17 it will be 265 bytes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
package d414.nano;&lt;br /&gt;
&lt;br /&gt;
import robocode.*;&lt;br /&gt;
import robocode.util.Utils;&lt;br /&gt;
&lt;br /&gt;
import java.awt.Color;&lt;br /&gt;
&lt;br /&gt;
public class Quantum extends AdvancedRobot {&lt;br /&gt;
    // ---------------------------------------------------------------------------------------------&lt;br /&gt;
    // Tuning Knobs&lt;br /&gt;
    // ---------------------------------------------------------------------------------------------&lt;br /&gt;
    static final double WALL_FORCE = 1.0;&lt;br /&gt;
    static final double AGRAV_DECAY = 0.9;&lt;br /&gt;
    static final double AHEAD_AMOUNT = 120.0;&lt;br /&gt;
&lt;br /&gt;
    static final double AIM_START = 10.0;&lt;br /&gt;
    static final double AIM_FACTOR = 1.008;&lt;br /&gt;
    static final double AIM_TOLERANCE = 18.0;&lt;br /&gt;
    static final double BULLET_POWER = 2.49999;&lt;br /&gt;
    static final double ENERGY_FACTOR = 7.0;&lt;br /&gt;
    static final double RADAR_LOCK_THRESHOLD = 1.0;&lt;br /&gt;
&lt;br /&gt;
    // ---------------------------------------------------------------------------------------------&lt;br /&gt;
    // Constants&lt;br /&gt;
    // ---------------------------------------------------------------------------------------------&lt;br /&gt;
    static final double BATTLEFIELD_SIZE = 1000.0;&lt;br /&gt;
&lt;br /&gt;
    // ---------------------------------------------------------------------------------------------&lt;br /&gt;
    // Globals&lt;br /&gt;
    // ---------------------------------------------------------------------------------------------&lt;br /&gt;
    static String targetName;&lt;br /&gt;
    static double targetDistance;&lt;br /&gt;
    static double xForce;&lt;br /&gt;
    static double yForce;&lt;br /&gt;
&lt;br /&gt;
    @Override&lt;br /&gt;
    public void run() {&lt;br /&gt;
        //setAllColors(Color.cyan);&lt;br /&gt;
        setTurnRadarRight(targetDistance = Double.POSITIVE_INFINITY);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    @Override&lt;br /&gt;
    public void onRobotDeath(RobotDeathEvent r1e) {&lt;br /&gt;
        targetDistance = Double.POSITIVE_INFINITY;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    @Override&lt;br /&gt;
    public void onScannedRobot(ScannedRobotEvent r1e) {&lt;br /&gt;
        double r1d;&lt;br /&gt;
        double r3d;&lt;br /&gt;
&lt;br /&gt;
        setAdjustGunForRobotTurn(true);&lt;br /&gt;
        setTurnLeftRadians(Utils.normalRelativeAngle(&lt;br /&gt;
                    (r3d = getHeadingRadians())&lt;br /&gt;
                    - Math.atan2(&lt;br /&gt;
                        (xForce = xForce * AGRAV_DECAY&lt;br /&gt;
                         - Math.sin(r3d = (r3d += r1e.getBearingRadians())&lt;br /&gt;
                             + (Math.sin(r1e.getHeadingRadians() - r3d)&lt;br /&gt;
                                 * r1e.getVelocity()&lt;br /&gt;
                                 / (AIM_START + Math.pow(AIM_FACTOR, r1d = r1e.getDistance()))&lt;br /&gt;
                               )&lt;br /&gt;
                             ) / r1d&lt;br /&gt;
                        )&lt;br /&gt;
                        + calcWallForce(getX())&lt;br /&gt;
                        , &lt;br /&gt;
                        (yForce = yForce * AGRAV_DECAY - Math.cos(r3d) / r1d)&lt;br /&gt;
                        + calcWallForce(getY())&lt;br /&gt;
                        )&lt;br /&gt;
                    ));&lt;br /&gt;
        setBack(Math.abs(getTurnRemaining()) - AHEAD_AMOUNT);&lt;br /&gt;
&lt;br /&gt;
        if (r1e.getName() == targetName || r1d &amp;lt; targetDistance) {&lt;br /&gt;
            targetName = r1e.getName();&lt;br /&gt;
            targetDistance = r1d;&lt;br /&gt;
&lt;br /&gt;
            setTurnRadarRight((getGunHeat() - RADAR_LOCK_THRESHOLD) * getRadarTurnRemaining());&lt;br /&gt;
            setTurnGunLeftRadians(Utils.normalRelativeAngle(getGunHeadingRadians() - r3d));&lt;br /&gt;
&lt;br /&gt;
            if (Math.abs(getGunTurnRemainingRadians()) &amp;lt; (AIM_TOLERANCE / r1d)) {&lt;br /&gt;
                setFire(Math.min(getEnergy() / ENERGY_FACTOR, BULLET_POWER));&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public static double calcWallForce(double r0d) {&lt;br /&gt;
        return (WALL_FORCE / r0d) - (WALL_FORCE / (BATTLEFIELD_SIZE - r0d));&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>D414</name></author>
		
	</entry>
	<entry>
		<id>http://robowiki.net/w/index.php?title=Quantum/Source_(Java)&amp;diff=57928</id>
		<title>Quantum/Source (Java)</title>
		<link rel="alternate" type="text/html" href="http://robowiki.net/w/index.php?title=Quantum/Source_(Java)&amp;diff=57928"/>
		<updated>2024-05-30T02:23:45Z</updated>

		<summary type="html">&lt;p&gt;D414: D414 moved page Quantum/Source to Quantum/Source (Java)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
// -------------------------------------------------------------------------------------------------&lt;br /&gt;
// ==============&lt;br /&gt;
// Quantum (Nano)&lt;br /&gt;
// ==============&lt;br /&gt;
// Author: David414&lt;br /&gt;
// License: RWPCL (https://robowiki.net/wiki/RWPCL)&lt;br /&gt;
// -------------------------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
// -------------------------------------------------------------------------------------------------&lt;br /&gt;
// Credits&lt;br /&gt;
// -------------------------------------------------------------------------------------------------&lt;br /&gt;
// Quantum started out life as a tweaked version of Mike Dorgan's DustBunny before being heavily&lt;br /&gt;
// shrunk to make room for improved target tracking (inspired by Infinity, also by Mike).&lt;br /&gt;
&lt;br /&gt;
// -------------------------------------------------------------------------------------------------&lt;br /&gt;
// Version History&lt;br /&gt;
// -------------------------------------------------------------------------------------------------&lt;br /&gt;
// =================================================================================================&lt;br /&gt;
// v0.2.2 (2024-04-06) Codesize: 249  | Colors: Yes | 1v1 capable: No&lt;br /&gt;
// =================================================================================================&lt;br /&gt;
// - Antigravity movement based on DustBunny, but with forces calculated based on&lt;br /&gt;
//   where we would aim to hit the enemy, rather than where they currently are&lt;br /&gt;
// - Aim like DustBunny but with different energy management based only on how&lt;br /&gt;
//   many enemies are still alive. Fire more agressively early on and much less&lt;br /&gt;
//   agressively in 1v1&lt;br /&gt;
// - Quite a bit of code shrinking to make room for Infinity style target tracking&lt;br /&gt;
//&lt;br /&gt;
// =================================================================================================&lt;br /&gt;
// v0.2.2a (2024-04-11) Codesize: 249  | Colors: Yes | 1v1 capable: No&lt;br /&gt;
// =================================================================================================&lt;br /&gt;
// - No functional changes, added credits, version history and commented the code&lt;br /&gt;
//&lt;br /&gt;
// =================================================================================================&lt;br /&gt;
// v0.2.3 (2024-05-14) Codesize: 245  | Colors: Yes | 1v1 capable: No&lt;br /&gt;
// =================================================================================================&lt;br /&gt;
// - Change to int for distance and targetDistance variables&lt;br /&gt;
// - Switch to a gunHeat radar lock that doesn't require an if statement&lt;br /&gt;
// - Switch from setTurnRight to setTurnLeft&lt;br /&gt;
&lt;br /&gt;
package d414.nano;&lt;br /&gt;
&lt;br /&gt;
import robocode.*;&lt;br /&gt;
import robocode.util.Utils;&lt;br /&gt;
&lt;br /&gt;
import java.awt.Color;&lt;br /&gt;
&lt;br /&gt;
public class Quantum extends AdvancedRobot {&lt;br /&gt;
    // ---------------------------------------------------------------------------------------------&lt;br /&gt;
    // Tuning Knobs&lt;br /&gt;
    // ---------------------------------------------------------------------------------------------&lt;br /&gt;
    static final double WALL_FORCE = 1.0;&lt;br /&gt;
    static final double AGRAV_DECAY = 0.9;&lt;br /&gt;
    static final double AHEAD_AMOUNT = 120.0;&lt;br /&gt;
&lt;br /&gt;
    static final double AIM_START = 10.0;&lt;br /&gt;
    static final double AIM_FACTOR = 1.008;&lt;br /&gt;
    static final double RADAR_LOCK_THRESHOLD = 1.0;&lt;br /&gt;
    static final int POWER_FACTOR = 2;&lt;br /&gt;
&lt;br /&gt;
    // ---------------------------------------------------------------------------------------------&lt;br /&gt;
    // Globals&lt;br /&gt;
    // ---------------------------------------------------------------------------------------------&lt;br /&gt;
    static String targetName;&lt;br /&gt;
    static int targetDistance;&lt;br /&gt;
    static double xForce;&lt;br /&gt;
    static double yForce;&lt;br /&gt;
&lt;br /&gt;
    @Override&lt;br /&gt;
    public void run() {&lt;br /&gt;
        setAllColors(Color.cyan);&lt;br /&gt;
        setAdjustGunForRobotTurn(true);&lt;br /&gt;
        onRobotDeath(null);&lt;br /&gt;
        setTurnRadarRight(Double.POSITIVE_INFINITY);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    @Override&lt;br /&gt;
    public void onRobotDeath(RobotDeathEvent r1e) {&lt;br /&gt;
        targetDistance = Integer.MAX_VALUE;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    @Override&lt;br /&gt;
    public void onScannedRobot(ScannedRobotEvent r1e) {&lt;br /&gt;
        int r2i;&lt;br /&gt;
        double r3d;&lt;br /&gt;
&lt;br /&gt;
        setTurnLeftRadians(Utils.normalRelativeAngle(&lt;br /&gt;
                    (r3d = getHeadingRadians())&lt;br /&gt;
                    - Math.atan2(&lt;br /&gt;
                        (xForce = xForce * AGRAV_DECAY&lt;br /&gt;
                         - Math.sin(r3d = (r3d += r1e.getBearingRadians())&lt;br /&gt;
                             + (r1e.getVelocity()&lt;br /&gt;
                                 * Math.sin(r1e.getHeadingRadians() - r3d)&lt;br /&gt;
                                 / (AIM_START + Math.pow(AIM_FACTOR, r2i = (int)r1e.getDistance()))&lt;br /&gt;
                               )&lt;br /&gt;
                             ) / r2i&lt;br /&gt;
                        )&lt;br /&gt;
                        + calcWallForce(getX())&lt;br /&gt;
                        , &lt;br /&gt;
                        (yForce = yForce * AGRAV_DECAY - Math.cos(r3d) / r2i)&lt;br /&gt;
                        + calcWallForce(getY())&lt;br /&gt;
                        )&lt;br /&gt;
                    ));&lt;br /&gt;
        setAhead(AHEAD_AMOUNT - Math.abs(getTurnRemaining()));&lt;br /&gt;
&lt;br /&gt;
        if (r2i &amp;lt; targetDistance || r1e.getName() == targetName) {&lt;br /&gt;
            targetName = r1e.getName();&lt;br /&gt;
            targetDistance = r2i;&lt;br /&gt;
&lt;br /&gt;
            setTurnRadarRight((getGunHeat() - RADAR_LOCK_THRESHOLD) * getRadarTurnRemaining());&lt;br /&gt;
            setFire(getOthers() / POWER_FACTOR);&lt;br /&gt;
            setTurnGunRightRadians(Utils.normalRelativeAngle(r3d - getGunHeadingRadians()));&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public static double calcWallForce(double r0d) {&lt;br /&gt;
        return (WALL_FORCE / r0d) - (WALL_FORCE / (1000 - r0d));&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>D414</name></author>
		
	</entry>
	<entry>
		<id>http://robowiki.net/w/index.php?title=Quantum/Source&amp;diff=57929</id>
		<title>Quantum/Source</title>
		<link rel="alternate" type="text/html" href="http://robowiki.net/w/index.php?title=Quantum/Source&amp;diff=57929"/>
		<updated>2024-05-30T02:23:45Z</updated>

		<summary type="html">&lt;p&gt;D414: D414 moved page Quantum/Source to Quantum/Source (Java)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Quantum/Source (Java)]]&lt;/div&gt;</summary>
		<author><name>D414</name></author>
		
	</entry>
	<entry>
		<id>http://robowiki.net/w/index.php?title=Quantum&amp;diff=57927</id>
		<title>Quantum</title>
		<link rel="alternate" type="text/html" href="http://robowiki.net/w/index.php?title=Quantum&amp;diff=57927"/>
		<updated>2024-05-30T02:23:08Z</updated>

		<summary type="html">&lt;p&gt;D414: Remove some navbox elements I'll never remember to update&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Navbox small&lt;br /&gt;
| title        = Sub-pages&lt;br /&gt;
| page1        = Version History&lt;br /&gt;
| page2        = Source (Java)&lt;br /&gt;
| page3        = Source (Assembly)&lt;br /&gt;
}}&lt;br /&gt;
{{Infobox Robot&lt;br /&gt;
| author          = [[User:D414|David414]]&lt;br /&gt;
| name            = Quantum&lt;br /&gt;
| released        = April 2024&lt;br /&gt;
| extends         = [[AdvancedRobot]]&lt;br /&gt;
| targeting       = [[Linear Targeting]]&lt;br /&gt;
| movement        = [[Anti-Gravity Movement]]&lt;br /&gt;
| license         = [[RWPCL]]&lt;br /&gt;
| isOpenSource    = yes&lt;br /&gt;
| isOneOnOne      = no&lt;br /&gt;
| isMelee         = yes&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Background Information ==&lt;br /&gt;
&lt;br /&gt;
; What's special about it?&lt;br /&gt;
* Antigravity movement based on the enemy's predicted future position (ie where we would aim) rather than their current location&lt;br /&gt;
* Written in assembly since v1.0.0&lt;br /&gt;
&lt;br /&gt;
; How competitive is it?&lt;br /&gt;
Very. It took the nano melee crown from [[DustBunny]] and was the first nanobot to outperform [[HawkOnFire]].&lt;br /&gt;
&lt;br /&gt;
== Strategy ==&lt;br /&gt;
&lt;br /&gt;
; How does it [[Movement|move]]?&lt;br /&gt;
Quantum uses [[Anti-Gravity Movement]] based on [[DustBunny]] but instead of calculating forces based on the angle to the enemy's current position Quantum uses the angle it would fire at.&lt;br /&gt;
&lt;br /&gt;
; How does it fire?&lt;br /&gt;
Quantum uses [[DustBunny]]'s aim and bullet power selection with more reliable target tracking (from [[Infinity]]). Unlike most (all?) nanos it checks that it has a good aim before firing.&lt;br /&gt;
&lt;br /&gt;
; How does it dodge bullets?&lt;br /&gt;
It doesn't.&lt;br /&gt;
&lt;br /&gt;
; How does the melee strategy differ from One-on-one strategy?&lt;br /&gt;
Quantum assumes the battlefield is 1000x1000 so it can only fight in melee.&lt;br /&gt;
&lt;br /&gt;
; How does it select a target to attack/avoid in melee?&lt;br /&gt;
It attacks the closest target while trying to avoid everybody.&lt;br /&gt;
&lt;br /&gt;
; What does it save between rounds and matches?&lt;br /&gt;
Nothing.&lt;br /&gt;
&lt;br /&gt;
== Additional Information ==&lt;br /&gt;
; Where did you get the name?&lt;br /&gt;
I wanted a gravity themed name with small vibes and [[Graviton]] was already taken.&lt;br /&gt;
&lt;br /&gt;
; Can I use your code?&lt;br /&gt;
Yes, under the terms of the [[RWPCL]]. The code can be found in the .jar and at [[Quantum/Source_(Java)]] / [[Quantum/Source_(Assembly)]].&lt;br /&gt;
&lt;br /&gt;
; What's next for your robot?&lt;br /&gt;
Some more serious gun tuning&lt;br /&gt;
&lt;br /&gt;
; Does it have any White Whales?&lt;br /&gt;
&amp;lt;s&amp;gt;[[DustBunny]]&amp;lt;/s&amp;gt;&lt;br /&gt;
&amp;lt;s&amp;gt;[[HawkOnFire]]&amp;lt;/s&amp;gt;&lt;br /&gt;
[[Shiz]]&lt;br /&gt;
&lt;br /&gt;
; What other robot(s) is it based on?&lt;br /&gt;
* [[DustBunny]] (Nano-sized antigravity movement, aiming and bullet power)&lt;br /&gt;
* [[Infinity]] (Target tracking)&lt;br /&gt;
&lt;br /&gt;
[[Category:NanoBots]]&lt;/div&gt;</summary>
		<author><name>D414</name></author>
		
	</entry>
	<entry>
		<id>http://robowiki.net/w/index.php?title=Quantum&amp;diff=57926</id>
		<title>Quantum</title>
		<link rel="alternate" type="text/html" href="http://robowiki.net/w/index.php?title=Quantum&amp;diff=57926"/>
		<updated>2024-05-30T02:19:38Z</updated>

		<summary type="html">&lt;p&gt;D414: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Navbox small&lt;br /&gt;
| title        = Sub-pages&lt;br /&gt;
| page1        = Version History&lt;br /&gt;
| page2        = Source (Java)&lt;br /&gt;
| page3        = Source (Assembly)&lt;br /&gt;
}}&lt;br /&gt;
{{Infobox Robot&lt;br /&gt;
| author          = [[User:D414|David414]]&lt;br /&gt;
| name            = Quantum&lt;br /&gt;
| released        = April 2024&lt;br /&gt;
| extends         = [[AdvancedRobot]]&lt;br /&gt;
| targeting       = [[Linear Targeting]]&lt;br /&gt;
| movement        = [[Anti-Gravity Movement]]&lt;br /&gt;
| current_version = 0.2.2&lt;br /&gt;
| rating          = {{NavboxStats|link=http://literumble.appspot.com/BotDetails?game=nanomeleerumble&amp;amp;name=d414.nano.Quantum%200.2.2 |rumble=NanoMeleeRumble|scorelabel=APS|score=64.81|rank=2nd|win=87|loss=0|plrank=1st|glicko2=N/A|pwin=100|vote=44.83|anpp=98.34|score2label=Survival|score2=25.36}}&lt;br /&gt;
| license         = [[RWPCL]]&lt;br /&gt;
| isOpenSource    = yes&lt;br /&gt;
| isOneOnOne      = no&lt;br /&gt;
| isMelee         = yes&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Background Information ==&lt;br /&gt;
&lt;br /&gt;
; What's special about it?&lt;br /&gt;
* Antigravity movement based on the enemy's predicted future position (ie where we would aim) rather than their current location&lt;br /&gt;
* Written in assembly since v1.0.0&lt;br /&gt;
&lt;br /&gt;
; How competitive is it?&lt;br /&gt;
Very. It took the nano melee crown from [[DustBunny]] and was the first nanobot to outperform [[HawkOnFire]].&lt;br /&gt;
&lt;br /&gt;
== Strategy ==&lt;br /&gt;
&lt;br /&gt;
; How does it [[Movement|move]]?&lt;br /&gt;
Quantum uses [[Anti-Gravity Movement]] based on [[DustBunny]] but instead of calculating forces based on the angle to the enemy's current position Quantum uses the angle it would fire at.&lt;br /&gt;
&lt;br /&gt;
; How does it fire?&lt;br /&gt;
Quantum uses [[DustBunny]]'s aim and bullet power selection with more reliable target tracking (from [[Infinity]]). Unlike most (all?) nanos it checks that it has a good aim before firing.&lt;br /&gt;
&lt;br /&gt;
; How does it dodge bullets?&lt;br /&gt;
It doesn't.&lt;br /&gt;
&lt;br /&gt;
; How does the melee strategy differ from One-on-one strategy?&lt;br /&gt;
Quantum assumes the battlefield is 1000x1000 so it can only fight in melee.&lt;br /&gt;
&lt;br /&gt;
; How does it select a target to attack/avoid in melee?&lt;br /&gt;
It attacks the closest target while trying to avoid everybody.&lt;br /&gt;
&lt;br /&gt;
; What does it save between rounds and matches?&lt;br /&gt;
Nothing.&lt;br /&gt;
&lt;br /&gt;
== Additional Information ==&lt;br /&gt;
; Where did you get the name?&lt;br /&gt;
I wanted a gravity themed name with small vibes and [[Graviton]] was already taken.&lt;br /&gt;
&lt;br /&gt;
; Can I use your code?&lt;br /&gt;
Yes, under the terms of the [[RWPCL]]. The code can be found in the .jar and at [[Quantum/Source_(Java)]] / [[Quantum/Source_(Assembly)]].&lt;br /&gt;
&lt;br /&gt;
; What's next for your robot?&lt;br /&gt;
Some more serious gun tuning&lt;br /&gt;
&lt;br /&gt;
; Does it have any White Whales?&lt;br /&gt;
&amp;lt;s&amp;gt;[[DustBunny]]&amp;lt;/s&amp;gt;&lt;br /&gt;
&amp;lt;s&amp;gt;[[HawkOnFire]]&amp;lt;/s&amp;gt;&lt;br /&gt;
[[Shiz]]&lt;br /&gt;
&lt;br /&gt;
; What other robot(s) is it based on?&lt;br /&gt;
* [[DustBunny]] (Nano-sized antigravity movement, aiming and bullet power)&lt;br /&gt;
* [[Infinity]] (Target tracking)&lt;br /&gt;
&lt;br /&gt;
[[Category:NanoBots]]&lt;/div&gt;</summary>
		<author><name>D414</name></author>
		
	</entry>
	<entry>
		<id>http://robowiki.net/w/index.php?title=RoboRumble/Participants/Melee&amp;diff=57925</id>
		<title>RoboRumble/Participants/Melee</title>
		<link rel="alternate" type="text/html" href="http://robowiki.net/w/index.php?title=RoboRumble/Participants/Melee&amp;diff=57925"/>
		<updated>2024-05-30T01:40:57Z</updated>

		<summary type="html">&lt;p&gt;D414: Quantum, now written in assembler&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{:RoboRumble/Navigation}}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Just add your bot name ('''as appears in the Robocode selector after packaging''', so including versionnumber) and the download link by &amp;quot;,&amp;quot; (there must be no space after the comma).&lt;br /&gt;
&lt;br /&gt;
The list is in '''alphabetical''' order. Add your bot in the right slot.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;For your bot to be accepted by the RR@Home server, the following rules are mandatory:&amp;lt;/span&amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
* The bot must have a package-name.&lt;br /&gt;
* The bot must be packaged in a jar-file.&lt;br /&gt;
* A &amp;lt;botname&amp;gt;.properties file must be present in the jar-file.&lt;br /&gt;
* The naming of the bot must reflect the internal structure, see [http://home.versatel.nl/gheijenk/plaatjes/bot_naming.png]for sample.RamFire.&lt;br /&gt;
* '''&amp;lt;font color=&amp;quot;#CA0813&amp;quot;&amp;gt;The bot should be compatible with Java 17&amp;lt;/font&amp;gt; (Don't compile your code with Java 18 or newer versions)'''&lt;br /&gt;
&lt;br /&gt;
The easiest way to do this is to package your bot with Robocode (Robot -&amp;gt; Package robot for upload).&lt;br /&gt;
&lt;br /&gt;
'''PLEASE MAKE SURE YOUR BOT IS NOT ALREADY ON THE LIST BEFORE YOU ADD IT.&amp;lt;br&amp;gt;IF YOU ARE ADDING A NEW VERSION OF YOUR BOT, PLEASE DELETE THE OLD ONE.'''&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
aaa.r.ScalarR 0.005g.047,https://drive.google.com/uc?export=download&amp;amp;id=1RtyCnpE6XI_WHHvJwjj2brqFPvfgX9Uv&lt;br /&gt;
abc.Shadow 3.84i,http://robocode-archive.strangeautomata.com/robots/abc.Shadow_3.84i.jar&lt;br /&gt;
abud.ThirdRobo 1.0,http://robocode-archive.strangeautomata.com/robots/abud.ThirdRobo_1.0.jar&lt;br /&gt;
acogdev.alpha 0.2,http://robocode-archive.strangeautomata.com/robots/acogdev.alpha_0.2.jar&lt;br /&gt;
adt.Ar1 2.1,http://robocode-archive.strangeautomata.com/robots/adt.Ar1_2.1.jar&lt;br /&gt;
adt.Ar2 1.0,http://robocode-archive.strangeautomata.com/robots/adt.Ar2_1.0.jar&lt;br /&gt;
adt.Ar2 1.1,http://robocode-archive.strangeautomata.com/robots/adt.Ar2_1.1.jar&lt;br /&gt;
agd.Mooserwirt2 2.7,http://robocode-archive.strangeautomata.com/robots/agd.Mooserwirt2_2.7.jar&lt;br /&gt;
agrach.Dalek 1.0,https://github.com/aleksey-zhidkov/rc-repo-mirror/raw/master/agrach.Dalek_1.0.jar&lt;br /&gt;
ags.surreptitious.MiniSurreptitious 0.0.1,http://robocode-archive.strangeautomata.com/robots/ags.surreptitious.MiniSurreptitious_0.0.1.jar&lt;br /&gt;
ags.Glacier 0.2.11,http://robocode-archive.strangeautomata.com/robots/ags.Glacier_0.2.11.jar&lt;br /&gt;
ahf.NanoAndrew .4,http://robocode-archive.strangeautomata.com/robots/ahf.NanoAndrew_.4.jar&lt;br /&gt;
ahr.ice.Ice 1.0.2,http://robocode-archive.strangeautomata.com/robots/ahr.ice.Ice_1.0.2.jar&lt;br /&gt;
ak.Fermat 2.0,http://robocode-archive.strangeautomata.com/robots/ak.Fermat_2.0.jar&lt;br /&gt;
alpha.BlackIce 1.0,http://robocode-archive.strangeautomata.com/robots/alpha.BlackIce_1.0.jar&lt;br /&gt;
alpha.RainingFire 1.0,http://robocode-archive.strangeautomata.com/robots/alpha.RainingFire_1.0.jar&lt;br /&gt;
amk.ChumbaMini 0.2,http://robocode-archive.strangeautomata.com/robots/amk.ChumbaMini_0.2.jar&lt;br /&gt;
amk.ChumbaWumba 0.3,http://robocode-archive.strangeautomata.com/robots/amk.ChumbaWumba_0.3.jar&lt;br /&gt;
amk.jointstrike.JointStrike 0.2,http://robocode-archive.strangeautomata.com/robots/amk.jointstrike.JointStrike_0.2.jar&lt;br /&gt;
amk.ShizzleStiX.ShizzleStiX 0.6,http://robocode-archive.strangeautomata.com/robots/amk.ShizzleStiX.ShizzleStiX_0.6.jar&lt;br /&gt;
amk.superstrike.SuperStrike 0.3,http://robocode-archive.strangeautomata.com/robots/amk.superstrike.SuperStrike_0.3.jar&lt;br /&gt;
amk.Punbot.Punbot 0.01,http://robocode-archive.strangeautomata.com/robots/amk.Punbot.Punbot_0.01.jar&lt;br /&gt;
amz.NanoClone 1.41,http://robocode-archive.strangeautomata.com/robots/amz.NanoClone_1.41.jar&lt;br /&gt;
ap.Frederick 1.1,http://robocode-archive.strangeautomata.com/robots/ap.Frederick_1.1.jar&lt;br /&gt;
apc.botM 3.0,http://robocode-archive.strangeautomata.com/robots/apc.botM_3.0.jar&lt;br /&gt;
apc.Colossus2 0.17,http://robocode-archive.strangeautomata.com/robots/apc.Colossus2_0.17.jar&lt;br /&gt;
apc.LeeroyJenkins2 1.0,http://robocode-archive.strangeautomata.com/robots/apc.LeeroyJenkins2_1.0.jar&lt;br /&gt;
apollokidd.ApolloKidd 0.9,http://robocode-archive.strangeautomata.com/robots/apollokidd.ApolloKidd_0.9.jar&lt;br /&gt;
ara.Shera 0.88,http://robocode-archive.strangeautomata.com/robots/ara.Shera_0.88.jar&lt;br /&gt;
arthord.MannyPacquiao Beta,http://robocode-archive.strangeautomata.com/robots/arthord.MannyPacquiao_Beta.jar&lt;br /&gt;
arthord.NanoSatanMelee Beta,http://robocode-archive.strangeautomata.com/robots/arthord.NanoSatanMelee_Beta.jar&lt;br /&gt;
ary.Swarm 1.1,http://robocode-archive.strangeautomata.com/robots/ary.Swarm_1.1.jar&lt;br /&gt;
as.FrankTheTank 1.3,http://robocode-archive.strangeautomata.com/robots/as.FrankTheTank_1.3.jar&lt;br /&gt;
asd.Cthulhu 1.3,http://robocode-archive.strangeautomata.com/robots/asd.Cthulhu_1.3.jar&lt;br /&gt;
awesomeness.Elite 1.0,http://robocode-archive.strangeautomata.com/robots/awesomeness.Elite_1.0.jar&lt;br /&gt;
axeBots.HataMoto 3.09,http://robocode-archive.strangeautomata.com/robots/axeBots.HataMoto_3.09.jar&lt;br /&gt;
ayk.WallHugger 1.0,http://robocode-archive.strangeautomata.com/robots/ayk.WallHugger_1.0.jar&lt;br /&gt;
az.Ololobot 0.2.4,https://github.com/alexei-zayakin/robocode/raw/master/az.Ololobot_0.2.4.jar&lt;br /&gt;
baal.nano.N 1.42,http://robocode-archive.strangeautomata.com/robots/baal.nano.N_1.42.jar&lt;br /&gt;
bayen.nut.Squirrel 1.615,http://robocode-archive.strangeautomata.com/robots/bayen.nut.Squirrel_1.615.jar&lt;br /&gt;
bayen.UbaMicro 1.4,http://robocode-archive.strangeautomata.com/robots/bayen.UbaMicro_1.4.jar&lt;br /&gt;
bigpete.Stewie 1.0,http://robocode-archive.strangeautomata.com/robots/bigpete.Stewie_1.0.jar&lt;br /&gt;
br2.MobyDickBot 1.6,http://robocode-archive.strangeautomata.com/robots/br2.MobyDickBot_1.6.jar&lt;br /&gt;
brainfade.melee.Dusk 0.44,http://robocode-archive.strangeautomata.com/robots/brainfade.melee.Dusk_0.44.jar&lt;br /&gt;
brainfade.melee.Genghis 0.36,http://robocode-archive.strangeautomata.com/robots/brainfade.melee.Genghis_0.36.jar&lt;br /&gt;
bts.mega.Gnarly 1.4,http://robocode-archive.strangeautomata.com/robots/bts.mega.Gnarly_1.4.jar&lt;br /&gt;
bts.wiki.RipCurl 0.9b,http://robocode-archive.strangeautomata.com/robots/bts.wiki.RipCurl_0.9b.jar&lt;br /&gt;
bvh.fnr.Fenrir 0.36l,http://robocode-archive.strangeautomata.com/robots/bvh.fnr.Fenrir_0.36l.jar&lt;br /&gt;
bvh.fry.Freya 0.82,http://robocode-archive.strangeautomata.com/robots/bvh.fry.Freya_0.82.jar&lt;br /&gt;
bvh.micro.Freya 0.3,http://robocode-archive.strangeautomata.com/robots/bvh.micro.Freya_0.3.jar&lt;br /&gt;
bvh.mini.Fenrir 0.39,http://robocode-archive.strangeautomata.com/robots/bvh.mini.Fenrir_0.39.jar&lt;br /&gt;
bvh.mini.Freya 0.55,http://robocode-archive.strangeautomata.com/robots/bvh.mini.Freya_0.55.jar&lt;br /&gt;
bwbaugh.nano.Tirunculus 0.0.0a,http://robocode-archive.strangeautomata.com/robots/bwbaugh.nano.Tirunculus_0.0.0a.jar&lt;br /&gt;
bzdp.BoxCar 2.0,http://robocode-archive.strangeautomata.com/robots/bzdp.BoxCar_2.0.jar&lt;br /&gt;
bzdp.Pansy 2.1,http://robocode-archive.strangeautomata.com/robots/bzdp.Pansy_2.1.jar&lt;br /&gt;
caimano.Furia_Ceca 0.22,http://robocode-archive.strangeautomata.com/robots/caimano.Furia_Ceca_0.22.jar&lt;br /&gt;
catcat20.Lambda 0.024,https://drive.google.com/uc?export=download&amp;amp;id=1KgQRpAJVYtrnX_M0YCUT3iS1SjInSvcX&lt;br /&gt;
catcat20.Rabbit 0.001,https://drive.google.com/uc?export=download&amp;amp;id=1Cz81GQX7u9qe0muFXWx4qm-lNOA0MXeE&lt;br /&gt;
catcat20.shape.Theta 0.018,https://drive.google.com/uc?export=download&amp;amp;id=1EXcQ5PlX7m2alnvlISipPF2ywsWPMSA0&lt;br /&gt;
cb.fire.Firestarter 2.0f,https://www.dropbox.com/s/96qhyuh648ufuju/cb.fire.Firestarter_2.0f.jar?dl=1&lt;br /&gt;
cb.nano.Insomnia 1.0,https://www.dropbox.com/s/3sl5bz9knsgxewe/cb.nano.Insomnia_1.0.jar?dl=1&lt;br /&gt;
cf.RiO.RiOx 4.2.1,http://robocode-archive.strangeautomata.com/robots/cf.RiO.RiOx_4.2.1.jar&lt;br /&gt;
cli.Dancer 1.1,http://robocode-archive.strangeautomata.com/robots/cli.Dancer_1.1.jar&lt;br /&gt;
cli.WasteOfAmmo 1.0,http://robocode-archive.strangeautomata.com/robots/cli.WasteOfAmmo_1.0.jar&lt;br /&gt;
co.edu.usb.rc.LidisTron 1.0,http://robocode-archive.strangeautomata.com/robots/co.edu.usb.rc.LidisTron_1.0.jar&lt;br /&gt;
com.blogspot.malinkody.DestrobotMalin 1.0,http://robocode-archive.strangeautomata.com/robots/com.blogspot.malinkody.DestrobotMalin_1.0.jar&lt;br /&gt;
com.cgarias.rc.AdvancedTrackerII 1.0,http://robocode-archive.strangeautomata.com/robots/com.cgarias.rc.AdvancedTrackerII_1.0.jar&lt;br /&gt;
com.cohesiva.robocode.ManOwaR 1.0,http://robocode-archive.strangeautomata.com/robots/com.cohesiva.robocode.ManOwaR_1.0.jar&lt;br /&gt;
com.spp.robocode.MostlyHarmless 010,https://drive.google.com/u/0/uc?id=1VAJUrVH2LCj94MJyQXBL9w8NtNeSoCtm&amp;amp;export=download&lt;br /&gt;
com.syncleus.robocode.Dreadnaught 0.1,http://robocode-archive.strangeautomata.com/robots/com.syncleus.robocode.Dreadnaught_0.1.jar&lt;br /&gt;
conscience.Electron 1.3g,http://robocode-archive.strangeautomata.com/robots/conscience.Electron_1.3g.jar&lt;br /&gt;
cre.Karolos 0.32,http://robocode-archive.strangeautomata.com/robots/cre.Karolos_0.32.jar&lt;br /&gt;
cs.Grudge 1.0,http://robocode-archive.strangeautomata.com/robots/cs.Grudge_1.0.jar&lt;br /&gt;
cs.sheldor.Talon 1.1,http://robocode-archive.strangeautomata.com/robots/cs.sheldor.Talon_1.1.jar&lt;br /&gt;
cs.Wren 1.0,http://robocode-archive.strangeautomata.com/robots/cs.Wren_1.0.jar&lt;br /&gt;
css.Delitioner 0.11,http://robocode-archive.strangeautomata.com/robots/css.Delitioner_0.11.jar&lt;br /&gt;
cvt.Firsty 1.0,http://robocode-archive.strangeautomata.com/robots/cvt.Firsty_1.0.jar&lt;br /&gt;
cw.megas.Blade 0.8,http://robocode-archive.strangeautomata.com/robots/cw.megas.Blade_0.8.jar&lt;br /&gt;
cx.BlestPain 1.41,http://robocode-archive.strangeautomata.com/robots/cx.BlestPain_1.41.jar&lt;br /&gt;
cx.mini.Nimrod 0.55,http://robocode-archive.strangeautomata.com/robots/cx.mini.Nimrod_0.55.jar&lt;br /&gt;
cx.Princess 1.0,http://robocode-archive.strangeautomata.com/robots/cx.Princess_1.0.jar&lt;br /&gt;
d414.nano.Quantum 1.0.0,https://drive.google.com/uc?export=download&amp;amp;id=1LkS7bsm_aW3NZTZ3WFX6mJfRhkpF-de5&lt;br /&gt;
dans.Cinnamon 1.2,http://robocode-archive.strangeautomata.com/robots/dans.Cinnamon_1.2.jar&lt;br /&gt;
darkcanuck.B26354 1.06,http://robocode-archive.strangeautomata.com/robots/darkcanuck.B26354_1.06.jar&lt;br /&gt;
darkcanuck.Leon 1.01,http://robocode-archive.strangeautomata.com/robots/darkcanuck.Leon_1.01.jar&lt;br /&gt;
darwinsnightmare.DNGEN474UI85390C20S0R528 1.0,http://robocode-archive.strangeautomata.com/robots/darwinsnightmare.DNGEN474UI85390C20S0R528_1.0.jar&lt;br /&gt;
davidalves.net.DuelistMicroMelee 1.4,http://robocode-archive.strangeautomata.com/robots/davidalves.net.DuelistMicroMelee_1.4.jar&lt;br /&gt;
davidalves.net.DuelistMiniMelee 1.2,http://robocode-archive.strangeautomata.com/robots/davidalves.net.DuelistMiniMelee_1.2.jar&lt;br /&gt;
davidalves.net.DuelistNanoMelee 1.01,http://robocode-archive.strangeautomata.com/robots/davidalves.net.DuelistNanoMelee_1.01.jar&lt;br /&gt;
davidalves.Phoenix 0.54,https://github.com/aleksey-zhidkov/rc-repo-mirror/raw/master/davidalves.Phoenix_0.54.jar&lt;br /&gt;
DBall.Anarchy 0.1,http://robocode-archive.strangeautomata.com/robots/DBall.Anarchy_0.1.jar&lt;br /&gt;
DBall.NUKE 0.1,http://robocode-archive.strangeautomata.com/robots/DBall.NUKE_0.1.jar&lt;br /&gt;
dcs.Eater_of_Worlds 1.1.3-A,http://robocode-archive.strangeautomata.com/robots/dcs.Eater_of_Worlds_1.1.3-A.jar&lt;br /&gt;
deewiant.Anomaly 0.2,http://robocode-archive.strangeautomata.com/robots/deewiant.Anomaly_0.2.jar&lt;br /&gt;
de.simpleworks.robocode.bots.swiBot 1.0,http://robocode-archive.strangeautomata.com/robots/de.simpleworks.robocode.bots.swiBot_1.0.jar&lt;br /&gt;
de.simpleworks.robocode.bots.swiBot 1.1,http://robocode-archive.strangeautomata.com/robots/de.simpleworks.robocode.bots.swiBot_1.1.jar&lt;br /&gt;
dft.Calliope 5.6,http://robocode-archive.strangeautomata.com/robots/dft.Calliope_5.6.jar&lt;br /&gt;
disan.Chair 2.2.0,http://robocode-archive.strangeautomata.com/robots/disan.Chair_2.2.0.jar&lt;br /&gt;
divineomega.DivineBot 1.9.4.5,https://dl.dropboxusercontent.com/s/sk33qkpx7cfcmv6/divineomega.DivineBot_1.9.4.5.jar?dl=1&amp;amp;token_hash=AAGI4C3Fm8km-0aLNU3pUVE1JEZqx8UDV6qk5s8PoRgjhg&lt;br /&gt;
divineomega.TrialBot 0.003,https://dl.dropboxusercontent.com/s/an44muntp8f0p6h/divineomega.TrialBot_0.003.jar?token_hash=AAG5XTuv2fkEkTYhNIEJ0zre-SpWgK-jvKNqQ120pFeYSA&amp;amp;dl=1&lt;br /&gt;
djc.DynaBot 0.1.1,http://robocode-archive.strangeautomata.com/robots/djc.DynaBot_0.1.1.jar&lt;br /&gt;
djdjdj.NanoSkunk10 1.0,http://robocode-archive.strangeautomata.com/robots/djdjdj.NanoSkunk10_1.0.jar&lt;br /&gt;
dl.BetterWalls 1.0,http://robocode-archive.strangeautomata.com/robots/dl.BetterWalls_1.0.jar&lt;br /&gt;
dmh.robocode.robot.BlackDeath 9.2,https://www.dropbox.com/s/tads4vk7jrgmv6u/dmh.robocode.robot.BlackDeath_9.2.jar?dl=1&lt;br /&gt;
dmh.robocode.robot.RedDwarf 0.4,https://www.dropbox.com/s/n0k5n5iyr66ssut/dmh.robocode.robot.RedDwarf_0.4.jar?dl=1&lt;br /&gt;
donjezza.Jezza 1.0,http://robocode-archive.strangeautomata.com/robots/donjezza.Jezza_1.0.jar&lt;br /&gt;
donjezza.Muncho 1.0,http://robocode-archive.strangeautomata.com/robots/donjezza.Muncho_1.0.jar&lt;br /&gt;
drd.Dreadknoght 0.9,http://robocode-archive.strangeautomata.com/robots/drd.Dreadknoght_0.9.jar&lt;br /&gt;
ds.Oo 2.2,http://robocode-archive.strangeautomata.com/robots/ds.Oo_2.2.jar&lt;br /&gt;
dsw.StaticD 1.0,http://robocode-archive.strangeautomata.com/robots/dsw.StaticD_1.0.jar&lt;br /&gt;
DTF.Kludgy 1.2b,http://robocode-archive.strangeautomata.com/robots/DTF.Kludgy_1.2b.jar&lt;br /&gt;
dummy.micro.Sparrow 2.5,http://robocode-archive.strangeautomata.com/robots/dummy.micro.Sparrow_2.5.jar&lt;br /&gt;
dummy.mini.Scimitar 1.01,http://robocode-archive.strangeautomata.com/robots/dummy.mini.Scimitar_1.01.jar&lt;br /&gt;
EBBU.Sim2 1.02,http://robocode-archive.strangeautomata.com/robots/EBBU.Sim2_1.02.jar&lt;br /&gt;
edu.otg.spr.TheTeacher 1.2,http://robocode-archive.strangeautomata.com/robots/edu.otg.spr.TheTeacher_1.2.jar&lt;br /&gt;
eem.EvBot v4.6.16,http://robocode-archive.strangeautomata.com/robots/eem.EvBot_v4.6.16.jar&lt;br /&gt;
eem.EvBotNG v12.8,http://robocode-archive.strangeautomata.com/robots/eem.EvBotNG_v12.8.jar&lt;br /&gt;
eem.IWillFireNoBullet v2.8,http://robocode-archive.strangeautomata.com/robots/eem.IWillFireNoBullet_v2.8.jar&lt;br /&gt;
EH.Eagle 1.0.6,http://robocode-archive.strangeautomata.com/robots/EH.Eagle_1.0.6.jar&lt;br /&gt;
ejb.Polaris 1.0.1,http://robocode-archive.strangeautomata.com/robots/ejb.Polaris_1.0.1.jar&lt;br /&gt;
el.JumpShoot 0.2,http://robocode-archive.strangeautomata.com/robots/el.JumpShoot_0.2.jar&lt;br /&gt;
eld.Hmm 1.0,http://robocode-archive.strangeautomata.com/robots/eld.Hmm_1.0.jar&lt;br /&gt;
emp.Yngwie 1.11,http://robocode-archive.strangeautomata.com/robots/emp.Yngwie_1.11.jar&lt;br /&gt;
erdnis.Rover 0.3,http://robocode-archive.strangeautomata.com/robots/erdnis.Rover_0.3.jar&lt;br /&gt;
et.Predator 1.8,http://robocode-archive.strangeautomata.com/robots/et.Predator_1.8.jar&lt;br /&gt;
evd.X1 0.01,http://robocode-archive.strangeautomata.com/robots/evd.X1_0.01.jar&lt;br /&gt;
exauge.GateKeeper 1.1.121g,http://robocode-archive.strangeautomata.com/robots/exauge.GateKeeper_1.1.121g.jar&lt;br /&gt;
fire219.CatBot 1.0,https://dl.dropbox.com/s/bhboah2ps3r9xuj/fire219.CatBot_1.0.jar?dl=0&lt;br /&gt;
florent.XSeries.X2 0.12,http://wesley3.free.fr/florent.XSeries.X2_0.12.jar&lt;br /&gt;
fm.claire 1.7,http://robocode-archive.strangeautomata.com/robots/fm.claire_1.7.jar&lt;br /&gt;
fm.mammillarias 1.3,http://robocode-archive.strangeautomata.com/robots/fm.mammillarias_1.3.jar&lt;br /&gt;
fnc.bandit.Bandit 5.2.0,http://robocode-archive.strangeautomata.com/robots/fnc.bandit.Bandit_5.2.0.jar&lt;br /&gt;
fowl3628800.LightningBolt 2.6.0,http://robocode-archive.strangeautomata.com/robots/fowl3628800.LightningBolt_2.6.0.jar&lt;br /&gt;
franzor.Lizt 1.3.1,http://robocode-archive.strangeautomata.com/robots/franzor.Lizt_1.3.1.jar&lt;br /&gt;
fullsail.LaxativeTeaTwo 1.0,http://robocode-archive.strangeautomata.com/robots/fullsail.LaxativeTeaTwo_1.0.jar&lt;br /&gt;
fullsail.TimbotNoPrediction 1.0,http://robocode-archive.strangeautomata.com/robots/fullsail.TimbotNoPrediction_1.0.jar&lt;br /&gt;
fullsail.SweetTea 1.1,http://robocode-archive.strangeautomata.com/robots/fullsail.SweetTea_1.1.jar&lt;br /&gt;
fwb.Nine 1.0.1,http://robocode-archive.strangeautomata.com/robots/fwb.Nine_1.0.1.jar&lt;br /&gt;
GarmBox.Anger 1.0,https://drive.google.com/uc?export=download&amp;amp;id=12mUMd9tKHdCAV_JYVSuyJfkwVl6HZ42y&lt;br /&gt;
GarmBox.Oranges 1.0,https://drive.google.com/uc?export=download&amp;amp;id=1b6sXfphAg_ARqbZ1-Kg2pzILY2jObElv&lt;br /&gt;
Gecko.ultimateGeckoBot 1.0,http://robocode-archive.strangeautomata.com/robots/Gecko.ultimateGeckoBot_1.0.jar&lt;br /&gt;
germ.TheMind .2,http://robocode-archive.strangeautomata.com/robots/germ.TheMind_.2.jar&lt;br /&gt;
gg.Squaraus 0.6,http://robocode-archive.strangeautomata.com/robots/gg.Squaraus_0.6.jar&lt;br /&gt;
gg.Wolverine 2.0,http://robocode-archive.strangeautomata.com/robots/gg.Wolverine_2.0.jar&lt;br /&gt;
gh.Griezel 0.5.2,http://robocode-archive.strangeautomata.com/robots/gh.Griezel_0.5.2.jar&lt;br /&gt;
gh.micro.Gruweltje 0.7,http://robocode-archive.strangeautomata.com/robots/gh.micro.Gruweltje_0.7.jar&lt;br /&gt;
gh.mini.Griezel 0.2,http://robocode-archive.strangeautomata.com/robots/gh.mini.Griezel_0.2.jar&lt;br /&gt;
gh.mini.GrubbmOne 1.0,http://robocode-archive.strangeautomata.com/robots/gh.mini.GrubbmOne_1.0.jar&lt;br /&gt;
gh.mini.Gruwel 0.9,http://robocode-archive.strangeautomata.com/robots/gh.mini.Gruwel_0.9.jar&lt;br /&gt;
gh.nano.Grofvuil 0.2,http://robocode-archive.strangeautomata.com/robots/gh.nano.Grofvuil_0.2.jar&lt;br /&gt;
ghent.ArthurPanzergon 1.0.0,http://franck.jousseaume.free.fr/robocode/ArthurPanzergon_1.0.0.jar&lt;br /&gt;
gimp.GimpBot 0.1,http://robocode-archive.strangeautomata.com/robots/gimp.GimpBot_0.1.jar&lt;br /&gt;
gjr.Cephalosporin 0.1,http://robocode-archive.strangeautomata.com/robots/gjr.Cephalosporin_0.1.jar&lt;br /&gt;
goblin.Bender 2.4,http://robocode-archive.strangeautomata.com/robots/goblin.Bender_2.4.jar&lt;br /&gt;
gre.svman4.Leonidas 1.3.2,https://drive.google.com/uc?export=download&amp;amp;id=1ZeSWWgjvqsnq-44JyQR776ebBuOnTTd3&lt;br /&gt;
gre.svman4.Morfeas 1.4.1,https://drive.google.com/uc?export=download&amp;amp;id=1D4P_zT0zqxasqpCNoFB34KikbJKVXTn0&lt;br /&gt;
Grystrion.RandomTrackerNOREV 1.0,https://www.dropbox.com/s/9ym5golnwurhfxw/Grystrion.RandomTrackerNOREV_1.0.jar?dl=1&lt;br /&gt;
Grystrion.TrackerWO 1.0,https://www.dropbox.com/s/f1j88yf69zn37jp/Grystrion.TrackerWO_1.0.jar?dl=1&lt;br /&gt;
hvilela.HVilela 0.9,http://robocode-archive.strangeautomata.com/robots/hvilela.HVilela_0.9.jar&lt;br /&gt;
ICS4U1.Patrick_White_Schrodinger 1.1,http://robocode-archive.strangeautomata.com/robots/ICS4U1.Patrick_White_Schrodinger_1.1.jar&lt;br /&gt;
inonit.robocode.javascript.MyFirstRobot 1.1,https://github.com/davidpcaldwell/roborumble-participants/blob/master/inonit.robocode.javascript.MyFirstRobot_1.1.jar?raw=true&lt;br /&gt;
intruder.PrairieWolf 2.61,http://robocode-archive.strangeautomata.com/robots/intruder.PrairieWolf_2.61.jar&lt;br /&gt;
jab.DiamondStealer 5,http://robocode-archive.strangeautomata.com/robots/jab.DiamondStealers_5.jar&lt;br /&gt;
jangs.ns51 1.0,http://robocode-archive.strangeautomata.com/robots/jangs.ns51_1.0.jar&lt;br /&gt;
jaybot.adv.bots.JayBot 2.0,http://robocode-archive.strangeautomata.com/robots/jaybot.adv.bots.JayBot_2.0.jar&lt;br /&gt;
jaybot.bots.Oddball 4.0,http://robocode-archive.strangeautomata.com/robots/jaybot.bots.Oddball_4.0.jar&lt;br /&gt;
jcs.Seth 1.8,http://robocode-archive.strangeautomata.com/robots/jcs.Seth_1.8.jar&lt;br /&gt;
jdw.Hurricane 1.4,http://robocode-archive.strangeautomata.com/robots/jdw.Hurricane_1.4.jar&lt;br /&gt;
jekl.StoneGhost 0.7,http://robocode-archive.strangeautomata.com/robots/jekl.StoneGhost_0.7.jar&lt;br /&gt;
jeremyreeder.collective.Prophet 5,http://robocode-archive.strangeautomata.com/robots/jeremyreeder.collective.Prophet_5.jar&lt;br /&gt;
jeremyreeder.Vincent 2011.12.09,http://robocode-archive.strangeautomata.com/robots/jeremyreeder.Vincent_2011.12.09.jar&lt;br /&gt;
jje.BagPuss 1.2,http://robocode-archive.strangeautomata.com/robots/jje.BagPuss_1.2.jar&lt;br /&gt;
jk.melee.Neuromancer 7.12,https://www.dropbox.com/s/ctjzl08u2f3x3r0/jk.melee.Neuromancer_7.12.jar?dl=1&lt;br /&gt;
jlm.javaDisturbance 0.59,http://robocode-archive.strangeautomata.com/robots/jlm.javaDisturbance_0.59.jar&lt;br /&gt;
joe.ADinosaur 1.0,http://robocode-archive.strangeautomata.com/robots/joe.ADinosaur_1.0.jar&lt;br /&gt;
jok.PheonixM 0.1.2,http://robocode-archive.strangeautomata.com/robots/jok.PheonixM_0.1.2.jar&lt;br /&gt;
josago.Jorgito 0.16,http://robocode-archive.strangeautomata.com/robots/josago.Jorgito_0.16.jar&lt;br /&gt;
jp.Perpy 16.0,http://robocode-archive.strangeautomata.com/robots/jp.Perpy_16.0.jar&lt;br /&gt;
jrm.Test0 1.0,http://robocode-archive.strangeautomata.com/robots/jrm.Test0_1.0.jar&lt;br /&gt;
js.PinBall 1.6,http://robocode-archive.strangeautomata.com/robots/js.PinBall_1.6.jar&lt;br /&gt;
jsal.Jsalbot 1.0,http://robocode-archive.strangeautomata.com/robots/jsal.Jsalbot_1.0.jar&lt;br /&gt;
justin.Mallais 14.0,http://robocode-archive.strangeautomata.com/robots/justin.Mallais_14.0.jar&lt;br /&gt;
justin.DemonicRage 3.4,http://robocode-archive.strangeautomata.com/robots/justin.DemonicRage_3.4.jar&lt;br /&gt;
jwirde.Gort 2.0,http://robocode-archive.strangeautomata.com/robots/jwirde.Gort_2.0.jar&lt;br /&gt;
jwst.DAD.DarkAndDarker 1.1,http://robocode-archive.strangeautomata.com/robots/jwst.DAD.DarkAndDarker_1.1.jar&lt;br /&gt;
kano.gamma.KanoGamma 1.8,http://robocode-archive.strangeautomata.com/robots/kano.gamma.KanoGamma_1.8.jar&lt;br /&gt;
kawigi.micro.Shiz 1.1,http://robocode-archive.strangeautomata.com/robots/kawigi.micro.Shiz_1.1.jar&lt;br /&gt;
kawigi.mini.Coriantumr 1.1,http://robocode-archive.strangeautomata.com/robots/kawigi.mini.Coriantumr_1.1.jar&lt;br /&gt;
kawigi.mini.Fhqwhgads 1.1,http://robocode-archive.strangeautomata.com/robots/kawigi.mini.Fhqwhgads_1.1.jar&lt;br /&gt;
kawigi.nano.Lib 1.0,http://robocode-archive.strangeautomata.com/robots/kawigi.nano.Lib_1.0.jar&lt;br /&gt;
kawigi.robot.Girl 1.2,http://robocode-archive.strangeautomata.com/robots/kawigi.robot.Girl_1.2.jar&lt;br /&gt;
kawigi.sbf.FloodHT 0.9.2,http://robocode-archive.strangeautomata.com/robots/kawigi.sbf.FloodHT_0.9.2.jar&lt;br /&gt;
kawigi.sbf.FloodSonnet 0.9,http://robocode-archive.strangeautomata.com/robots/kawigi.sbf.FloodSonnet_0.9.jar&lt;br /&gt;
kawigi.spare.SpareParts 0.7.6nosnd,http://robocode-archive.strangeautomata.com/robots/kawigi.spare.SpareParts_0.7.6nosnd.jar&lt;br /&gt;
kc.micro.Figment 1.0,https://drive.google.com/uc?export=download&amp;amp;id=149sdMTNnpP57iGcIZ995AeZnbJHX5EL-&lt;br /&gt;
kc.mini.Mirage 0.2,https://drive.google.com/uc?export=download&amp;amp;id=1d2pv16MB2BXdAODf2mTGpS-yRIYOJJcT&lt;br /&gt;
kdf.KoulDestroyer 1.0,https://icarus.cs.weber.edu/~kfeuz/downloads/kdf.KoulDestroyer_1.0.jar&lt;br /&gt;
kid.Gladiator .7.2,http://robocode-archive.strangeautomata.com/robots/kid.Gladiator_.7.2.jar&lt;br /&gt;
kid.test.NightFox .2,http://robocode-archive.strangeautomata.com/robots/kid.test.NightFox_.2.jar&lt;br /&gt;
KiraNL.Chupacabra 0.4,http://robocode-archive.strangeautomata.com/robots/KiraNL.Chupacabra_0.4.jar&lt;br /&gt;
kinsen.melee.Angsaichmophobia 1.8c,http://robocode-archive.strangeautomata.com/robots/kinsen.melee.Angsaichmophobia_1.8c.jar&lt;br /&gt;
Krabb.akim2.Akim2 1.1b,http://robocode-archive.strangeautomata.com/robots/Krabb.akim2.Akim2_1.1b.jar&lt;br /&gt;
Krabb.sliNk.Garm 0.9u,http://robocode-archive.strangeautomata.com/robots/Krabb.sliNk.Garm_0.9u.jar&lt;br /&gt;
krillr.mini.JointStrike 2.0.0,http://robocode-archive.strangeautomata.com/robots/krillr.mini.JointStrike_2.0.0.jar&lt;br /&gt;
kurios.DOSexe .9a,http://robocode-archive.strangeautomata.com/robots/kurios.DOSexe_.9a.jar&lt;br /&gt;
kurios.DOSexe .9b,http://robocode-archive.strangeautomata.com/robots/kurios.DOSexe_.9b.jar&lt;br /&gt;
kvk.HebusLeTroll 0.35,http://robocode-archive.strangeautomata.com/robots/kvk.HebusLeTroll_0.35.jar&lt;br /&gt;
labg.Cataclysm 2.05,http://robocode-archive.strangeautomata.com/robots/labg.Cataclysm_2.05.jar&lt;br /&gt;
lambdaxy.TBot 0.1,http://robocode-archive.strangeautomata.com/robots/lambdaxy.TBot_0.1.jar&lt;br /&gt;
lessonz.robocode.Oz 0.5.0,http://robocode-archive.strangeautomata.com/robots/lessonz.robocode.Oz_0.5.0.jar&lt;br /&gt;
lmk.ACPFinal 0.1,http://robocode-archive.strangeautomata.com/robots/lmk.ACPFinal_0.1.jar&lt;br /&gt;
Lo_Ian.Gandalf_V4 4.0,http://robocode-archive.strangeautomata.com/robots/Lo_Ian.Gandalf_V4_4.0.jar&lt;br /&gt;
logiblocs.SittingDroid 1.0,http://robocode-archive.strangeautomata.com/robots/logiblocs.SittingDroid_1.0.jar&lt;br /&gt;
lorneswork.Predator 1.0,http://robocode-archive.strangeautomata.com/robots/lorneswork.Predator_1.0.jar&lt;br /&gt;
lrem.Spectre 0.4.4,http://robocode-archive.strangeautomata.com/robots/lrem.Spectre_0.4.4.jar&lt;br /&gt;
lrem.micro.MoggFanatic 0.2,http://robocode-archive.strangeautomata.com/robots/lrem.micro.MoggFanatic_0.2.jar&lt;br /&gt;
lrem.micro.SpikeSoldier 0.4,http://robocode-archive.strangeautomata.com/robots/lrem.micro.SpikeSoldier_0.4.jar&lt;br /&gt;
lunchie.Lunchbox 0.93,http://robocode-archive.strangeautomata.com/robots/lunchie.Lunchbox_0.93.jar&lt;br /&gt;
lxx.ConceptA 0.8,https://github.com/aleksey-zhidkov/ConceptA/raw/master/builds/lxx.ConceptA_0.8.jar&lt;br /&gt;
m3thos.Eva00 1.1,http://robocode-archive.strangeautomata.com/robots/m3thos.Eva00_1.1.jar&lt;br /&gt;
m3thos.Eva02 0.7.1,http://robocode-archive.strangeautomata.com/robots/m3thos.Eva02_0.7.1.jar&lt;br /&gt;
m3thos.mini.Eva01 0.5.5,http://robocode-archive.strangeautomata.com/robots/m3thos.mini.Eva01_0.5.5.jar&lt;br /&gt;
maribo.FollowFire 1,http://robocode-archive.strangeautomata.com/robots/maribo.FollowFire_1.jar&lt;br /&gt;
maribo.IotaCT 1.1,http://robocode-archive.strangeautomata.com/robots/maribo.IotaCT_1.1.jar&lt;br /&gt;
maribo.melee.BMV 0.1,http://robocode-archive.strangeautomata.com/robots/maribo.melee.BMV_0.1.jar&lt;br /&gt;
maribo.mini.MiniQuester 0.1,https://dl.dropboxusercontent.com/s/67bfz8fhhrnc34j/maribo.mini.MiniQuester_0.1.jar&lt;br /&gt;
maribo.Quester 0.3,https://dl.dropboxusercontent.com/s/3jtoh2u1qdulof4/maribo.Quester_0.3.jar&lt;br /&gt;
matt.advanced.Katana 1.0,http://robocode-archive.strangeautomata.com/robots/matt.advanced.Katana_1.0.jar&lt;br /&gt;
matt.UnderDark3 2.4.34,http://robocode-archive.strangeautomata.com/robots/matt.UnderDark3_2.4.34.jar&lt;br /&gt;
mb.Beast 0.1,http://robocode-archive.strangeautomata.com/robots/mb.Beast_0.1.jar&lt;br /&gt;
mbh.Mbh 0.1,http://robocode-archive.strangeautomata.com/robots/mbh.Mbh_0.1.jar&lt;br /&gt;
mbro.Detektor3 0.1.1,http://robocode-archive.strangeautomata.com/robots/mbro.Detektor3_0.1.1.jar&lt;br /&gt;
mc2.enemy.Original 0.9,http://robocode-archive.strangeautomata.com/robots/mc2.enemy.Original_0.9.jar&lt;br /&gt;
mk.Alpha 0.2.1,http://robocode-archive.strangeautomata.com/robots/mk.Alpha_0.2.1.jar&lt;br /&gt;
mld.DustBunny 3.8,http://robocode-archive.strangeautomata.com/robots/mld.DustBunny_3.8.jar&lt;br /&gt;
mld.Infinity 2.2,http://robocode-archive.strangeautomata.com/robots/mld.Infinity_2.2.jar&lt;br /&gt;
mld.Wisdom 1.0,http://robocode-archive.strangeautomata.com/robots/mld.Wisdom_1.0.jar&lt;br /&gt;
mme.NikeEnhanced 2.0,http://robocode-archive.strangeautomata.com/robots/mme.NikeEnhanced_2.0.jar&lt;br /&gt;
mn.nano.perceptual.Impact 1.3.0,https://www.dropbox.com/s/njuuaycr3qswlgu/mn.nano.perceptual.Impact_1.3.0.jar?dl=1&lt;br /&gt;
mn.Combat 3.25.0,https://www.dropbox.com/s/5iufszjp28qfptw/mn.Combat_3.25.0.jar?dl=1&lt;br /&gt;
morbid.MorbidPriest 1.0,http://robocode-archive.strangeautomata.com/robots/morbid.MorbidPriest_1.0.jar&lt;br /&gt;
ms.Ares 0.19,http://robocode-archive.strangeautomata.com/robots/ms.Ares_0.19.jar&lt;br /&gt;
myl.micro.Troodon 1.10,http://robocode-archive.strangeautomata.com/robots/myl.micro.Troodon_1.10.jar&lt;br /&gt;
myl.nano.Graviton 1.10,http://robocode-archive.strangeautomata.com/robots/myl.nano.Graviton_1.10.jar&lt;br /&gt;
myl.nano.KomoriNinja 1.1,http://robocode-archive.strangeautomata.com/robots/myl.nano.KomoriNinja_1.1.jar&lt;br /&gt;
mym.EdgeStalker 1.0,http://robocode-archive.strangeautomata.com/robots/mym.EdgeStalker_1.0.jar&lt;br /&gt;
mz.AntiGrav 1.0,http://robocode-archive.strangeautomata.com/robots/mz.AntiGrav_1.0.jar&lt;br /&gt;
mz.MicroGodMelee 1,http://robocode-archive.strangeautomata.com/robots/mz.MicroGodMelee_1.jar&lt;br /&gt;
mz.MicroSheep 1.0,http://robocode-archive.strangeautomata.com/robots/mz.MicroSheep_1.0.jar&lt;br /&gt;
mz.Cork 0.1,http://robocode-archive.strangeautomata.com/robots/mz.Cork_0.1.jar&lt;br /&gt;
mz.NanoGod 2.02,http://robocode-archive.strangeautomata.com/robots/mz.NanoGod_2.02.jar&lt;br /&gt;
nat.PallasHawk 1.0,http://robocode-archive.strangeautomata.com/robots/nat.PallasHawk_1.0.jar&lt;br /&gt;
ne.Chimera 1.2,http://robocode-archive.strangeautomata.com/robots/ne.Chimera_1.2.jar&lt;br /&gt;
nic.Nicator 2.4,http://robocode-archive.strangeautomata.com/robots/nic.Nicator_2.4.jar&lt;br /&gt;
Noran.BitchingElk 0.054,http://robocode-archive.strangeautomata.com/robots/Noran.BitchingElk_0.054.jar&lt;br /&gt;
ntc.ControlledChaos 1.1.4,http://robocode-archive.strangeautomata.com/robots/ntc.ControlledChaos_1.1.4.jar&lt;br /&gt;
ntc.Opposite 1.5,http://robocode-archive.strangeautomata.com/robots/ntc.Opposite_1.5.jar&lt;br /&gt;
nz.jdc.nano.GridFu 1.0,http://robocode-archive.strangeautomata.com/robots/nz.jdc.nano.GridFu_1.0.jar&lt;br /&gt;
oa.weak.BotherBot 0.1,http://robocode-archive.strangeautomata.com/robots/oa.weak.BotherBot_0.1.jar&lt;br /&gt;
oa.weak.FlyMk1 0.1,http://robocode-archive.strangeautomata.com/robots/oa.weak.FlyMk1_0.1.jar&lt;br /&gt;
oog.melee.Capulet 1.2,http://robocode-archive.strangeautomata.com/robots/oog.melee.Capulet_1.2.jar&lt;br /&gt;
oog.melee.CapuletDroid 1.1,http://robocode-archive.strangeautomata.com/robots/oog.melee.CapuletDroid_1.1.jar&lt;br /&gt;
oog.melee.Corsair 1.0,http://robocode-archive.strangeautomata.com/robots/oog.melee.Corsair_1.0.jar&lt;br /&gt;
oog.melee.Mercutio 1.0,http://robocode-archive.strangeautomata.com/robots/oog.melee.Mercutio_1.0.jar&lt;br /&gt;
origin.SleepSiphon 1.7b,https://github.com/John-Paul-R/SleepSiphon/releases/download/1.7b/origin.SleepSiphon_1.7b.jar&lt;br /&gt;
pa.Improved 1.0,http://robocode-archive.strangeautomata.com/robots/pa.Improved_1.0.jar&lt;br /&gt;
pac.ABC 2.1,http://robocode-archive.strangeautomata.com/robots/pac.ABC_2.1.jar&lt;br /&gt;
panzer.Panzer 0.2,http://robocode-archive.strangeautomata.com/robots/panzer.Panzer_0.2.jar&lt;br /&gt;
patson.PatsonTestBot 1.0,http://robocode-archive.strangeautomata.com/robots/patson.PatsonTestBot_1.0.jar&lt;br /&gt;
pbg.R2D2 1.0,http://robocode-archive.strangeautomata.com/robots/pbg.R2D2_1.0.jar&lt;br /&gt;
pbg.NinjaX 1.2,https://github.com/realr2d2/Bots/blob/gh-pages/pbg.NinjaX_1.2.jar?raw=true&lt;br /&gt;
TNT.TNT 0.99.1,http://robocode-archive.strangeautomata.com/robots/TNT.TNT_0.99.1.jar&lt;br /&gt;
pe.minimelee.SandboxMiniMelee 1.1,http://robocode-archive.strangeautomata.com/robots/pe.minimelee.SandboxMiniMelee_1.1.jar&lt;br /&gt;
pe.SandboxDT 2.71m,http://robocode-archive.strangeautomata.com/robots/pe.SandboxDT_2.71m.jar&lt;br /&gt;
pe.SandboxLump 1.52,http://robocode-archive.strangeautomata.com/robots/pe.SandboxLump_1.52.jar&lt;br /&gt;
pedersen.Grishnakh 1.0,http://robocode-archive.strangeautomata.com/robots/pedersen.Grishnakh_1.0.jar&lt;br /&gt;
pedersen.Moron 2.0,http://robocode-archive.strangeautomata.com/robots/pedersen.Moron_2.0.jar&lt;br /&gt;
pedersen.Ugluk 1.1.1,http://robocode-archive.strangeautomata.com/robots/pedersen.Ugluk_1.1.1.jar&lt;br /&gt;
pez.mini.ChironexFleckeri 0.5,http://robocode-archive.strangeautomata.com/robots/pez.mini.ChironexFleckeri_0.5.jar&lt;br /&gt;
pfvicm.Sobieski 7.2.3b,http://robocode-archive.strangeautomata.com/robots/pfvicm.Sobieski_7.2.3b.jar&lt;br /&gt;
ph.melee.ArcherME 0.3,http://robocode-archive.strangeautomata.com/robots/ph.melee.ArcherME_0.3.jar&lt;br /&gt;
Polkwane.SmashMelee 1.0,https://dl.dropboxusercontent.com/s/hog8g5km2pu3q1i/Polkwane.SmashMelee_1.0.jar?token_hash=AAEYkudeilgEUEILMqRqcdMrqBYFMaGSzuqXAO6BMVi2gQ&amp;amp;dl=1&lt;br /&gt;
positive.Portia 1.26e,http://robocode-archive.strangeautomata.com/robots/positive.Portia_1.26e.jar&lt;br /&gt;
PSW.Relentless 0.1,http://robocode-archive.strangeautomata.com/robots/PSW.Relentless_0.1.jar&lt;br /&gt;
pulsar.PulsarMax 0.8.9,http://robocode-archive.strangeautomata.com/robots/pulsar.PulsarMax_0.8.9.jar&lt;br /&gt;
qohnil.blot.BlotBot 3.61,http://robocode-archive.strangeautomata.com/robots/qohnil.blot.BlotBot_3.61.jar&lt;br /&gt;
qualidafial.MajorDick 1.0.1,https://www.dropbox.com/sh/n570kf8rsq6fuw2/vVQSIJJnAS/qualidafial.MajorDick_1.0.1.jar?dl=1&lt;br /&gt;
Queens_teamrobot.UltraRazor 1.0,http://robocode-archive.strangeautomata.com/robots/Queens_teamrobot.UltraRazor_1.0.jar&lt;br /&gt;
radnor.DoctorBob 1.42,http://robocode-archive.strangeautomata.com/robots/radnor.DoctorBob_1.42.jar&lt;br /&gt;
rampancy.Durandal 2.1d,http://robocode-archive.strangeautomata.com/robots/rampancy.Durandal_2.1d.jar&lt;br /&gt;
ratosh.Nobo 0.21,http://robocode-archive.strangeautomata.com/robots/ratosh.Nobo_0.21.jar&lt;br /&gt;
ratosh.Wesco 1.4,http://robocode-archive.strangeautomata.com/robots/ratosh.Wesco_1.4.jar&lt;br /&gt;
rdm.Dueler 0.4x,https://drive.google.com/uc?export=download&amp;amp;id=16x234SaadG-76wT0TJhpyDTxdQhO-j3j&lt;br /&gt;
rdt199.Warlord 0.73,http://robocode-archive.strangeautomata.com/robots/rdt199.Warlord_0.73.jar&lt;br /&gt;
repositorio.NanoStep 1.0,http://robocode-archive.strangeautomata.com/robots/repositorio.NanoStep_1.0.jar&lt;br /&gt;
robar.nano.Assertive_Melee 0.2,http://robocode-archive.strangeautomata.com/robots/robar.nano.Assertive_Melee_0.2.jar&lt;br /&gt;
rrh.Iwillfindyou 2.0,https://drive.google.com/uc?export=download&amp;amp;id=1wE-V_PQeMvKLisPmM8s6JEaznXEHYAIt&lt;br /&gt;
rsalesc.roborio.RoborioPorradeiro 1.1b,http://robocode-archive.strangeautomata.com/robots/rsalesc.roborio.RoborioPorradeiro_1.1b.jar&lt;br /&gt;
rsalesc.melee.Medina 0.4.5,http://robocode-archive.strangeautomata.com/robots/rsalesc.melee.Medina_0.4.5.jar&lt;br /&gt;
rsalesc.melee.Monk 0.3.6c,http://robocode-archive.strangeautomata.com/robots/rsalesc.melee.Monk_0.3.6c.jar&lt;br /&gt;
rtk.Tachikoma 1.0,http://robocode-archive.strangeautomata.com/robots/rtk.Tachikoma_1.0.jar&lt;br /&gt;
rz.Aleph 0.34,http://robocode-archive.strangeautomata.com/robots/rz.Aleph_0.34.jar&lt;br /&gt;
rz.GlowBlowMelee 1.4,http://robocode-archive.strangeautomata.com/robots/rz.GlowBlowMelee_1.4.jar&lt;br /&gt;
rz.HawkOnFire 0.1,http://robocode-archive.strangeautomata.com/robots/rz.HawkOnFire_0.1.jar&lt;br /&gt;
sadoner.killer 0.2,http://robocode-archive.strangeautomata.com/robots/sadoner.killer_0.2.jar&lt;br /&gt;
sam.Samspin 1.0,http://robocode-archive.strangeautomata.com/robots/sam.Samspin_1.0.jar&lt;br /&gt;
sample.Corners 1.0,http://robocode-archive.strangeautomata.com/robots/sample.Corners_1.0.jar&lt;br /&gt;
sample.Crazy 1.0,http://robocode-archive.strangeautomata.com/robots/sample.Crazy_1.0.jar&lt;br /&gt;
sample.Fire 1.0,http://robocode-archive.strangeautomata.com/robots/sample.Fire_1.0.jar&lt;br /&gt;
sample.MyFirstJuniorRobot 1.0,http://robocode-archive.strangeautomata.com/robots/sample.MyFirstJuniorRobot_1.0.jar&lt;br /&gt;
sample.MyFirstRobot 1.0,http://robocode-archive.strangeautomata.com/robots/sample.MyFirstRobot_1.0.jar&lt;br /&gt;
sample.RamFire 1.0,http://robocode-archive.strangeautomata.com/robots/sample.RamFire_1.0.jar&lt;br /&gt;
sample.SittingDuck 1.0,http://robocode-archive.strangeautomata.com/robots/sample.SittingDuck_1.0.jar&lt;br /&gt;
sample.SpinBot 1.0,http://robocode-archive.strangeautomata.com/robots/sample.SpinBot_1.0.jar&lt;br /&gt;
sample.Target 1.0,http://robocode-archive.strangeautomata.com/robots/sample.Target_1.0.jar&lt;br /&gt;
sample.Tracker 1.0,http://robocode-archive.strangeautomata.com/robots/sample.Tracker_1.0.jar&lt;br /&gt;
sample.TrackFire 1.0,http://robocode-archive.strangeautomata.com/robots/sample.TrackFire_1.0.jar&lt;br /&gt;
sample.VelociRobot 1.0,http://robocode-archive.strangeautomata.com/robots/sample.VelociRobot_1.0.jar&lt;br /&gt;
sample.Walls 1.0,http://robocode-archive.strangeautomata.com/robots/sample.Walls_1.0.jar&lt;br /&gt;
sanyi.mikrobi.Roberto 1.0,http://robocode-archive.strangeautomata.com/robots/sanyi.mikrobi.Roberto_1.0.jar&lt;br /&gt;
sanja.First 0.1,http://robocode-archive.strangeautomata.com/robots/sanja.First_0.1.jar&lt;br /&gt;
sch.Simone 0.3d,http://robocode-archive.strangeautomata.com/robots/sch.Simone_0.3d.jar&lt;br /&gt;
sgp.JollyNinja 3.53,http://robocode-archive.strangeautomata.com/robots/sgp.JollyNinja_3.53.jar&lt;br /&gt;
SHAM.WOW 1.4,http://robocode-archive.strangeautomata.com/robots/SHAM.WOW_1.4.jar&lt;br /&gt;
sheldor.melee.nano.NaturalScience 1.2.1,https://github.com/sheldor-robocode/jar-files/raw/main/sheldor.melee.nano.NaturalScience_1.2.1.jar&lt;br /&gt;
sheldor.melee.nano.TestMelee 0.1,http://robocode-archive.strangeautomata.com/robots/sheldor.melee.nano.TestMelee_0.1.jar&lt;br /&gt;
sheldor.nano.PointInLineRRAL 1.0.0,http://robocode-archive.strangeautomata.com/robots/sheldor.nano.PointInLineRRAL_1.0.0.jar&lt;br /&gt;
shinh.Entangled 0.3,http://robocode-archive.strangeautomata.com/robots/shinh.Entangled_0.3.jar&lt;br /&gt;
shrub.Silver v048,http://robocode-archive.strangeautomata.com/robots/shrub.Silver_v048.jar&lt;br /&gt;
shrub.Vapour v159,http://robocode-archive.strangeautomata.com/robots/shrub.Vapour_v159.jar&lt;br /&gt;
shu.nitro.LENIN .T34,http://robocode-archive.strangeautomata.com/robots/shu.nitro.LENIN_.T34.jar&lt;br /&gt;
sigterm.Sigterm 1.0,http://robocode-archive.strangeautomata.com/robots/sigterm.Sigterm_1.0.jar&lt;br /&gt;
simonton.micro.Sprout 1.1.3,http://robocode-archive.strangeautomata.com/robots/simonton.micro.Sprout_1.1.3.jar&lt;br /&gt;
simonton.nano.MeleeSeed 1.8,http://robocode-archive.strangeautomata.com/robots/simonton.nano.MeleeSeed_1.8.jar&lt;br /&gt;
simonton.nano.WeekendObsession_Melee 1.0,http://robocode-archive.strangeautomata.com/robots/simonton.nano.WeekendObsession_Melee_1.0.jar&lt;br /&gt;
skm.butterfly 1.0,http://robocode-archive.strangeautomata.com/robots/skm.butterfly_1.0.jar&lt;br /&gt;
skm.Ryubot 1.0,http://robocode-archive.strangeautomata.com/robots/skm.Ryubot_1.0.jar&lt;br /&gt;
skm.PateranBotlock2 1.0,http://robocode-archive.strangeautomata.com/robots/skm.PateranBotlock2_1.0.jar&lt;br /&gt;
spin.Bugstard 0.012b,http://robocode-archive.strangeautomata.com/robots/spin.Bugstard_0.012b.jar?dl=1&lt;br /&gt;
spinnercat.Omen 1.0,http://robocode-archive.strangeautomata.com/robots/spinnercat.Omen_1.0.jar&lt;br /&gt;
spinnercat.micro.Tyger 0.1,http://robocode-archive.strangeautomata.com/robots/spinnercat.micro.Tyger_0.1.jar&lt;br /&gt;
spinnercat.Robovirus 2.718,http://robocode-archive.strangeautomata.com/robots/spinnercat.Robovirus_2.718.jar&lt;br /&gt;
sp.Nanos.Ember 1.1,http://robocode-archive.strangeautomata.com/robots/sp.Nanos.Ember_1.1.jar&lt;br /&gt;
squidM.TentalceMeleeNano 1.1,http://robocode-archive.strangeautomata.com/robots/squidM.TentalceMeleeNano_1.1.jar&lt;br /&gt;
stelo.AreaTargetingBot 1.1,http://robocode-archive.strangeautomata.com/robots/stelo.AreaTargetingBot_1.1.jar&lt;br /&gt;
stelo.IntrinsicVolatility 1.4,http://robocode-archive.strangeautomata.com/robots/stelo.IntrinsicVolatility_1.4.jar&lt;br /&gt;
stelo.Liblix 0.3.1,https://github.com/kimtg/robocode-bots/releases/download/release/stelo.Liblix_0.3.1.jar&lt;br /&gt;
stelo.Lifestealer 1.0,http://robocode-archive.strangeautomata.com/robots/stelo.Lifestealer_1.0.jar&lt;br /&gt;
stelo.Mirror 1.1,http://robocode-archive.strangeautomata.com/robots/stelo.Mirror_1.1.jar&lt;br /&gt;
stelo.MirrorMicro 1.0,http://robocode-archive.strangeautomata.com/robots/stelo.MirrorMicro_1.0.jar&lt;br /&gt;
stelo.MirrorNano 1.3,http://robocode-archive.strangeautomata.com/robots/stelo.MirrorNano_1.3.jar&lt;br /&gt;
stelo.MyAgileRobot 0.2,http://robocode-archive.strangeautomata.com/robots/stelo.MyAgileRobot_0.2.jar&lt;br /&gt;
stelo.PatternRobot 1.0,http://robocode-archive.strangeautomata.com/robots/stelo.PatternRobot_1.0.jar&lt;br /&gt;
stelo.PianistNano 1.2,http://robocode-archive.strangeautomata.com/robots/stelo.PianistNano_1.2.jar&lt;br /&gt;
stelo.RamTrackSurfer 1.2,http://robocode-archive.strangeautomata.com/robots/stelo.RamTrackSurfer_1.2.jar&lt;br /&gt;
stelo.Randomness 1.0,http://robocode-archive.strangeautomata.com/robots/stelo.Randomness_1.0.jar&lt;br /&gt;
stelo.SoJNanoMelee 1.1,http://robocode-archive.strangeautomata.com/robots/stelo.SoJNanoMelee_1.1.jar&lt;br /&gt;
stelo.SoRobotNanoMelee 1.2,http://robocode-archive.strangeautomata.com/robots/stelo.SoRobotNanoMelee_1.2.jar&lt;br /&gt;
stelo.UntouchableNano 1.3,http://robocode-archive.strangeautomata.com/robots/stelo.UntouchableNano_1.3.jar&lt;br /&gt;
stelo.Wang 1.0,http://robocode-archive.strangeautomata.com/robots/stelo.Wang_1.0.jar&lt;br /&gt;
stelo.WangRobot 1.0,http://robocode-archive.strangeautomata.com/robots/stelo.WangRobot_1.0.jar&lt;br /&gt;
step.nanoPri 1.0,http://robocode-archive.strangeautomata.com/robots/step.nanoPri_1.0.jar&lt;br /&gt;
stf.PanzerGeneral 0.1,http://robocode-archive.strangeautomata.com/robots/stf.PanzerGeneral_0.1.jar&lt;br /&gt;
stuff.Vlad 0.1,http://robocode-archive.strangeautomata.com/robots/stuff.Vlad_0.1.jar&lt;br /&gt;
sul.Lunar 1.1,http://robocode-archive.strangeautomata.com/robots/sul.Lunar_1.1.jar&lt;br /&gt;
supersample.SuperBoxBot 1.0,http://robocode-archive.strangeautomata.com/robots/supersample.SuperBoxBot_1.0.jar&lt;br /&gt;
tad.Dalek98 0.98,http://robocode-archive.strangeautomata.com/robots/tad.Dalek98_0.98.jar&lt;br /&gt;
tcf.Reach 3,http://robocode-archive.strangeautomata.com/robots/tcf.Reach_3.jar&lt;br /&gt;
techdude.forest.FlamingForest 1.1,http://robocode-archive.strangeautomata.com/robots/techdude.forest.FlamingForest_1.1.jar&lt;br /&gt;
techdude.kombat.FlamingKombat 1.5,http://robocode-archive.strangeautomata.com/robots/techdude.kombat.FlamingKombat_1.5.jar&lt;br /&gt;
testantiswapgun.AntiSwap 1.0,http://robocode-archive.strangeautomata.com/robots/asd.AntiSwap_1.0.jar&lt;br /&gt;
tex.Longbot 0.4,http://robocode-archive.strangeautomata.com/robots/tex.Longbot_0.4.jar&lt;br /&gt;
throxbot.ThroxBot 0.1,http://robocode-archive.strangeautomata.com/robots/throxbot.ThroxBot_0.1.jar&lt;br /&gt;
timmit.nano.TimDog 0.33,http://robocode-archive.strangeautomata.com/robots/timmit.nano.TimDog_0.33.jar&lt;br /&gt;
tj.zombie1n 1.0.1,http://robocode-archive.strangeautomata.com/robots/tj.zombie1n_1.0.1.jar&lt;br /&gt;
tlp.ThreeLeggedPig 1,http://robocode-archive.strangeautomata.com/robots/tlp.ThreeLeggedPig_1.jar&lt;br /&gt;
tm.Yuugao 1.0,http://robocode-archive.strangeautomata.com/robots/tm.Yuugao_1.0.jar&lt;br /&gt;
tripphippy.Alice 1.1,http://robocode-archive.strangeautomata.com/robots/tripphippy.Alice_1.1.jar&lt;br /&gt;
trm.Wrekt 1.1.6.f,http://robocode-archive.strangeautomata.com/robots/trm.Wrekt_1.1.6.f.jar&lt;br /&gt;
tvv.micro.Antares 1.1.1,http://robocode-archive.strangeautomata.com/robots/tvv.micro.Antares_1.1.1.jar&lt;br /&gt;
tvv.nano.Polaris 1.2,http://robocode-archive.strangeautomata.com/robots/tvv.nano.Polaris_1.2.jar&lt;br /&gt;
tzu.TheArtOfWar 1.2,http://robocode-archive.strangeautomata.com/robots/tzu.TheArtOfWar_1.2.jar&lt;br /&gt;
uji.Antique 1.0,http://robocode-archive.strangeautomata.com/robots/uji.Antique_1.0.jar&lt;br /&gt;
uji.DBH 1.1,http://robocode-archive.strangeautomata.com/robots/uji.DBH_1.1.jar&lt;br /&gt;
uji.YellohFellah 1.0,http://robocode-archive.strangeautomata.com/robots/uji.YellohFellah_1.0.jar&lt;br /&gt;
urdos.URDOS 1.3,http://robocode-archive.strangeautomata.com/robots/urdos.URDOS_1.3.jar&lt;br /&gt;
vjik.UnViolation 1.1,http://robocode-archive.strangeautomata.com/robots/vjik.UnViolation_1.1.jar&lt;br /&gt;
voidious.Diamond 1.8.28,http://robocode-archive.strangeautomata.com/robots/voidious.Diamond_1.8.28.jar&lt;br /&gt;
voidious.micro.BlitzBat 1.05,http://robocode-archive.strangeautomata.com/robots/voidious.micro.BlitzBat_1.05.jar&lt;br /&gt;
voidious.mini.BrokenSword 2.0.3,http://robocode-archive.strangeautomata.com/robots/voidious.mini.BrokenSword_2.0.3.jar&lt;br /&gt;
vStar.RAFzilla 2.15,https://drive.google.com/uc?export=download&amp;amp;id=1mSf7wnoO5VnMdHDCJcC-tT9X7NzIcLJF&lt;br /&gt;
vuen.Cake 2.51,http://robocode-archive.strangeautomata.com/robots/vuen.Cake_2.51.jar&lt;br /&gt;
WarfaJibril.Jibril_Warfa_Andromeda 1.11,http://robocode-archive.strangeautomata.com/robots/WarfaJibril.Jibril_Warfa_Andromeda_1.11.jar&lt;br /&gt;
wcsv.melee.EngineerMelee 0.1,http://robocode-archive.strangeautomata.com/robots/wcsv.melee.EngineerMelee_0.1.jar&lt;br /&gt;
wee.Gem 1.8.4,http://robocode-archive.strangeautomata.com/robots/wee.Gem_1.8.4.jar&lt;br /&gt;
whitesquare.robots.SkynetAdvanced 1.1,https://dl.dropboxusercontent.com/s/6epm51goxqp7p0h/whitesquare.robots.SkynetAdvanced_1.1.jar?dl=1&lt;br /&gt;
winamp32.micro.MicroMacro 1.0,http://robocode-archive.strangeautomata.com/robots/winamp32.micro.MicroMacro_1.0.jar&lt;br /&gt;
wit.Chuliath 1.0,http://robocode-archive.strangeautomata.com/robots/wit.Chuliath_1.0.jar&lt;br /&gt;
wit.Deep7 2.0,http://robocode-archive.strangeautomata.com/robots/wit.Deep7_2.0.jar&lt;br /&gt;
wompi.Numbat 2.1,http://www.casepool.de/robocode/wompi.Numbat_2.1.jar&lt;br /&gt;
wompi.Quokka 1.6,http://www.casepool.de/robocode/wompi.Quokka_1.6.jar&lt;br /&gt;
wompi.Wallaby 5.1,http://www.casepool.de/robocode/wompi.Wallaby_5.1.jar&lt;br /&gt;
yagami.Tidus 0.11,http://robocode-archive.strangeautomata.com/robots/yagami.Tidus_0.11.jar&lt;br /&gt;
yk.JahMicro 1.0,http://robocode-archive.strangeautomata.com/robots/yk.JahMicro_1.0.jar&lt;br /&gt;
yk.JahRoslav 1.1,http://robocode-archive.strangeautomata.com/robots/yk.JahRoslav_1.1.jar&lt;br /&gt;
zyx.mega.YersiniaPestis 3.1,http://robocode-archive.strangeautomata.com/robots/zyx.mega.YersiniaPestis_3.1.jar&lt;br /&gt;
zyx.micro.Ant 1.1,http://robocode-archive.strangeautomata.com/robots/zyx.micro.Ant_1.1.jar&lt;br /&gt;
zyx.nano.Ant 1.1,http://robocode-archive.strangeautomata.com/robots/zyx.nano.Ant_1.1.jar&lt;br /&gt;
zyx.nano.BacillusComma 1.0,http://robocode-archive.strangeautomata.com/robots/zyx.nano.BacillusComma_1.0.jar&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
'''''No chatting on this page. Use the /ParticipantsChat page for that.'''''&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
'''''Removed because the server says: Ignoring. Also client cannot download these'''''&amp;lt;br&amp;gt;&lt;br /&gt;
''traker.Eraser 1,http://lablanchisserie.fr/Parissou/traker.Eraser.jar&lt;br /&gt;
''xyzdev.SimpleJack 1.0,https://xyzdev.webfactional.com/archive/xyzdev.SimpleJack_1.0.jar&lt;br /&gt;
&lt;br /&gt;
'''''Removed because the jarcontent/filename is not correct'''''&amp;lt;br&amp;gt;&lt;br /&gt;
''ary.HelpMeelee 1.0,3624''&amp;lt;br&amp;gt;&lt;br /&gt;
''dmsr.MiniR101 0.6''&amp;lt;br&amp;gt;&lt;br /&gt;
''enriquevilela.TieFighter 0.1,3224''&amp;lt;br&amp;gt;&lt;br /&gt;
''cw.melee.Burner 2.0&amp;lt;br&amp;gt;&lt;br /&gt;
''ROB.TraumaLlama 1.0,https://www.dropbox.com/s/b14r13f4xwc5kj5/ROB.TraumaLlama_1.0.jar?dl=0''&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''Removed because he crashes the vm frequently (mac/linux) 1.6'''''&amp;lt;br&amp;gt;&lt;br /&gt;
''dam.MogBot 2.9,http://www.robocoderepository.com/BotFiles/555/dam.MogBot_2.9.jar&lt;br /&gt;
&lt;br /&gt;
'''''Removed due to WontFix issues in Robocode 1.7+:'''''&amp;lt;br&amp;gt;&lt;br /&gt;
''* Hviela: ([[http://sourceforge.net/tracker/?func=detail&amp;amp;aid=2953268&amp;amp;group_id=37202&amp;amp;atid=419486 SF #2953268]])&amp;lt;br&amp;gt;&lt;br /&gt;
'': hvilela.HVilela 0.9.3,http://henrique.vilela.googlepages.com/hvilela.HVilela_0.9.3.jar''&lt;br /&gt;
&lt;br /&gt;
'''''Removed due to constant timeouts'''''&amp;lt;br&amp;gt;&lt;br /&gt;
''ary.FourWD 1.3c,http://robocode-archive.strangeautomata.com/robots/ary.FourWD_1.3c.jar&amp;lt;br&amp;gt;&lt;br /&gt;
''stelo.Moojuk 1.3,http://robocode-archive.strangeautomata.com/robots/stelo.Moojuk_1.3.jar&lt;br /&gt;
&lt;br /&gt;
'''''Removed due to constant unstoppable and compatibility issue under java 8'''''&amp;lt;br&amp;gt;&lt;br /&gt;
''apc.Caan 1.0,http://robocode-archive.strangeautomata.com/robots/apc.Caan_1.0.jar&lt;br /&gt;
&lt;br /&gt;
'''''Removed due to attempting to read environment variables'''''&amp;lt;br&amp;gt;&lt;br /&gt;
''gm.GaetanoA 2.15,http://robocode-archive.strangeautomata.com/robots/gm.GaetanoA_2.15.jar&lt;br /&gt;
&lt;br /&gt;
'''''Removed due to invalid robot or team'''''&amp;lt;br&amp;gt;&lt;br /&gt;
''stelo.Spread 0.5.2,https://github.com/kimtg/robocode-bots/releases/download/release/stelo.Spread_0.5.2.jar&lt;br /&gt;
''stelo.PastFuture 2.3.1,https://github.com/kimtg/robocode-bots/releases/download/release/stelo.PastFuture_2.3.1.jar&lt;br /&gt;
&lt;br /&gt;
'''Removed due to not working in 1.9.4.2'''&amp;lt;br&amp;gt;&lt;br /&gt;
''abc.tron3.Tron 3.11,http://robocode-archive.strangeautomata.com/robots/abc.tron3.Tron_3.11.jar''&lt;br /&gt;
&lt;br /&gt;
'''Removed due to not working with Java 17. Don't use Java 18. '''&amp;lt;br&amp;gt;&lt;br /&gt;
dylanb.xyz 2.0,https://drive.google.com/uc?export=download&amp;amp;id=18ugz_el8xentgdnPipnK4zGyBOoT3fN9&lt;/div&gt;</summary>
		<author><name>D414</name></author>
		
	</entry>
	<entry>
		<id>http://robowiki.net/w/index.php?title=User:D414/Personal_Gotchas&amp;diff=57923</id>
		<title>User:D414/Personal Gotchas</title>
		<link rel="alternate" type="text/html" href="http://robowiki.net/w/index.php?title=User:D414/Personal_Gotchas&amp;diff=57923"/>
		<updated>2024-05-21T07:49:00Z</updated>

		<summary type="html">&lt;p&gt;D414: getXXX calls can update before execute is called&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Some API calls update before execute() is called =&lt;br /&gt;
For example, after a call to setGunTurnRight the return value of getGunTurnRemaining is updated. I'm currently unsure whether it's possible for the outcome of a turn to be impacted by changing the order setXXX calls are made in.&lt;br /&gt;
&lt;br /&gt;
= Maximum scan distance=&lt;br /&gt;
It's possible for a scan event to return a number larger than 1216. The largest I've seen is a smidge over 1225.&lt;br /&gt;
&lt;br /&gt;
= Event Priority =&lt;br /&gt;
The documentation for event priorities is unclear. [https://robocode.sourceforge.io/docs/robocode/robocode/AdvancedRobot.html#setEventPriority-java.lang.String-int- setEventPriority] says lower values are higher priority while [https://robocode.sourceforge.io/docs/robocode/robocode/AdvancedRobot.html#getEventPriority-java.lang.String- getEventPriority] says higher values are higher priority. Testing confirms the later is correct. &lt;br /&gt;
&lt;br /&gt;
The documentation also has errors for the default priorities for several events.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Event !! [https://robocode.sourceforge.io/docs/robocode/robocode/AdvancedRobot.html#setEventPriority-java.lang.String-int- setEventPriority] docs !! [https://github.com/robo-code/robocode/tree/VER_1_9_5_2/robocode.api/src/main/java/robocode Source Code (1.9.5.2)]&lt;br /&gt;
|-&lt;br /&gt;
| RoundEndedEvent || 100 || '''110'''&lt;br /&gt;
|-&lt;br /&gt;
| BattleEndedEvent || 100 || 100&lt;br /&gt;
|-&lt;br /&gt;
| WinEvent || 100 || 100&lt;br /&gt;
|-&lt;br /&gt;
| SkippedTurnEvent || 100 || 100&lt;br /&gt;
|-&lt;br /&gt;
| StatusEvent || 99 || 99&lt;br /&gt;
|-&lt;br /&gt;
| Key and Mouse Events || 98 || 98&lt;br /&gt;
|-&lt;br /&gt;
| CustomEvent (Default) || 80 || 80&lt;br /&gt;
|-&lt;br /&gt;
| MessageEvent || 75 || 75&lt;br /&gt;
|-&lt;br /&gt;
| RobotDeathEvent || 70 || 70&lt;br /&gt;
|-&lt;br /&gt;
| BulletMissedEvent || 60 || 60&lt;br /&gt;
|-&lt;br /&gt;
| BulletHitBulletEvent || 55 || 55&lt;br /&gt;
|-&lt;br /&gt;
| BulletHitEvent || 50 || 50&lt;br /&gt;
|-&lt;br /&gt;
| HitByBulletEvent || 40 || '''20'''&lt;br /&gt;
|-&lt;br /&gt;
| HitWallEvent || 30 || 30&lt;br /&gt;
|-&lt;br /&gt;
| HitRobotEvent || 20 || '''40'''&lt;br /&gt;
|-&lt;br /&gt;
| ScannedRobotEvent || 10 || 10&lt;br /&gt;
|-&lt;br /&gt;
| PaintEvent || 5 || 5&lt;br /&gt;
|-&lt;br /&gt;
| DeathEvent || -1 || -1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Execute Method =&lt;br /&gt;
The documentation for the [https://robocode.sourceforge.io/docs/robocode/robocode/AdvancedRobot.html#execute-- execute] method says that it '''must''' be called otherwise set* methods will never be performed. This doesn't seem to be strictly true as a robot that uses set methods to spin its radar, gun and body in the [https://robocode.sourceforge.io/docs/robocode/robocode/Robot.html#run-- run] method will spin even without calling [https://robocode.sourceforge.io/docs/robocode/robocode/AdvancedRobot.html#execute-- execute].&lt;br /&gt;
&lt;br /&gt;
= Skipped Turns =&lt;br /&gt;
The documentation for [https://robocode.sourceforge.io/docs/robocode/robocode/SkippedTurnEvent.html SkippedTurnEvent] says a robot will be removed from the battle after skipping 30 turns however a robot using the example code will skip many more turns than this without being removed from the battle.&lt;br /&gt;
&lt;br /&gt;
= Ramming / ROBOT_HIT_BONUS / HitRobotEvent =&lt;br /&gt;
Based on some quick tests with RamFire vs SittingDuck it looks as though [https://robocode.sourceforge.io/docs/robocode/robocode/Rules.html#ROBOT_HIT_BONUS Rules.ROBOT_HIT_BONUS] isn't actually applied.&lt;br /&gt;
&lt;br /&gt;
It also appears that a ramming robot that gets stopped effectively gets its movement for that turn cancelled and remains in the same position. However, it can still move closer to the target on subsequent turns (Also tested with RamFire vs SittingDuck). This is mostly unimportant except for the case of using a HitRobotEvent to determine the position of an enemy that wasn't scanned that turn (eg in melee or a Droid in a team battle).&lt;/div&gt;</summary>
		<author><name>D414</name></author>
		
	</entry>
	<entry>
		<id>http://robowiki.net/w/index.php?title=Thread:User_talk:D414/My_predictions_for_2024/reply_(5)&amp;diff=57922</id>
		<title>Thread:User talk:D414/My predictions for 2024/reply (5)</title>
		<link rel="alternate" type="text/html" href="http://robowiki.net/w/index.php?title=Thread:User_talk:D414/My_predictions_for_2024/reply_(5)&amp;diff=57922"/>
		<updated>2024-05-20T15:07:04Z</updated>

		<summary type="html">&lt;p&gt;D414: Reply to My predictions for 2024&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;It would definitely be a challenge, and Mirage's movement and/or gun might not be the right approach, but I think Mirage is proof that it's possible. If somebody had suggested a mini could beat Shadow before you'd released Mirage I'd have laughed but not anymore!&lt;/div&gt;</summary>
		<author><name>D414</name></author>
		
	</entry>
	<entry>
		<id>http://robowiki.net/w/index.php?title=Thread:User_talk:D414/My_predictions_for_2024/reply_(3)&amp;diff=57920</id>
		<title>Thread:User talk:D414/My predictions for 2024/reply (3)</title>
		<link rel="alternate" type="text/html" href="http://robowiki.net/w/index.php?title=Thread:User_talk:D414/My_predictions_for_2024/reply_(3)&amp;diff=57920"/>
		<updated>2024-05-19T14:41:02Z</updated>

		<summary type="html">&lt;p&gt;D414: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;I have faith in you, it'd be great to see a few more crowns changing hands (especially to somebody other than Kev! :p). If you find some changes that could get [[Epeeist]] to the top but don't have the space I'd be happy to see if I can help squeeze it in.&lt;br /&gt;
&lt;br /&gt;
Mirage looks like it could potentially be squeezed down to 12xx bytes (or further) without loss of performance, so that prediction feels like a question of when, rather than if.&lt;br /&gt;
&lt;br /&gt;
The energy management in [[Quantum]] v0.2.4 was a bit of a flop but I have v0.2.3 down to 230 bytes so far which gives me a few easy options:&lt;br /&gt;
&lt;br /&gt;
* Add a check so that it doesn't fire if it would disable itself (Testing suggests that's worth around 0.2 APS)&lt;br /&gt;
* Add a check against getGunTurnRemaining (Testing suggest that's worth around 0.1 APS)&lt;br /&gt;
&lt;br /&gt;
I ''think'' I'll be able to fit both of those in for v0.3.0.&lt;br /&gt;
&lt;br /&gt;
The interesting gun changes will require me to build a melee version of [[WaveSim]] if I'm going to have any hope of tuning them properly. The first thing I'd like to try is replacing the Math.pow call with a table, since that would allow me to tune the lead in the gun precisely and it also doesn't require any extra space.&lt;br /&gt;
&lt;br /&gt;
Alternatively I could forgo the two changes above and add a table based gun that uses lateral velocity, lateral velocity last tick, distance, bullet power and getOthers as attributes. My gut says that gun could rival (or possibly even outperform) circular targeting if tuned well, but I'm not going to be building a melee version of [[WaveSim]] anytime soon so it's entirely hypothetical right now!&lt;br /&gt;
&lt;br /&gt;
After all that I'd like to try table based wall forces, which if I recall correctly would only cost me a byte or two.&lt;/div&gt;</summary>
		<author><name>D414</name></author>
		
	</entry>
	<entry>
		<id>http://robowiki.net/w/index.php?title=Thread:User_talk:D414/My_predictions_for_2024/reply_(3)&amp;diff=57919</id>
		<title>Thread:User talk:D414/My predictions for 2024/reply (3)</title>
		<link rel="alternate" type="text/html" href="http://robowiki.net/w/index.php?title=Thread:User_talk:D414/My_predictions_for_2024/reply_(3)&amp;diff=57919"/>
		<updated>2024-05-19T14:38:06Z</updated>

		<summary type="html">&lt;p&gt;D414: Reply to My predictions for 2024&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;I have faith in you, it'd be great to see a few more crowns changing hands (especially to somebody other than Kev! :p). If you find some changes that could get [[Epeeist]] to the top but don't have the space I'd be happy to see if I can help squeeze it in.&lt;br /&gt;
&lt;br /&gt;
Mirage looks like it could potentially be squeezed down to 12xx bytes (or further) without loss of performance, so that prediction feels like a question of when, rather than if.&lt;br /&gt;
&lt;br /&gt;
The energy management in [[Quantum]] v0.2.4 was a bit of a flop but I have v0.2.3 down to 230 bytes so far which gives me a few easy options:&lt;br /&gt;
&lt;br /&gt;
* Add a check so that it doesn't fire if it would disable itself (Testing suggests that's worth around 0.2 APS)&lt;br /&gt;
* Add a check against getGunTurnRemaining (Testing suggest that's worth around 0.1 APS)&lt;br /&gt;
&lt;br /&gt;
I ''think'' I'll be able to fit both of those in for v0.3.0.&lt;br /&gt;
&lt;br /&gt;
The interesting gun changes will require me to build a melee version of [[WaveSim]] if I'm going to have any hope of tuning them properly. The first thing I'd like to try is replacing the Math.pow call with a table, since that would allow me to tune the lead in the gun precisely and it also doesn't require any extra space.&lt;br /&gt;
&lt;br /&gt;
Alternatively I could forgo the two changes above and add a table based gun that uses lateral velocity, lateral velocity last tick, distance, bullet power and getOthers as attributes. My gut says that gun could outperform circular targeting if tuned well, but I'm not going to be building a melee version of [[WaveSim]] anytime soon so it's entirely hypothetical right now!&lt;br /&gt;
&lt;br /&gt;
After all that I'd like to try table based wall forces, which if I recall correctly would only cost me a byte or two.&lt;/div&gt;</summary>
		<author><name>D414</name></author>
		
	</entry>
	<entry>
		<id>http://robowiki.net/w/index.php?title=Thread:Talk:Code_Size/Writing_nanobots_using_Java_Assembly_directly/reply_(5)&amp;diff=57912</id>
		<title>Thread:Talk:Code Size/Writing nanobots using Java Assembly directly/reply (5)</title>
		<link rel="alternate" type="text/html" href="http://robowiki.net/w/index.php?title=Thread:Talk:Code_Size/Writing_nanobots_using_Java_Assembly_directly/reply_(5)&amp;diff=57912"/>
		<updated>2024-05-19T10:55:52Z</updated>

		<summary type="html">&lt;p&gt;D414: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;As well as exploring the standard library it's also a good idea to carefully consider the robocode methods as well. For example, I was able to save a few bytes by switching from setTurnRightRadians to setTurnLeftRadians as it allowed me to save the result of getHeadingRadians in a register instead of calling it twice.&lt;br /&gt;
&lt;br /&gt;
I didn't have any success with ProGuard when trying to shrink [[Quantum]] but switching to assembly with [https://github.com/Storyyeller/Krakatau Krakatau] has been quite fruitful. I've been able to save space by using dup to save variables on the stack instead of using local variables, which wouldn't have been possible in plain Java.&lt;br /&gt;
&lt;br /&gt;
After my next update to [[Quantum]] I'll write a walkthrough from naive Java to optimised Java and finally down to bytecode. I'll be able to demonstrate most of the techniques listed in this page as well as a few new ideas like my gunheat lock for the radar.&lt;br /&gt;
&lt;br /&gt;
Something I haven't explored yet is whether nested calls to [[Game_Physics#Event_handling|event handlers]] can be exploited in some way. I don't think I could make use of it in [[Quantum]] but if/when I write a nano duelist it might come in handy.&lt;/div&gt;</summary>
		<author><name>D414</name></author>
		
	</entry>
	<entry>
		<id>http://robowiki.net/w/index.php?title=Thread:Talk:Code_Size/Writing_nanobots_using_Java_Assembly_directly/reply_(5)&amp;diff=57911</id>
		<title>Thread:Talk:Code Size/Writing nanobots using Java Assembly directly/reply (5)</title>
		<link rel="alternate" type="text/html" href="http://robowiki.net/w/index.php?title=Thread:Talk:Code_Size/Writing_nanobots_using_Java_Assembly_directly/reply_(5)&amp;diff=57911"/>
		<updated>2024-05-19T10:49:55Z</updated>

		<summary type="html">&lt;p&gt;D414: Reply to Writing nanobots using Java Assembly directly&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;As well as exploring the standard library it's also a good idea to carefully consider the robocode methods as well. For example, I was able to save a few bytes by switching from setTurnRightRadians to setTurnLeftRadians as it allowed me to save the result of getHeadingRadians in a register instead of calling it twice.&lt;br /&gt;
&lt;br /&gt;
I didn't have any success with ProGuard when trying to shrink [[Quantum]] but switching to assembly with [https://github.com/Storyyeller/Krakatau Krakatau] has been quite fruitful. I've been able to save space by using dup to save variables on the stack instead of using local variables, which wouldn't have been possible in plain Java.&lt;br /&gt;
&lt;br /&gt;
After my next update to [[Quantum]] I'll write a walkthrough from naive Java to optimised Java and finally down to bytecode. I'll be able to demonstrate most of the techniques listed in this page as well as a few new ideas like my gunheat lock for the radar.&lt;/div&gt;</summary>
		<author><name>D414</name></author>
		
	</entry>
	<entry>
		<id>http://robowiki.net/w/index.php?title=Thread:Talk:RoboRumble/Problems_with_JollyNinja/reply_(2)&amp;diff=57910</id>
		<title>Thread:Talk:RoboRumble/Problems with JollyNinja/reply (2)</title>
		<link rel="alternate" type="text/html" href="http://robowiki.net/w/index.php?title=Thread:Talk:RoboRumble/Problems_with_JollyNinja/reply_(2)&amp;diff=57910"/>
		<updated>2024-05-18T13:25:15Z</updated>

		<summary type="html">&lt;p&gt;D414: Reply to Problems with JollyNinja&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;If it helps I'd be happy to point a 1.9.5.2 client at a fresh rumble to generate enough results to compare to the current rankings. I figure it'd be much easier to spot any bots that get broken that way.&lt;/div&gt;</summary>
		<author><name>D414</name></author>
		
	</entry>
	<entry>
		<id>http://robowiki.net/w/index.php?title=Thread:Talk:RoboRumble/Problems_with_JollyNinja&amp;diff=57907</id>
		<title>Thread:Talk:RoboRumble/Problems with JollyNinja</title>
		<link rel="alternate" type="text/html" href="http://robowiki.net/w/index.php?title=Thread:Talk:RoboRumble/Problems_with_JollyNinja&amp;diff=57907"/>
		<updated>2024-05-17T14:44:14Z</updated>

		<summary type="html">&lt;p&gt;D414: New thread: Problems with JollyNinja&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;I noticed that JollyNinja is getting unusually bad results in the latest battles it has run (it currently votes for Quantum, which it really shouldn't be!)&lt;br /&gt;
&lt;br /&gt;
[https://literumble.appspot.com/BotDetails?game=meleerumble&amp;amp;name=sgp.JollyNinja%203.53&amp;amp;order=-KNNPBI JollyNinja's results on LiteRumble]&lt;br /&gt;
&lt;br /&gt;
When I run battles locally I get the following warnings:&lt;br /&gt;
&lt;br /&gt;
SYSTEM: Warning: sgp.JollyNinja uses static reference to a robot with the following field(s):&amp;lt;br&amp;gt;&lt;br /&gt;
	sgp.JollyNinja.instance, which points to a sgp.JollyNinja&amp;lt;br&amp;gt;&lt;br /&gt;
	sgp.Environment.robot, which points to a robocode.AdvancedRobot&amp;lt;br&amp;gt;&lt;br /&gt;
SYSTEM: Static references to robots can cause unwanted behaviour with the robot using these.&amp;lt;br&amp;gt;&lt;br /&gt;
SYSTEM: Please change static robot references to non-static references and recompile the robot.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When I run battles on a 1.9.4.2 client I see the poor performance seen in the rumble but with 1.9.5.2 the performance looks to be okay.&lt;/div&gt;</summary>
		<author><name>D414</name></author>
		
	</entry>
	<entry>
		<id>http://robowiki.net/w/index.php?title=Thread:User_talk:D414/My_predictions_for_2024&amp;diff=57906</id>
		<title>Thread:User talk:D414/My predictions for 2024</title>
		<link rel="alternate" type="text/html" href="http://robowiki.net/w/index.php?title=Thread:User_talk:D414/My_predictions_for_2024&amp;diff=57906"/>
		<updated>2024-05-17T14:26:31Z</updated>

		<summary type="html">&lt;p&gt;D414: New thread: My predictions for 2024&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Having stumbled across the [[Chronicle]] pages I thought it could be fun to make some predictions for what might occur this year.&lt;br /&gt;
&lt;br /&gt;
* [[HawkOnFire]] will be outperformed by a nanobot for the first time (Prediction made privately to myself with the initial release of [[Quantum]])&lt;br /&gt;
* [[Shadow]] will be outperformed (in melee) by a minibot for the first time&lt;br /&gt;
* [[Xor]] will still be waiting for somebody to dethrone [[ScalarR]] in the general melee rumble&lt;br /&gt;
* [[User:Sheldor2|Sheldor]] will take the crown in either micro or mini 1v1 (possibly both)&lt;br /&gt;
* Everybody on the wiki will have had at least one birthday&lt;/div&gt;</summary>
		<author><name>D414</name></author>
		
	</entry>
	<entry>
		<id>http://robowiki.net/w/index.php?title=Thread:User_talk:Kev/Nice_work_with_Figment/reply_(2)&amp;diff=57905</id>
		<title>Thread:User talk:Kev/Nice work with Figment/reply (2)</title>
		<link rel="alternate" type="text/html" href="http://robowiki.net/w/index.php?title=Thread:User_talk:Kev/Nice_work_with_Figment/reply_(2)&amp;diff=57905"/>
		<updated>2024-05-17T13:57:45Z</updated>

		<summary type="html">&lt;p&gt;D414: Reply to Nice work with Figment&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Yeah, dropping the multiple choice was painful.&lt;br /&gt;
&lt;br /&gt;
I'd be interested to see if Mirage's gun could be squeezed enough to fit in a Capulet style minimum-risk corner movement, I reckon that'd be close to peak performance for the strong gun/simple movement approach to a micro bot.&lt;br /&gt;
&lt;br /&gt;
Hopefully I'll find the time to finish off Quantum sooner rather than later. If the gun works out as well as I'm anticipating I suspect an improved version could be even better than circular targeting for a micro.&lt;/div&gt;</summary>
		<author><name>D414</name></author>
		
	</entry>
	<entry>
		<id>http://robowiki.net/w/index.php?title=RoboRumble/Participants/Melee&amp;diff=57903</id>
		<title>RoboRumble/Participants/Melee</title>
		<link rel="alternate" type="text/html" href="http://robowiki.net/w/index.php?title=RoboRumble/Participants/Melee&amp;diff=57903"/>
		<updated>2024-05-16T01:14:48Z</updated>

		<summary type="html">&lt;p&gt;D414: Update Quantum, retire FireHammer&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{:RoboRumble/Navigation}}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Just add your bot name ('''as appears in the Robocode selector after packaging''', so including versionnumber) and the download link by &amp;quot;,&amp;quot; (there must be no space after the comma).&lt;br /&gt;
&lt;br /&gt;
The list is in '''alphabetical''' order. Add your bot in the right slot.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;For your bot to be accepted by the RR@Home server, the following rules are mandatory:&amp;lt;/span&amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
* The bot must have a package-name.&lt;br /&gt;
* The bot must be packaged in a jar-file.&lt;br /&gt;
* A &amp;lt;botname&amp;gt;.properties file must be present in the jar-file.&lt;br /&gt;
* The naming of the bot must reflect the internal structure, see [http://home.versatel.nl/gheijenk/plaatjes/bot_naming.png]for sample.RamFire.&lt;br /&gt;
* '''&amp;lt;font color=&amp;quot;#CA0813&amp;quot;&amp;gt;The bot should be compatible with Java 17&amp;lt;/font&amp;gt; (Don't compile your code with Java 18 or newer versions)'''&lt;br /&gt;
&lt;br /&gt;
The easiest way to do this is to package your bot with Robocode (Robot -&amp;gt; Package robot for upload).&lt;br /&gt;
&lt;br /&gt;
'''PLEASE MAKE SURE YOUR BOT IS NOT ALREADY ON THE LIST BEFORE YOU ADD IT.&amp;lt;br&amp;gt;IF YOU ARE ADDING A NEW VERSION OF YOUR BOT, PLEASE DELETE THE OLD ONE.'''&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
aaa.r.ScalarR 0.005g.047,https://drive.google.com/uc?export=download&amp;amp;id=1RtyCnpE6XI_WHHvJwjj2brqFPvfgX9Uv&lt;br /&gt;
abc.Shadow 3.84i,http://robocode-archive.strangeautomata.com/robots/abc.Shadow_3.84i.jar&lt;br /&gt;
abud.ThirdRobo 1.0,http://robocode-archive.strangeautomata.com/robots/abud.ThirdRobo_1.0.jar&lt;br /&gt;
acogdev.alpha 0.2,http://robocode-archive.strangeautomata.com/robots/acogdev.alpha_0.2.jar&lt;br /&gt;
adt.Ar1 2.1,http://robocode-archive.strangeautomata.com/robots/adt.Ar1_2.1.jar&lt;br /&gt;
adt.Ar2 1.0,http://robocode-archive.strangeautomata.com/robots/adt.Ar2_1.0.jar&lt;br /&gt;
adt.Ar2 1.1,http://robocode-archive.strangeautomata.com/robots/adt.Ar2_1.1.jar&lt;br /&gt;
agd.Mooserwirt2 2.7,http://robocode-archive.strangeautomata.com/robots/agd.Mooserwirt2_2.7.jar&lt;br /&gt;
agrach.Dalek 1.0,https://github.com/aleksey-zhidkov/rc-repo-mirror/raw/master/agrach.Dalek_1.0.jar&lt;br /&gt;
ags.surreptitious.MiniSurreptitious 0.0.1,http://robocode-archive.strangeautomata.com/robots/ags.surreptitious.MiniSurreptitious_0.0.1.jar&lt;br /&gt;
ags.Glacier 0.2.11,http://robocode-archive.strangeautomata.com/robots/ags.Glacier_0.2.11.jar&lt;br /&gt;
ahf.NanoAndrew .4,http://robocode-archive.strangeautomata.com/robots/ahf.NanoAndrew_.4.jar&lt;br /&gt;
ahr.ice.Ice 1.0.2,http://robocode-archive.strangeautomata.com/robots/ahr.ice.Ice_1.0.2.jar&lt;br /&gt;
ak.Fermat 2.0,http://robocode-archive.strangeautomata.com/robots/ak.Fermat_2.0.jar&lt;br /&gt;
alpha.BlackIce 1.0,http://robocode-archive.strangeautomata.com/robots/alpha.BlackIce_1.0.jar&lt;br /&gt;
alpha.RainingFire 1.0,http://robocode-archive.strangeautomata.com/robots/alpha.RainingFire_1.0.jar&lt;br /&gt;
amk.ChumbaMini 0.2,http://robocode-archive.strangeautomata.com/robots/amk.ChumbaMini_0.2.jar&lt;br /&gt;
amk.ChumbaWumba 0.3,http://robocode-archive.strangeautomata.com/robots/amk.ChumbaWumba_0.3.jar&lt;br /&gt;
amk.jointstrike.JointStrike 0.2,http://robocode-archive.strangeautomata.com/robots/amk.jointstrike.JointStrike_0.2.jar&lt;br /&gt;
amk.ShizzleStiX.ShizzleStiX 0.6,http://robocode-archive.strangeautomata.com/robots/amk.ShizzleStiX.ShizzleStiX_0.6.jar&lt;br /&gt;
amk.superstrike.SuperStrike 0.3,http://robocode-archive.strangeautomata.com/robots/amk.superstrike.SuperStrike_0.3.jar&lt;br /&gt;
amk.Punbot.Punbot 0.01,http://robocode-archive.strangeautomata.com/robots/amk.Punbot.Punbot_0.01.jar&lt;br /&gt;
amz.NanoClone 1.41,http://robocode-archive.strangeautomata.com/robots/amz.NanoClone_1.41.jar&lt;br /&gt;
ap.Frederick 1.1,http://robocode-archive.strangeautomata.com/robots/ap.Frederick_1.1.jar&lt;br /&gt;
apc.botM 3.0,http://robocode-archive.strangeautomata.com/robots/apc.botM_3.0.jar&lt;br /&gt;
apc.Colossus2 0.17,http://robocode-archive.strangeautomata.com/robots/apc.Colossus2_0.17.jar&lt;br /&gt;
apc.LeeroyJenkins2 1.0,http://robocode-archive.strangeautomata.com/robots/apc.LeeroyJenkins2_1.0.jar&lt;br /&gt;
apollokidd.ApolloKidd 0.9,http://robocode-archive.strangeautomata.com/robots/apollokidd.ApolloKidd_0.9.jar&lt;br /&gt;
ara.Shera 0.88,http://robocode-archive.strangeautomata.com/robots/ara.Shera_0.88.jar&lt;br /&gt;
arthord.MannyPacquiao Beta,http://robocode-archive.strangeautomata.com/robots/arthord.MannyPacquiao_Beta.jar&lt;br /&gt;
arthord.NanoSatanMelee Beta,http://robocode-archive.strangeautomata.com/robots/arthord.NanoSatanMelee_Beta.jar&lt;br /&gt;
ary.Swarm 1.1,http://robocode-archive.strangeautomata.com/robots/ary.Swarm_1.1.jar&lt;br /&gt;
as.FrankTheTank 1.3,http://robocode-archive.strangeautomata.com/robots/as.FrankTheTank_1.3.jar&lt;br /&gt;
asd.Cthulhu 1.3,http://robocode-archive.strangeautomata.com/robots/asd.Cthulhu_1.3.jar&lt;br /&gt;
awesomeness.Elite 1.0,http://robocode-archive.strangeautomata.com/robots/awesomeness.Elite_1.0.jar&lt;br /&gt;
axeBots.HataMoto 3.09,http://robocode-archive.strangeautomata.com/robots/axeBots.HataMoto_3.09.jar&lt;br /&gt;
ayk.WallHugger 1.0,http://robocode-archive.strangeautomata.com/robots/ayk.WallHugger_1.0.jar&lt;br /&gt;
az.Ololobot 0.2.4,https://github.com/alexei-zayakin/robocode/raw/master/az.Ololobot_0.2.4.jar&lt;br /&gt;
baal.nano.N 1.42,http://robocode-archive.strangeautomata.com/robots/baal.nano.N_1.42.jar&lt;br /&gt;
bayen.nut.Squirrel 1.615,http://robocode-archive.strangeautomata.com/robots/bayen.nut.Squirrel_1.615.jar&lt;br /&gt;
bayen.UbaMicro 1.4,http://robocode-archive.strangeautomata.com/robots/bayen.UbaMicro_1.4.jar&lt;br /&gt;
bigpete.Stewie 1.0,http://robocode-archive.strangeautomata.com/robots/bigpete.Stewie_1.0.jar&lt;br /&gt;
br2.MobyDickBot 1.6,http://robocode-archive.strangeautomata.com/robots/br2.MobyDickBot_1.6.jar&lt;br /&gt;
brainfade.melee.Dusk 0.44,http://robocode-archive.strangeautomata.com/robots/brainfade.melee.Dusk_0.44.jar&lt;br /&gt;
brainfade.melee.Genghis 0.36,http://robocode-archive.strangeautomata.com/robots/brainfade.melee.Genghis_0.36.jar&lt;br /&gt;
bts.mega.Gnarly 1.4,http://robocode-archive.strangeautomata.com/robots/bts.mega.Gnarly_1.4.jar&lt;br /&gt;
bts.wiki.RipCurl 0.9b,http://robocode-archive.strangeautomata.com/robots/bts.wiki.RipCurl_0.9b.jar&lt;br /&gt;
bvh.fnr.Fenrir 0.36l,http://robocode-archive.strangeautomata.com/robots/bvh.fnr.Fenrir_0.36l.jar&lt;br /&gt;
bvh.fry.Freya 0.82,http://robocode-archive.strangeautomata.com/robots/bvh.fry.Freya_0.82.jar&lt;br /&gt;
bvh.micro.Freya 0.3,http://robocode-archive.strangeautomata.com/robots/bvh.micro.Freya_0.3.jar&lt;br /&gt;
bvh.mini.Fenrir 0.39,http://robocode-archive.strangeautomata.com/robots/bvh.mini.Fenrir_0.39.jar&lt;br /&gt;
bvh.mini.Freya 0.55,http://robocode-archive.strangeautomata.com/robots/bvh.mini.Freya_0.55.jar&lt;br /&gt;
bwbaugh.nano.Tirunculus 0.0.0a,http://robocode-archive.strangeautomata.com/robots/bwbaugh.nano.Tirunculus_0.0.0a.jar&lt;br /&gt;
bzdp.BoxCar 2.0,http://robocode-archive.strangeautomata.com/robots/bzdp.BoxCar_2.0.jar&lt;br /&gt;
bzdp.Pansy 2.1,http://robocode-archive.strangeautomata.com/robots/bzdp.Pansy_2.1.jar&lt;br /&gt;
caimano.Furia_Ceca 0.22,http://robocode-archive.strangeautomata.com/robots/caimano.Furia_Ceca_0.22.jar&lt;br /&gt;
catcat20.Lambda 0.024,https://drive.google.com/uc?export=download&amp;amp;id=1KgQRpAJVYtrnX_M0YCUT3iS1SjInSvcX&lt;br /&gt;
catcat20.Rabbit 0.001,https://drive.google.com/uc?export=download&amp;amp;id=1Cz81GQX7u9qe0muFXWx4qm-lNOA0MXeE&lt;br /&gt;
catcat20.shape.Theta 0.018,https://drive.google.com/uc?export=download&amp;amp;id=1EXcQ5PlX7m2alnvlISipPF2ywsWPMSA0&lt;br /&gt;
cb.fire.Firestarter 2.0f,https://www.dropbox.com/s/96qhyuh648ufuju/cb.fire.Firestarter_2.0f.jar?dl=1&lt;br /&gt;
cb.nano.Insomnia 1.0,https://www.dropbox.com/s/3sl5bz9knsgxewe/cb.nano.Insomnia_1.0.jar?dl=1&lt;br /&gt;
cf.RiO.RiOx 4.2.1,http://robocode-archive.strangeautomata.com/robots/cf.RiO.RiOx_4.2.1.jar&lt;br /&gt;
cli.Dancer 1.1,http://robocode-archive.strangeautomata.com/robots/cli.Dancer_1.1.jar&lt;br /&gt;
cli.WasteOfAmmo 1.0,http://robocode-archive.strangeautomata.com/robots/cli.WasteOfAmmo_1.0.jar&lt;br /&gt;
co.edu.usb.rc.LidisTron 1.0,http://robocode-archive.strangeautomata.com/robots/co.edu.usb.rc.LidisTron_1.0.jar&lt;br /&gt;
com.blogspot.malinkody.DestrobotMalin 1.0,http://robocode-archive.strangeautomata.com/robots/com.blogspot.malinkody.DestrobotMalin_1.0.jar&lt;br /&gt;
com.cgarias.rc.AdvancedTrackerII 1.0,http://robocode-archive.strangeautomata.com/robots/com.cgarias.rc.AdvancedTrackerII_1.0.jar&lt;br /&gt;
com.cohesiva.robocode.ManOwaR 1.0,http://robocode-archive.strangeautomata.com/robots/com.cohesiva.robocode.ManOwaR_1.0.jar&lt;br /&gt;
com.spp.robocode.MostlyHarmless 010,https://drive.google.com/u/0/uc?id=1VAJUrVH2LCj94MJyQXBL9w8NtNeSoCtm&amp;amp;export=download&lt;br /&gt;
com.syncleus.robocode.Dreadnaught 0.1,http://robocode-archive.strangeautomata.com/robots/com.syncleus.robocode.Dreadnaught_0.1.jar&lt;br /&gt;
conscience.Electron 1.3g,http://robocode-archive.strangeautomata.com/robots/conscience.Electron_1.3g.jar&lt;br /&gt;
cre.Karolos 0.32,http://robocode-archive.strangeautomata.com/robots/cre.Karolos_0.32.jar&lt;br /&gt;
cs.Grudge 1.0,http://robocode-archive.strangeautomata.com/robots/cs.Grudge_1.0.jar&lt;br /&gt;
cs.sheldor.Talon 1.1,http://robocode-archive.strangeautomata.com/robots/cs.sheldor.Talon_1.1.jar&lt;br /&gt;
cs.Wren 1.0,http://robocode-archive.strangeautomata.com/robots/cs.Wren_1.0.jar&lt;br /&gt;
css.Delitioner 0.11,http://robocode-archive.strangeautomata.com/robots/css.Delitioner_0.11.jar&lt;br /&gt;
cvt.Firsty 1.0,http://robocode-archive.strangeautomata.com/robots/cvt.Firsty_1.0.jar&lt;br /&gt;
cw.megas.Blade 0.8,http://robocode-archive.strangeautomata.com/robots/cw.megas.Blade_0.8.jar&lt;br /&gt;
cx.BlestPain 1.41,http://robocode-archive.strangeautomata.com/robots/cx.BlestPain_1.41.jar&lt;br /&gt;
cx.mini.Nimrod 0.55,http://robocode-archive.strangeautomata.com/robots/cx.mini.Nimrod_0.55.jar&lt;br /&gt;
cx.Princess 1.0,http://robocode-archive.strangeautomata.com/robots/cx.Princess_1.0.jar&lt;br /&gt;
d414.nano.Quantum 0.2.4,https://drive.google.com/uc?export=download&amp;amp;id=1jcZJBshN4vnc0X2t9ixrr39rOBRLz4B-&lt;br /&gt;
dans.Cinnamon 1.2,http://robocode-archive.strangeautomata.com/robots/dans.Cinnamon_1.2.jar&lt;br /&gt;
darkcanuck.B26354 1.06,http://robocode-archive.strangeautomata.com/robots/darkcanuck.B26354_1.06.jar&lt;br /&gt;
darkcanuck.Leon 1.01,http://robocode-archive.strangeautomata.com/robots/darkcanuck.Leon_1.01.jar&lt;br /&gt;
darwinsnightmare.DNGEN474UI85390C20S0R528 1.0,http://robocode-archive.strangeautomata.com/robots/darwinsnightmare.DNGEN474UI85390C20S0R528_1.0.jar&lt;br /&gt;
davidalves.net.DuelistMicroMelee 1.4,http://robocode-archive.strangeautomata.com/robots/davidalves.net.DuelistMicroMelee_1.4.jar&lt;br /&gt;
davidalves.net.DuelistMiniMelee 1.2,http://robocode-archive.strangeautomata.com/robots/davidalves.net.DuelistMiniMelee_1.2.jar&lt;br /&gt;
davidalves.net.DuelistNanoMelee 1.01,http://robocode-archive.strangeautomata.com/robots/davidalves.net.DuelistNanoMelee_1.01.jar&lt;br /&gt;
davidalves.Phoenix 0.54,https://github.com/aleksey-zhidkov/rc-repo-mirror/raw/master/davidalves.Phoenix_0.54.jar&lt;br /&gt;
DBall.Anarchy 0.1,http://robocode-archive.strangeautomata.com/robots/DBall.Anarchy_0.1.jar&lt;br /&gt;
DBall.NUKE 0.1,http://robocode-archive.strangeautomata.com/robots/DBall.NUKE_0.1.jar&lt;br /&gt;
dcs.Eater_of_Worlds 1.1.3-A,http://robocode-archive.strangeautomata.com/robots/dcs.Eater_of_Worlds_1.1.3-A.jar&lt;br /&gt;
deewiant.Anomaly 0.2,http://robocode-archive.strangeautomata.com/robots/deewiant.Anomaly_0.2.jar&lt;br /&gt;
de.simpleworks.robocode.bots.swiBot 1.0,http://robocode-archive.strangeautomata.com/robots/de.simpleworks.robocode.bots.swiBot_1.0.jar&lt;br /&gt;
de.simpleworks.robocode.bots.swiBot 1.1,http://robocode-archive.strangeautomata.com/robots/de.simpleworks.robocode.bots.swiBot_1.1.jar&lt;br /&gt;
dft.Calliope 5.6,http://robocode-archive.strangeautomata.com/robots/dft.Calliope_5.6.jar&lt;br /&gt;
disan.Chair 2.2.0,http://robocode-archive.strangeautomata.com/robots/disan.Chair_2.2.0.jar&lt;br /&gt;
divineomega.DivineBot 1.9.4.5,https://dl.dropboxusercontent.com/s/sk33qkpx7cfcmv6/divineomega.DivineBot_1.9.4.5.jar?dl=1&amp;amp;token_hash=AAGI4C3Fm8km-0aLNU3pUVE1JEZqx8UDV6qk5s8PoRgjhg&lt;br /&gt;
divineomega.TrialBot 0.003,https://dl.dropboxusercontent.com/s/an44muntp8f0p6h/divineomega.TrialBot_0.003.jar?token_hash=AAG5XTuv2fkEkTYhNIEJ0zre-SpWgK-jvKNqQ120pFeYSA&amp;amp;dl=1&lt;br /&gt;
djc.DynaBot 0.1.1,http://robocode-archive.strangeautomata.com/robots/djc.DynaBot_0.1.1.jar&lt;br /&gt;
djdjdj.NanoSkunk10 1.0,http://robocode-archive.strangeautomata.com/robots/djdjdj.NanoSkunk10_1.0.jar&lt;br /&gt;
dl.BetterWalls 1.0,http://robocode-archive.strangeautomata.com/robots/dl.BetterWalls_1.0.jar&lt;br /&gt;
dmh.robocode.robot.BlackDeath 9.2,https://www.dropbox.com/s/tads4vk7jrgmv6u/dmh.robocode.robot.BlackDeath_9.2.jar?dl=1&lt;br /&gt;
dmh.robocode.robot.RedDwarf 0.4,https://www.dropbox.com/s/n0k5n5iyr66ssut/dmh.robocode.robot.RedDwarf_0.4.jar?dl=1&lt;br /&gt;
donjezza.Jezza 1.0,http://robocode-archive.strangeautomata.com/robots/donjezza.Jezza_1.0.jar&lt;br /&gt;
donjezza.Muncho 1.0,http://robocode-archive.strangeautomata.com/robots/donjezza.Muncho_1.0.jar&lt;br /&gt;
drd.Dreadknoght 0.9,http://robocode-archive.strangeautomata.com/robots/drd.Dreadknoght_0.9.jar&lt;br /&gt;
ds.Oo 2.2,http://robocode-archive.strangeautomata.com/robots/ds.Oo_2.2.jar&lt;br /&gt;
dsw.StaticD 1.0,http://robocode-archive.strangeautomata.com/robots/dsw.StaticD_1.0.jar&lt;br /&gt;
DTF.Kludgy 1.2b,http://robocode-archive.strangeautomata.com/robots/DTF.Kludgy_1.2b.jar&lt;br /&gt;
dummy.micro.Sparrow 2.5,http://robocode-archive.strangeautomata.com/robots/dummy.micro.Sparrow_2.5.jar&lt;br /&gt;
dummy.mini.Scimitar 1.01,http://robocode-archive.strangeautomata.com/robots/dummy.mini.Scimitar_1.01.jar&lt;br /&gt;
EBBU.Sim2 1.02,http://robocode-archive.strangeautomata.com/robots/EBBU.Sim2_1.02.jar&lt;br /&gt;
edu.otg.spr.TheTeacher 1.2,http://robocode-archive.strangeautomata.com/robots/edu.otg.spr.TheTeacher_1.2.jar&lt;br /&gt;
eem.EvBot v4.6.16,http://robocode-archive.strangeautomata.com/robots/eem.EvBot_v4.6.16.jar&lt;br /&gt;
eem.EvBotNG v12.8,http://robocode-archive.strangeautomata.com/robots/eem.EvBotNG_v12.8.jar&lt;br /&gt;
eem.IWillFireNoBullet v2.8,http://robocode-archive.strangeautomata.com/robots/eem.IWillFireNoBullet_v2.8.jar&lt;br /&gt;
EH.Eagle 1.0.6,http://robocode-archive.strangeautomata.com/robots/EH.Eagle_1.0.6.jar&lt;br /&gt;
ejb.Polaris 1.0.1,http://robocode-archive.strangeautomata.com/robots/ejb.Polaris_1.0.1.jar&lt;br /&gt;
el.JumpShoot 0.2,http://robocode-archive.strangeautomata.com/robots/el.JumpShoot_0.2.jar&lt;br /&gt;
eld.Hmm 1.0,http://robocode-archive.strangeautomata.com/robots/eld.Hmm_1.0.jar&lt;br /&gt;
emp.Yngwie 1.11,http://robocode-archive.strangeautomata.com/robots/emp.Yngwie_1.11.jar&lt;br /&gt;
erdnis.Rover 0.3,http://robocode-archive.strangeautomata.com/robots/erdnis.Rover_0.3.jar&lt;br /&gt;
et.Predator 1.8,http://robocode-archive.strangeautomata.com/robots/et.Predator_1.8.jar&lt;br /&gt;
evd.X1 0.01,http://robocode-archive.strangeautomata.com/robots/evd.X1_0.01.jar&lt;br /&gt;
exauge.GateKeeper 1.1.121g,http://robocode-archive.strangeautomata.com/robots/exauge.GateKeeper_1.1.121g.jar&lt;br /&gt;
fire219.CatBot 1.0,https://dl.dropbox.com/s/bhboah2ps3r9xuj/fire219.CatBot_1.0.jar?dl=0&lt;br /&gt;
florent.XSeries.X2 0.12,http://wesley3.free.fr/florent.XSeries.X2_0.12.jar&lt;br /&gt;
fm.claire 1.7,http://robocode-archive.strangeautomata.com/robots/fm.claire_1.7.jar&lt;br /&gt;
fm.mammillarias 1.3,http://robocode-archive.strangeautomata.com/robots/fm.mammillarias_1.3.jar&lt;br /&gt;
fnc.bandit.Bandit 5.2.0,http://robocode-archive.strangeautomata.com/robots/fnc.bandit.Bandit_5.2.0.jar&lt;br /&gt;
fowl3628800.LightningBolt 2.6.0,http://robocode-archive.strangeautomata.com/robots/fowl3628800.LightningBolt_2.6.0.jar&lt;br /&gt;
franzor.Lizt 1.3.1,http://robocode-archive.strangeautomata.com/robots/franzor.Lizt_1.3.1.jar&lt;br /&gt;
fullsail.LaxativeTeaTwo 1.0,http://robocode-archive.strangeautomata.com/robots/fullsail.LaxativeTeaTwo_1.0.jar&lt;br /&gt;
fullsail.TimbotNoPrediction 1.0,http://robocode-archive.strangeautomata.com/robots/fullsail.TimbotNoPrediction_1.0.jar&lt;br /&gt;
fullsail.SweetTea 1.1,http://robocode-archive.strangeautomata.com/robots/fullsail.SweetTea_1.1.jar&lt;br /&gt;
fwb.Nine 1.0.1,http://robocode-archive.strangeautomata.com/robots/fwb.Nine_1.0.1.jar&lt;br /&gt;
GarmBox.Anger 1.0,https://drive.google.com/uc?export=download&amp;amp;id=12mUMd9tKHdCAV_JYVSuyJfkwVl6HZ42y&lt;br /&gt;
GarmBox.Oranges 1.0,https://drive.google.com/uc?export=download&amp;amp;id=1b6sXfphAg_ARqbZ1-Kg2pzILY2jObElv&lt;br /&gt;
Gecko.ultimateGeckoBot 1.0,http://robocode-archive.strangeautomata.com/robots/Gecko.ultimateGeckoBot_1.0.jar&lt;br /&gt;
germ.TheMind .2,http://robocode-archive.strangeautomata.com/robots/germ.TheMind_.2.jar&lt;br /&gt;
gg.Squaraus 0.6,http://robocode-archive.strangeautomata.com/robots/gg.Squaraus_0.6.jar&lt;br /&gt;
gg.Wolverine 2.0,http://robocode-archive.strangeautomata.com/robots/gg.Wolverine_2.0.jar&lt;br /&gt;
gh.Griezel 0.5.2,http://robocode-archive.strangeautomata.com/robots/gh.Griezel_0.5.2.jar&lt;br /&gt;
gh.micro.Gruweltje 0.7,http://robocode-archive.strangeautomata.com/robots/gh.micro.Gruweltje_0.7.jar&lt;br /&gt;
gh.mini.Griezel 0.2,http://robocode-archive.strangeautomata.com/robots/gh.mini.Griezel_0.2.jar&lt;br /&gt;
gh.mini.GrubbmOne 1.0,http://robocode-archive.strangeautomata.com/robots/gh.mini.GrubbmOne_1.0.jar&lt;br /&gt;
gh.mini.Gruwel 0.9,http://robocode-archive.strangeautomata.com/robots/gh.mini.Gruwel_0.9.jar&lt;br /&gt;
gh.nano.Grofvuil 0.2,http://robocode-archive.strangeautomata.com/robots/gh.nano.Grofvuil_0.2.jar&lt;br /&gt;
ghent.ArthurPanzergon 1.0.0,http://franck.jousseaume.free.fr/robocode/ArthurPanzergon_1.0.0.jar&lt;br /&gt;
gimp.GimpBot 0.1,http://robocode-archive.strangeautomata.com/robots/gimp.GimpBot_0.1.jar&lt;br /&gt;
gjr.Cephalosporin 0.1,http://robocode-archive.strangeautomata.com/robots/gjr.Cephalosporin_0.1.jar&lt;br /&gt;
goblin.Bender 2.4,http://robocode-archive.strangeautomata.com/robots/goblin.Bender_2.4.jar&lt;br /&gt;
gre.svman4.Leonidas 1.3.2,https://drive.google.com/uc?export=download&amp;amp;id=1ZeSWWgjvqsnq-44JyQR776ebBuOnTTd3&lt;br /&gt;
gre.svman4.Morfeas 1.4.1,https://drive.google.com/uc?export=download&amp;amp;id=1D4P_zT0zqxasqpCNoFB34KikbJKVXTn0&lt;br /&gt;
Grystrion.RandomTrackerNOREV 1.0,https://www.dropbox.com/s/9ym5golnwurhfxw/Grystrion.RandomTrackerNOREV_1.0.jar?dl=1&lt;br /&gt;
Grystrion.TrackerWO 1.0,https://www.dropbox.com/s/f1j88yf69zn37jp/Grystrion.TrackerWO_1.0.jar?dl=1&lt;br /&gt;
hvilela.HVilela 0.9,http://robocode-archive.strangeautomata.com/robots/hvilela.HVilela_0.9.jar&lt;br /&gt;
ICS4U1.Patrick_White_Schrodinger 1.1,http://robocode-archive.strangeautomata.com/robots/ICS4U1.Patrick_White_Schrodinger_1.1.jar&lt;br /&gt;
inonit.robocode.javascript.MyFirstRobot 1.1,https://github.com/davidpcaldwell/roborumble-participants/blob/master/inonit.robocode.javascript.MyFirstRobot_1.1.jar?raw=true&lt;br /&gt;
intruder.PrairieWolf 2.61,http://robocode-archive.strangeautomata.com/robots/intruder.PrairieWolf_2.61.jar&lt;br /&gt;
jab.DiamondStealer 5,http://robocode-archive.strangeautomata.com/robots/jab.DiamondStealers_5.jar&lt;br /&gt;
jangs.ns51 1.0,http://robocode-archive.strangeautomata.com/robots/jangs.ns51_1.0.jar&lt;br /&gt;
jaybot.adv.bots.JayBot 2.0,http://robocode-archive.strangeautomata.com/robots/jaybot.adv.bots.JayBot_2.0.jar&lt;br /&gt;
jaybot.bots.Oddball 4.0,http://robocode-archive.strangeautomata.com/robots/jaybot.bots.Oddball_4.0.jar&lt;br /&gt;
jcs.Seth 1.8,http://robocode-archive.strangeautomata.com/robots/jcs.Seth_1.8.jar&lt;br /&gt;
jdw.Hurricane 1.4,http://robocode-archive.strangeautomata.com/robots/jdw.Hurricane_1.4.jar&lt;br /&gt;
jekl.StoneGhost 0.7,http://robocode-archive.strangeautomata.com/robots/jekl.StoneGhost_0.7.jar&lt;br /&gt;
jeremyreeder.collective.Prophet 5,http://robocode-archive.strangeautomata.com/robots/jeremyreeder.collective.Prophet_5.jar&lt;br /&gt;
jeremyreeder.Vincent 2011.12.09,http://robocode-archive.strangeautomata.com/robots/jeremyreeder.Vincent_2011.12.09.jar&lt;br /&gt;
jje.BagPuss 1.2,http://robocode-archive.strangeautomata.com/robots/jje.BagPuss_1.2.jar&lt;br /&gt;
jk.melee.Neuromancer 7.12,https://www.dropbox.com/s/ctjzl08u2f3x3r0/jk.melee.Neuromancer_7.12.jar?dl=1&lt;br /&gt;
jlm.javaDisturbance 0.59,http://robocode-archive.strangeautomata.com/robots/jlm.javaDisturbance_0.59.jar&lt;br /&gt;
joe.ADinosaur 1.0,http://robocode-archive.strangeautomata.com/robots/joe.ADinosaur_1.0.jar&lt;br /&gt;
jok.PheonixM 0.1.2,http://robocode-archive.strangeautomata.com/robots/jok.PheonixM_0.1.2.jar&lt;br /&gt;
josago.Jorgito 0.16,http://robocode-archive.strangeautomata.com/robots/josago.Jorgito_0.16.jar&lt;br /&gt;
jp.Perpy 16.0,http://robocode-archive.strangeautomata.com/robots/jp.Perpy_16.0.jar&lt;br /&gt;
jrm.Test0 1.0,http://robocode-archive.strangeautomata.com/robots/jrm.Test0_1.0.jar&lt;br /&gt;
js.PinBall 1.6,http://robocode-archive.strangeautomata.com/robots/js.PinBall_1.6.jar&lt;br /&gt;
jsal.Jsalbot 1.0,http://robocode-archive.strangeautomata.com/robots/jsal.Jsalbot_1.0.jar&lt;br /&gt;
justin.Mallais 14.0,http://robocode-archive.strangeautomata.com/robots/justin.Mallais_14.0.jar&lt;br /&gt;
justin.DemonicRage 3.4,http://robocode-archive.strangeautomata.com/robots/justin.DemonicRage_3.4.jar&lt;br /&gt;
jwirde.Gort 2.0,http://robocode-archive.strangeautomata.com/robots/jwirde.Gort_2.0.jar&lt;br /&gt;
jwst.DAD.DarkAndDarker 1.1,http://robocode-archive.strangeautomata.com/robots/jwst.DAD.DarkAndDarker_1.1.jar&lt;br /&gt;
kano.gamma.KanoGamma 1.8,http://robocode-archive.strangeautomata.com/robots/kano.gamma.KanoGamma_1.8.jar&lt;br /&gt;
kawigi.micro.Shiz 1.1,http://robocode-archive.strangeautomata.com/robots/kawigi.micro.Shiz_1.1.jar&lt;br /&gt;
kawigi.mini.Coriantumr 1.1,http://robocode-archive.strangeautomata.com/robots/kawigi.mini.Coriantumr_1.1.jar&lt;br /&gt;
kawigi.mini.Fhqwhgads 1.1,http://robocode-archive.strangeautomata.com/robots/kawigi.mini.Fhqwhgads_1.1.jar&lt;br /&gt;
kawigi.nano.Lib 1.0,http://robocode-archive.strangeautomata.com/robots/kawigi.nano.Lib_1.0.jar&lt;br /&gt;
kawigi.robot.Girl 1.2,http://robocode-archive.strangeautomata.com/robots/kawigi.robot.Girl_1.2.jar&lt;br /&gt;
kawigi.sbf.FloodHT 0.9.2,http://robocode-archive.strangeautomata.com/robots/kawigi.sbf.FloodHT_0.9.2.jar&lt;br /&gt;
kawigi.sbf.FloodSonnet 0.9,http://robocode-archive.strangeautomata.com/robots/kawigi.sbf.FloodSonnet_0.9.jar&lt;br /&gt;
kawigi.spare.SpareParts 0.7.6nosnd,http://robocode-archive.strangeautomata.com/robots/kawigi.spare.SpareParts_0.7.6nosnd.jar&lt;br /&gt;
kc.micro.Figment 1.0,https://drive.google.com/uc?export=download&amp;amp;id=149sdMTNnpP57iGcIZ995AeZnbJHX5EL-&lt;br /&gt;
kc.mini.Mirage 0.2,https://drive.google.com/uc?export=download&amp;amp;id=1d2pv16MB2BXdAODf2mTGpS-yRIYOJJcT&lt;br /&gt;
kdf.KoulDestroyer 1.0,https://icarus.cs.weber.edu/~kfeuz/downloads/kdf.KoulDestroyer_1.0.jar&lt;br /&gt;
kid.Gladiator .7.2,http://robocode-archive.strangeautomata.com/robots/kid.Gladiator_.7.2.jar&lt;br /&gt;
kid.test.NightFox .2,http://robocode-archive.strangeautomata.com/robots/kid.test.NightFox_.2.jar&lt;br /&gt;
KiraNL.Chupacabra 0.4,http://robocode-archive.strangeautomata.com/robots/KiraNL.Chupacabra_0.4.jar&lt;br /&gt;
kinsen.melee.Angsaichmophobia 1.8c,http://robocode-archive.strangeautomata.com/robots/kinsen.melee.Angsaichmophobia_1.8c.jar&lt;br /&gt;
Krabb.akim2.Akim2 1.1b,http://robocode-archive.strangeautomata.com/robots/Krabb.akim2.Akim2_1.1b.jar&lt;br /&gt;
Krabb.sliNk.Garm 0.9u,http://robocode-archive.strangeautomata.com/robots/Krabb.sliNk.Garm_0.9u.jar&lt;br /&gt;
krillr.mini.JointStrike 2.0.0,http://robocode-archive.strangeautomata.com/robots/krillr.mini.JointStrike_2.0.0.jar&lt;br /&gt;
kurios.DOSexe .9a,http://robocode-archive.strangeautomata.com/robots/kurios.DOSexe_.9a.jar&lt;br /&gt;
kurios.DOSexe .9b,http://robocode-archive.strangeautomata.com/robots/kurios.DOSexe_.9b.jar&lt;br /&gt;
kvk.HebusLeTroll 0.35,http://robocode-archive.strangeautomata.com/robots/kvk.HebusLeTroll_0.35.jar&lt;br /&gt;
labg.Cataclysm 2.05,http://robocode-archive.strangeautomata.com/robots/labg.Cataclysm_2.05.jar&lt;br /&gt;
lambdaxy.TBot 0.1,http://robocode-archive.strangeautomata.com/robots/lambdaxy.TBot_0.1.jar&lt;br /&gt;
lessonz.robocode.Oz 0.5.0,http://robocode-archive.strangeautomata.com/robots/lessonz.robocode.Oz_0.5.0.jar&lt;br /&gt;
lmk.ACPFinal 0.1,http://robocode-archive.strangeautomata.com/robots/lmk.ACPFinal_0.1.jar&lt;br /&gt;
Lo_Ian.Gandalf_V4 4.0,http://robocode-archive.strangeautomata.com/robots/Lo_Ian.Gandalf_V4_4.0.jar&lt;br /&gt;
logiblocs.SittingDroid 1.0,http://robocode-archive.strangeautomata.com/robots/logiblocs.SittingDroid_1.0.jar&lt;br /&gt;
lorneswork.Predator 1.0,http://robocode-archive.strangeautomata.com/robots/lorneswork.Predator_1.0.jar&lt;br /&gt;
lrem.Spectre 0.4.4,http://robocode-archive.strangeautomata.com/robots/lrem.Spectre_0.4.4.jar&lt;br /&gt;
lrem.micro.MoggFanatic 0.2,http://robocode-archive.strangeautomata.com/robots/lrem.micro.MoggFanatic_0.2.jar&lt;br /&gt;
lrem.micro.SpikeSoldier 0.4,http://robocode-archive.strangeautomata.com/robots/lrem.micro.SpikeSoldier_0.4.jar&lt;br /&gt;
lunchie.Lunchbox 0.93,http://robocode-archive.strangeautomata.com/robots/lunchie.Lunchbox_0.93.jar&lt;br /&gt;
lxx.ConceptA 0.8,https://github.com/aleksey-zhidkov/ConceptA/raw/master/builds/lxx.ConceptA_0.8.jar&lt;br /&gt;
m3thos.Eva00 1.1,http://robocode-archive.strangeautomata.com/robots/m3thos.Eva00_1.1.jar&lt;br /&gt;
m3thos.Eva02 0.7.1,http://robocode-archive.strangeautomata.com/robots/m3thos.Eva02_0.7.1.jar&lt;br /&gt;
m3thos.mini.Eva01 0.5.5,http://robocode-archive.strangeautomata.com/robots/m3thos.mini.Eva01_0.5.5.jar&lt;br /&gt;
maribo.FollowFire 1,http://robocode-archive.strangeautomata.com/robots/maribo.FollowFire_1.jar&lt;br /&gt;
maribo.IotaCT 1.1,http://robocode-archive.strangeautomata.com/robots/maribo.IotaCT_1.1.jar&lt;br /&gt;
maribo.melee.BMV 0.1,http://robocode-archive.strangeautomata.com/robots/maribo.melee.BMV_0.1.jar&lt;br /&gt;
maribo.mini.MiniQuester 0.1,https://dl.dropboxusercontent.com/s/67bfz8fhhrnc34j/maribo.mini.MiniQuester_0.1.jar&lt;br /&gt;
maribo.Quester 0.3,https://dl.dropboxusercontent.com/s/3jtoh2u1qdulof4/maribo.Quester_0.3.jar&lt;br /&gt;
matt.advanced.Katana 1.0,http://robocode-archive.strangeautomata.com/robots/matt.advanced.Katana_1.0.jar&lt;br /&gt;
matt.UnderDark3 2.4.34,http://robocode-archive.strangeautomata.com/robots/matt.UnderDark3_2.4.34.jar&lt;br /&gt;
mb.Beast 0.1,http://robocode-archive.strangeautomata.com/robots/mb.Beast_0.1.jar&lt;br /&gt;
mbh.Mbh 0.1,http://robocode-archive.strangeautomata.com/robots/mbh.Mbh_0.1.jar&lt;br /&gt;
mbro.Detektor3 0.1.1,http://robocode-archive.strangeautomata.com/robots/mbro.Detektor3_0.1.1.jar&lt;br /&gt;
mc2.enemy.Original 0.9,http://robocode-archive.strangeautomata.com/robots/mc2.enemy.Original_0.9.jar&lt;br /&gt;
mk.Alpha 0.2.1,http://robocode-archive.strangeautomata.com/robots/mk.Alpha_0.2.1.jar&lt;br /&gt;
mld.DustBunny 3.8,http://robocode-archive.strangeautomata.com/robots/mld.DustBunny_3.8.jar&lt;br /&gt;
mld.Infinity 2.2,http://robocode-archive.strangeautomata.com/robots/mld.Infinity_2.2.jar&lt;br /&gt;
mld.Wisdom 1.0,http://robocode-archive.strangeautomata.com/robots/mld.Wisdom_1.0.jar&lt;br /&gt;
mme.NikeEnhanced 2.0,http://robocode-archive.strangeautomata.com/robots/mme.NikeEnhanced_2.0.jar&lt;br /&gt;
mn.nano.perceptual.Impact 1.3.0,https://www.dropbox.com/s/njuuaycr3qswlgu/mn.nano.perceptual.Impact_1.3.0.jar?dl=1&lt;br /&gt;
mn.Combat 3.25.0,https://www.dropbox.com/s/5iufszjp28qfptw/mn.Combat_3.25.0.jar?dl=1&lt;br /&gt;
morbid.MorbidPriest 1.0,http://robocode-archive.strangeautomata.com/robots/morbid.MorbidPriest_1.0.jar&lt;br /&gt;
ms.Ares 0.19,http://robocode-archive.strangeautomata.com/robots/ms.Ares_0.19.jar&lt;br /&gt;
myl.micro.Troodon 1.10,http://robocode-archive.strangeautomata.com/robots/myl.micro.Troodon_1.10.jar&lt;br /&gt;
myl.nano.Graviton 1.10,http://robocode-archive.strangeautomata.com/robots/myl.nano.Graviton_1.10.jar&lt;br /&gt;
myl.nano.KomoriNinja 1.1,http://robocode-archive.strangeautomata.com/robots/myl.nano.KomoriNinja_1.1.jar&lt;br /&gt;
mym.EdgeStalker 1.0,http://robocode-archive.strangeautomata.com/robots/mym.EdgeStalker_1.0.jar&lt;br /&gt;
mz.AntiGrav 1.0,http://robocode-archive.strangeautomata.com/robots/mz.AntiGrav_1.0.jar&lt;br /&gt;
mz.MicroGodMelee 1,http://robocode-archive.strangeautomata.com/robots/mz.MicroGodMelee_1.jar&lt;br /&gt;
mz.MicroSheep 1.0,http://robocode-archive.strangeautomata.com/robots/mz.MicroSheep_1.0.jar&lt;br /&gt;
mz.Cork 0.1,http://robocode-archive.strangeautomata.com/robots/mz.Cork_0.1.jar&lt;br /&gt;
mz.NanoGod 2.02,http://robocode-archive.strangeautomata.com/robots/mz.NanoGod_2.02.jar&lt;br /&gt;
nat.PallasHawk 1.0,http://robocode-archive.strangeautomata.com/robots/nat.PallasHawk_1.0.jar&lt;br /&gt;
ne.Chimera 1.2,http://robocode-archive.strangeautomata.com/robots/ne.Chimera_1.2.jar&lt;br /&gt;
nic.Nicator 2.4,http://robocode-archive.strangeautomata.com/robots/nic.Nicator_2.4.jar&lt;br /&gt;
Noran.BitchingElk 0.054,http://robocode-archive.strangeautomata.com/robots/Noran.BitchingElk_0.054.jar&lt;br /&gt;
ntc.ControlledChaos 1.1.4,http://robocode-archive.strangeautomata.com/robots/ntc.ControlledChaos_1.1.4.jar&lt;br /&gt;
ntc.Opposite 1.5,http://robocode-archive.strangeautomata.com/robots/ntc.Opposite_1.5.jar&lt;br /&gt;
nz.jdc.nano.GridFu 1.0,http://robocode-archive.strangeautomata.com/robots/nz.jdc.nano.GridFu_1.0.jar&lt;br /&gt;
oa.weak.BotherBot 0.1,http://robocode-archive.strangeautomata.com/robots/oa.weak.BotherBot_0.1.jar&lt;br /&gt;
oa.weak.FlyMk1 0.1,http://robocode-archive.strangeautomata.com/robots/oa.weak.FlyMk1_0.1.jar&lt;br /&gt;
oog.melee.Capulet 1.2,http://robocode-archive.strangeautomata.com/robots/oog.melee.Capulet_1.2.jar&lt;br /&gt;
oog.melee.CapuletDroid 1.1,http://robocode-archive.strangeautomata.com/robots/oog.melee.CapuletDroid_1.1.jar&lt;br /&gt;
oog.melee.Corsair 1.0,http://robocode-archive.strangeautomata.com/robots/oog.melee.Corsair_1.0.jar&lt;br /&gt;
oog.melee.Mercutio 1.0,http://robocode-archive.strangeautomata.com/robots/oog.melee.Mercutio_1.0.jar&lt;br /&gt;
origin.SleepSiphon 1.7b,https://github.com/John-Paul-R/SleepSiphon/releases/download/1.7b/origin.SleepSiphon_1.7b.jar&lt;br /&gt;
pa.Improved 1.0,http://robocode-archive.strangeautomata.com/robots/pa.Improved_1.0.jar&lt;br /&gt;
pac.ABC 2.1,http://robocode-archive.strangeautomata.com/robots/pac.ABC_2.1.jar&lt;br /&gt;
panzer.Panzer 0.2,http://robocode-archive.strangeautomata.com/robots/panzer.Panzer_0.2.jar&lt;br /&gt;
patson.PatsonTestBot 1.0,http://robocode-archive.strangeautomata.com/robots/patson.PatsonTestBot_1.0.jar&lt;br /&gt;
pbg.R2D2 1.0,http://robocode-archive.strangeautomata.com/robots/pbg.R2D2_1.0.jar&lt;br /&gt;
pbg.NinjaX 1.2,https://github.com/realr2d2/Bots/blob/gh-pages/pbg.NinjaX_1.2.jar?raw=true&lt;br /&gt;
TNT.TNT 0.99.1,http://robocode-archive.strangeautomata.com/robots/TNT.TNT_0.99.1.jar&lt;br /&gt;
pe.minimelee.SandboxMiniMelee 1.1,http://robocode-archive.strangeautomata.com/robots/pe.minimelee.SandboxMiniMelee_1.1.jar&lt;br /&gt;
pe.SandboxDT 2.71m,http://robocode-archive.strangeautomata.com/robots/pe.SandboxDT_2.71m.jar&lt;br /&gt;
pe.SandboxLump 1.52,http://robocode-archive.strangeautomata.com/robots/pe.SandboxLump_1.52.jar&lt;br /&gt;
pedersen.Grishnakh 1.0,http://robocode-archive.strangeautomata.com/robots/pedersen.Grishnakh_1.0.jar&lt;br /&gt;
pedersen.Moron 2.0,http://robocode-archive.strangeautomata.com/robots/pedersen.Moron_2.0.jar&lt;br /&gt;
pedersen.Ugluk 1.1.1,http://robocode-archive.strangeautomata.com/robots/pedersen.Ugluk_1.1.1.jar&lt;br /&gt;
pez.mini.ChironexFleckeri 0.5,http://robocode-archive.strangeautomata.com/robots/pez.mini.ChironexFleckeri_0.5.jar&lt;br /&gt;
pfvicm.Sobieski 7.2.3b,http://robocode-archive.strangeautomata.com/robots/pfvicm.Sobieski_7.2.3b.jar&lt;br /&gt;
ph.melee.ArcherME 0.3,http://robocode-archive.strangeautomata.com/robots/ph.melee.ArcherME_0.3.jar&lt;br /&gt;
Polkwane.SmashMelee 1.0,https://dl.dropboxusercontent.com/s/hog8g5km2pu3q1i/Polkwane.SmashMelee_1.0.jar?token_hash=AAEYkudeilgEUEILMqRqcdMrqBYFMaGSzuqXAO6BMVi2gQ&amp;amp;dl=1&lt;br /&gt;
positive.Portia 1.26e,http://robocode-archive.strangeautomata.com/robots/positive.Portia_1.26e.jar&lt;br /&gt;
PSW.Relentless 0.1,http://robocode-archive.strangeautomata.com/robots/PSW.Relentless_0.1.jar&lt;br /&gt;
pulsar.PulsarMax 0.8.9,http://robocode-archive.strangeautomata.com/robots/pulsar.PulsarMax_0.8.9.jar&lt;br /&gt;
qohnil.blot.BlotBot 3.61,http://robocode-archive.strangeautomata.com/robots/qohnil.blot.BlotBot_3.61.jar&lt;br /&gt;
qualidafial.MajorDick 1.0.1,https://www.dropbox.com/sh/n570kf8rsq6fuw2/vVQSIJJnAS/qualidafial.MajorDick_1.0.1.jar?dl=1&lt;br /&gt;
Queens_teamrobot.UltraRazor 1.0,http://robocode-archive.strangeautomata.com/robots/Queens_teamrobot.UltraRazor_1.0.jar&lt;br /&gt;
radnor.DoctorBob 1.42,http://robocode-archive.strangeautomata.com/robots/radnor.DoctorBob_1.42.jar&lt;br /&gt;
rampancy.Durandal 2.1d,http://robocode-archive.strangeautomata.com/robots/rampancy.Durandal_2.1d.jar&lt;br /&gt;
ratosh.Nobo 0.21,http://robocode-archive.strangeautomata.com/robots/ratosh.Nobo_0.21.jar&lt;br /&gt;
ratosh.Wesco 1.4,http://robocode-archive.strangeautomata.com/robots/ratosh.Wesco_1.4.jar&lt;br /&gt;
rdm.Dueler 0.4x,https://drive.google.com/uc?export=download&amp;amp;id=16x234SaadG-76wT0TJhpyDTxdQhO-j3j&lt;br /&gt;
rdt199.Warlord 0.73,http://robocode-archive.strangeautomata.com/robots/rdt199.Warlord_0.73.jar&lt;br /&gt;
repositorio.NanoStep 1.0,http://robocode-archive.strangeautomata.com/robots/repositorio.NanoStep_1.0.jar&lt;br /&gt;
robar.nano.Assertive_Melee 0.2,http://robocode-archive.strangeautomata.com/robots/robar.nano.Assertive_Melee_0.2.jar&lt;br /&gt;
rrh.Iwillfindyou 2.0,https://drive.google.com/uc?export=download&amp;amp;id=1wE-V_PQeMvKLisPmM8s6JEaznXEHYAIt&lt;br /&gt;
rsalesc.roborio.RoborioPorradeiro 1.1b,http://robocode-archive.strangeautomata.com/robots/rsalesc.roborio.RoborioPorradeiro_1.1b.jar&lt;br /&gt;
rsalesc.melee.Medina 0.4.5,http://robocode-archive.strangeautomata.com/robots/rsalesc.melee.Medina_0.4.5.jar&lt;br /&gt;
rsalesc.melee.Monk 0.3.6c,http://robocode-archive.strangeautomata.com/robots/rsalesc.melee.Monk_0.3.6c.jar&lt;br /&gt;
rtk.Tachikoma 1.0,http://robocode-archive.strangeautomata.com/robots/rtk.Tachikoma_1.0.jar&lt;br /&gt;
rz.Aleph 0.34,http://robocode-archive.strangeautomata.com/robots/rz.Aleph_0.34.jar&lt;br /&gt;
rz.GlowBlowMelee 1.4,http://robocode-archive.strangeautomata.com/robots/rz.GlowBlowMelee_1.4.jar&lt;br /&gt;
rz.HawkOnFire 0.1,http://robocode-archive.strangeautomata.com/robots/rz.HawkOnFire_0.1.jar&lt;br /&gt;
sadoner.killer 0.2,http://robocode-archive.strangeautomata.com/robots/sadoner.killer_0.2.jar&lt;br /&gt;
sam.Samspin 1.0,http://robocode-archive.strangeautomata.com/robots/sam.Samspin_1.0.jar&lt;br /&gt;
sample.Corners 1.0,http://robocode-archive.strangeautomata.com/robots/sample.Corners_1.0.jar&lt;br /&gt;
sample.Crazy 1.0,http://robocode-archive.strangeautomata.com/robots/sample.Crazy_1.0.jar&lt;br /&gt;
sample.Fire 1.0,http://robocode-archive.strangeautomata.com/robots/sample.Fire_1.0.jar&lt;br /&gt;
sample.MyFirstJuniorRobot 1.0,http://robocode-archive.strangeautomata.com/robots/sample.MyFirstJuniorRobot_1.0.jar&lt;br /&gt;
sample.MyFirstRobot 1.0,http://robocode-archive.strangeautomata.com/robots/sample.MyFirstRobot_1.0.jar&lt;br /&gt;
sample.RamFire 1.0,http://robocode-archive.strangeautomata.com/robots/sample.RamFire_1.0.jar&lt;br /&gt;
sample.SittingDuck 1.0,http://robocode-archive.strangeautomata.com/robots/sample.SittingDuck_1.0.jar&lt;br /&gt;
sample.SpinBot 1.0,http://robocode-archive.strangeautomata.com/robots/sample.SpinBot_1.0.jar&lt;br /&gt;
sample.Target 1.0,http://robocode-archive.strangeautomata.com/robots/sample.Target_1.0.jar&lt;br /&gt;
sample.Tracker 1.0,http://robocode-archive.strangeautomata.com/robots/sample.Tracker_1.0.jar&lt;br /&gt;
sample.TrackFire 1.0,http://robocode-archive.strangeautomata.com/robots/sample.TrackFire_1.0.jar&lt;br /&gt;
sample.VelociRobot 1.0,http://robocode-archive.strangeautomata.com/robots/sample.VelociRobot_1.0.jar&lt;br /&gt;
sample.Walls 1.0,http://robocode-archive.strangeautomata.com/robots/sample.Walls_1.0.jar&lt;br /&gt;
sanyi.mikrobi.Roberto 1.0,http://robocode-archive.strangeautomata.com/robots/sanyi.mikrobi.Roberto_1.0.jar&lt;br /&gt;
sanja.First 0.1,http://robocode-archive.strangeautomata.com/robots/sanja.First_0.1.jar&lt;br /&gt;
sch.Simone 0.3d,http://robocode-archive.strangeautomata.com/robots/sch.Simone_0.3d.jar&lt;br /&gt;
sgp.JollyNinja 3.53,http://robocode-archive.strangeautomata.com/robots/sgp.JollyNinja_3.53.jar&lt;br /&gt;
SHAM.WOW 1.4,http://robocode-archive.strangeautomata.com/robots/SHAM.WOW_1.4.jar&lt;br /&gt;
sheldor.melee.nano.NaturalScience 1.2.1,https://github.com/sheldor-robocode/jar-files/raw/main/sheldor.melee.nano.NaturalScience_1.2.1.jar&lt;br /&gt;
sheldor.melee.nano.TestMelee 0.1,http://robocode-archive.strangeautomata.com/robots/sheldor.melee.nano.TestMelee_0.1.jar&lt;br /&gt;
sheldor.nano.PointInLineRRAL 1.0.0,http://robocode-archive.strangeautomata.com/robots/sheldor.nano.PointInLineRRAL_1.0.0.jar&lt;br /&gt;
shinh.Entangled 0.3,http://robocode-archive.strangeautomata.com/robots/shinh.Entangled_0.3.jar&lt;br /&gt;
shrub.Silver v048,http://robocode-archive.strangeautomata.com/robots/shrub.Silver_v048.jar&lt;br /&gt;
shrub.Vapour v159,http://robocode-archive.strangeautomata.com/robots/shrub.Vapour_v159.jar&lt;br /&gt;
shu.nitro.LENIN .T34,http://robocode-archive.strangeautomata.com/robots/shu.nitro.LENIN_.T34.jar&lt;br /&gt;
sigterm.Sigterm 1.0,http://robocode-archive.strangeautomata.com/robots/sigterm.Sigterm_1.0.jar&lt;br /&gt;
simonton.micro.Sprout 1.1.3,http://robocode-archive.strangeautomata.com/robots/simonton.micro.Sprout_1.1.3.jar&lt;br /&gt;
simonton.nano.MeleeSeed 1.8,http://robocode-archive.strangeautomata.com/robots/simonton.nano.MeleeSeed_1.8.jar&lt;br /&gt;
simonton.nano.WeekendObsession_Melee 1.0,http://robocode-archive.strangeautomata.com/robots/simonton.nano.WeekendObsession_Melee_1.0.jar&lt;br /&gt;
skm.butterfly 1.0,http://robocode-archive.strangeautomata.com/robots/skm.butterfly_1.0.jar&lt;br /&gt;
skm.Ryubot 1.0,http://robocode-archive.strangeautomata.com/robots/skm.Ryubot_1.0.jar&lt;br /&gt;
skm.PateranBotlock2 1.0,http://robocode-archive.strangeautomata.com/robots/skm.PateranBotlock2_1.0.jar&lt;br /&gt;
spin.Bugstard 0.012b,http://robocode-archive.strangeautomata.com/robots/spin.Bugstard_0.012b.jar?dl=1&lt;br /&gt;
spinnercat.Omen 1.0,http://robocode-archive.strangeautomata.com/robots/spinnercat.Omen_1.0.jar&lt;br /&gt;
spinnercat.micro.Tyger 0.1,http://robocode-archive.strangeautomata.com/robots/spinnercat.micro.Tyger_0.1.jar&lt;br /&gt;
spinnercat.Robovirus 2.718,http://robocode-archive.strangeautomata.com/robots/spinnercat.Robovirus_2.718.jar&lt;br /&gt;
sp.Nanos.Ember 1.1,http://robocode-archive.strangeautomata.com/robots/sp.Nanos.Ember_1.1.jar&lt;br /&gt;
squidM.TentalceMeleeNano 1.1,http://robocode-archive.strangeautomata.com/robots/squidM.TentalceMeleeNano_1.1.jar&lt;br /&gt;
stelo.AreaTargetingBot 1.1,http://robocode-archive.strangeautomata.com/robots/stelo.AreaTargetingBot_1.1.jar&lt;br /&gt;
stelo.IntrinsicVolatility 1.4,http://robocode-archive.strangeautomata.com/robots/stelo.IntrinsicVolatility_1.4.jar&lt;br /&gt;
stelo.Liblix 0.3.1,https://github.com/kimtg/robocode-bots/releases/download/release/stelo.Liblix_0.3.1.jar&lt;br /&gt;
stelo.Lifestealer 1.0,http://robocode-archive.strangeautomata.com/robots/stelo.Lifestealer_1.0.jar&lt;br /&gt;
stelo.Mirror 1.1,http://robocode-archive.strangeautomata.com/robots/stelo.Mirror_1.1.jar&lt;br /&gt;
stelo.MirrorMicro 1.0,http://robocode-archive.strangeautomata.com/robots/stelo.MirrorMicro_1.0.jar&lt;br /&gt;
stelo.MirrorNano 1.3,http://robocode-archive.strangeautomata.com/robots/stelo.MirrorNano_1.3.jar&lt;br /&gt;
stelo.MyAgileRobot 0.2,http://robocode-archive.strangeautomata.com/robots/stelo.MyAgileRobot_0.2.jar&lt;br /&gt;
stelo.PatternRobot 1.0,http://robocode-archive.strangeautomata.com/robots/stelo.PatternRobot_1.0.jar&lt;br /&gt;
stelo.PianistNano 1.2,http://robocode-archive.strangeautomata.com/robots/stelo.PianistNano_1.2.jar&lt;br /&gt;
stelo.RamTrackSurfer 1.2,http://robocode-archive.strangeautomata.com/robots/stelo.RamTrackSurfer_1.2.jar&lt;br /&gt;
stelo.Randomness 1.0,http://robocode-archive.strangeautomata.com/robots/stelo.Randomness_1.0.jar&lt;br /&gt;
stelo.SoJNanoMelee 1.1,http://robocode-archive.strangeautomata.com/robots/stelo.SoJNanoMelee_1.1.jar&lt;br /&gt;
stelo.SoRobotNanoMelee 1.2,http://robocode-archive.strangeautomata.com/robots/stelo.SoRobotNanoMelee_1.2.jar&lt;br /&gt;
stelo.UntouchableNano 1.3,http://robocode-archive.strangeautomata.com/robots/stelo.UntouchableNano_1.3.jar&lt;br /&gt;
stelo.Wang 1.0,http://robocode-archive.strangeautomata.com/robots/stelo.Wang_1.0.jar&lt;br /&gt;
stelo.WangRobot 1.0,http://robocode-archive.strangeautomata.com/robots/stelo.WangRobot_1.0.jar&lt;br /&gt;
step.nanoPri 1.0,http://robocode-archive.strangeautomata.com/robots/step.nanoPri_1.0.jar&lt;br /&gt;
stf.PanzerGeneral 0.1,http://robocode-archive.strangeautomata.com/robots/stf.PanzerGeneral_0.1.jar&lt;br /&gt;
stuff.Vlad 0.1,http://robocode-archive.strangeautomata.com/robots/stuff.Vlad_0.1.jar&lt;br /&gt;
sul.Lunar 1.1,http://robocode-archive.strangeautomata.com/robots/sul.Lunar_1.1.jar&lt;br /&gt;
supersample.SuperBoxBot 1.0,http://robocode-archive.strangeautomata.com/robots/supersample.SuperBoxBot_1.0.jar&lt;br /&gt;
tad.Dalek98 0.98,http://robocode-archive.strangeautomata.com/robots/tad.Dalek98_0.98.jar&lt;br /&gt;
tcf.Reach 3,http://robocode-archive.strangeautomata.com/robots/tcf.Reach_3.jar&lt;br /&gt;
techdude.forest.FlamingForest 1.1,http://robocode-archive.strangeautomata.com/robots/techdude.forest.FlamingForest_1.1.jar&lt;br /&gt;
techdude.kombat.FlamingKombat 1.5,http://robocode-archive.strangeautomata.com/robots/techdude.kombat.FlamingKombat_1.5.jar&lt;br /&gt;
testantiswapgun.AntiSwap 1.0,http://robocode-archive.strangeautomata.com/robots/asd.AntiSwap_1.0.jar&lt;br /&gt;
tex.Longbot 0.4,http://robocode-archive.strangeautomata.com/robots/tex.Longbot_0.4.jar&lt;br /&gt;
throxbot.ThroxBot 0.1,http://robocode-archive.strangeautomata.com/robots/throxbot.ThroxBot_0.1.jar&lt;br /&gt;
timmit.nano.TimDog 0.33,http://robocode-archive.strangeautomata.com/robots/timmit.nano.TimDog_0.33.jar&lt;br /&gt;
tj.zombie1n 1.0.1,http://robocode-archive.strangeautomata.com/robots/tj.zombie1n_1.0.1.jar&lt;br /&gt;
tlp.ThreeLeggedPig 1,http://robocode-archive.strangeautomata.com/robots/tlp.ThreeLeggedPig_1.jar&lt;br /&gt;
tm.Yuugao 1.0,http://robocode-archive.strangeautomata.com/robots/tm.Yuugao_1.0.jar&lt;br /&gt;
tripphippy.Alice 1.1,http://robocode-archive.strangeautomata.com/robots/tripphippy.Alice_1.1.jar&lt;br /&gt;
trm.Wrekt 1.1.6.f,http://robocode-archive.strangeautomata.com/robots/trm.Wrekt_1.1.6.f.jar&lt;br /&gt;
tvv.micro.Antares 1.1.1,http://robocode-archive.strangeautomata.com/robots/tvv.micro.Antares_1.1.1.jar&lt;br /&gt;
tvv.nano.Polaris 1.2,http://robocode-archive.strangeautomata.com/robots/tvv.nano.Polaris_1.2.jar&lt;br /&gt;
tzu.TheArtOfWar 1.2,http://robocode-archive.strangeautomata.com/robots/tzu.TheArtOfWar_1.2.jar&lt;br /&gt;
uji.Antique 1.0,http://robocode-archive.strangeautomata.com/robots/uji.Antique_1.0.jar&lt;br /&gt;
uji.DBH 1.1,http://robocode-archive.strangeautomata.com/robots/uji.DBH_1.1.jar&lt;br /&gt;
uji.YellohFellah 1.0,http://robocode-archive.strangeautomata.com/robots/uji.YellohFellah_1.0.jar&lt;br /&gt;
urdos.URDOS 1.3,http://robocode-archive.strangeautomata.com/robots/urdos.URDOS_1.3.jar&lt;br /&gt;
vjik.UnViolation 1.1,http://robocode-archive.strangeautomata.com/robots/vjik.UnViolation_1.1.jar&lt;br /&gt;
voidious.Diamond 1.8.28,http://robocode-archive.strangeautomata.com/robots/voidious.Diamond_1.8.28.jar&lt;br /&gt;
voidious.micro.BlitzBat 1.05,http://robocode-archive.strangeautomata.com/robots/voidious.micro.BlitzBat_1.05.jar&lt;br /&gt;
voidious.mini.BrokenSword 2.0.3,http://robocode-archive.strangeautomata.com/robots/voidious.mini.BrokenSword_2.0.3.jar&lt;br /&gt;
vStar.RAFzilla 2.15,https://drive.google.com/uc?export=download&amp;amp;id=1mSf7wnoO5VnMdHDCJcC-tT9X7NzIcLJF&lt;br /&gt;
vuen.Cake 2.51,http://robocode-archive.strangeautomata.com/robots/vuen.Cake_2.51.jar&lt;br /&gt;
WarfaJibril.Jibril_Warfa_Andromeda 1.11,http://robocode-archive.strangeautomata.com/robots/WarfaJibril.Jibril_Warfa_Andromeda_1.11.jar&lt;br /&gt;
wcsv.melee.EngineerMelee 0.1,http://robocode-archive.strangeautomata.com/robots/wcsv.melee.EngineerMelee_0.1.jar&lt;br /&gt;
wee.Gem 1.8.4,http://robocode-archive.strangeautomata.com/robots/wee.Gem_1.8.4.jar&lt;br /&gt;
whitesquare.robots.SkynetAdvanced 1.1,https://dl.dropboxusercontent.com/s/6epm51goxqp7p0h/whitesquare.robots.SkynetAdvanced_1.1.jar?dl=1&lt;br /&gt;
winamp32.micro.MicroMacro 1.0,http://robocode-archive.strangeautomata.com/robots/winamp32.micro.MicroMacro_1.0.jar&lt;br /&gt;
wit.Chuliath 1.0,http://robocode-archive.strangeautomata.com/robots/wit.Chuliath_1.0.jar&lt;br /&gt;
wit.Deep7 2.0,http://robocode-archive.strangeautomata.com/robots/wit.Deep7_2.0.jar&lt;br /&gt;
wompi.Numbat 2.1,http://www.casepool.de/robocode/wompi.Numbat_2.1.jar&lt;br /&gt;
wompi.Quokka 1.6,http://www.casepool.de/robocode/wompi.Quokka_1.6.jar&lt;br /&gt;
wompi.Wallaby 5.1,http://www.casepool.de/robocode/wompi.Wallaby_5.1.jar&lt;br /&gt;
yagami.Tidus 0.11,http://robocode-archive.strangeautomata.com/robots/yagami.Tidus_0.11.jar&lt;br /&gt;
yk.JahMicro 1.0,http://robocode-archive.strangeautomata.com/robots/yk.JahMicro_1.0.jar&lt;br /&gt;
yk.JahRoslav 1.1,http://robocode-archive.strangeautomata.com/robots/yk.JahRoslav_1.1.jar&lt;br /&gt;
zyx.mega.YersiniaPestis 3.1,http://robocode-archive.strangeautomata.com/robots/zyx.mega.YersiniaPestis_3.1.jar&lt;br /&gt;
zyx.micro.Ant 1.1,http://robocode-archive.strangeautomata.com/robots/zyx.micro.Ant_1.1.jar&lt;br /&gt;
zyx.nano.Ant 1.1,http://robocode-archive.strangeautomata.com/robots/zyx.nano.Ant_1.1.jar&lt;br /&gt;
zyx.nano.BacillusComma 1.0,http://robocode-archive.strangeautomata.com/robots/zyx.nano.BacillusComma_1.0.jar&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
'''''No chatting on this page. Use the /ParticipantsChat page for that.'''''&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
'''''Removed because the server says: Ignoring. Also client cannot download these'''''&amp;lt;br&amp;gt;&lt;br /&gt;
''traker.Eraser 1,http://lablanchisserie.fr/Parissou/traker.Eraser.jar&lt;br /&gt;
''xyzdev.SimpleJack 1.0,https://xyzdev.webfactional.com/archive/xyzdev.SimpleJack_1.0.jar&lt;br /&gt;
&lt;br /&gt;
'''''Removed because the jarcontent/filename is not correct'''''&amp;lt;br&amp;gt;&lt;br /&gt;
''ary.HelpMeelee 1.0,3624''&amp;lt;br&amp;gt;&lt;br /&gt;
''dmsr.MiniR101 0.6''&amp;lt;br&amp;gt;&lt;br /&gt;
''enriquevilela.TieFighter 0.1,3224''&amp;lt;br&amp;gt;&lt;br /&gt;
''cw.melee.Burner 2.0&amp;lt;br&amp;gt;&lt;br /&gt;
''ROB.TraumaLlama 1.0,https://www.dropbox.com/s/b14r13f4xwc5kj5/ROB.TraumaLlama_1.0.jar?dl=0''&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''Removed because he crashes the vm frequently (mac/linux) 1.6'''''&amp;lt;br&amp;gt;&lt;br /&gt;
''dam.MogBot 2.9,http://www.robocoderepository.com/BotFiles/555/dam.MogBot_2.9.jar&lt;br /&gt;
&lt;br /&gt;
'''''Removed due to WontFix issues in Robocode 1.7+:'''''&amp;lt;br&amp;gt;&lt;br /&gt;
''* Hviela: ([[http://sourceforge.net/tracker/?func=detail&amp;amp;aid=2953268&amp;amp;group_id=37202&amp;amp;atid=419486 SF #2953268]])&amp;lt;br&amp;gt;&lt;br /&gt;
'': hvilela.HVilela 0.9.3,http://henrique.vilela.googlepages.com/hvilela.HVilela_0.9.3.jar''&lt;br /&gt;
&lt;br /&gt;
'''''Removed due to constant timeouts'''''&amp;lt;br&amp;gt;&lt;br /&gt;
''ary.FourWD 1.3c,http://robocode-archive.strangeautomata.com/robots/ary.FourWD_1.3c.jar&amp;lt;br&amp;gt;&lt;br /&gt;
''stelo.Moojuk 1.3,http://robocode-archive.strangeautomata.com/robots/stelo.Moojuk_1.3.jar&lt;br /&gt;
&lt;br /&gt;
'''''Removed due to constant unstoppable and compatibility issue under java 8'''''&amp;lt;br&amp;gt;&lt;br /&gt;
''apc.Caan 1.0,http://robocode-archive.strangeautomata.com/robots/apc.Caan_1.0.jar&lt;br /&gt;
&lt;br /&gt;
'''''Removed due to attempting to read environment variables'''''&amp;lt;br&amp;gt;&lt;br /&gt;
''gm.GaetanoA 2.15,http://robocode-archive.strangeautomata.com/robots/gm.GaetanoA_2.15.jar&lt;br /&gt;
&lt;br /&gt;
'''''Removed due to invalid robot or team'''''&amp;lt;br&amp;gt;&lt;br /&gt;
''stelo.Spread 0.5.2,https://github.com/kimtg/robocode-bots/releases/download/release/stelo.Spread_0.5.2.jar&lt;br /&gt;
''stelo.PastFuture 2.3.1,https://github.com/kimtg/robocode-bots/releases/download/release/stelo.PastFuture_2.3.1.jar&lt;br /&gt;
&lt;br /&gt;
'''Removed due to not working in 1.9.4.2'''&amp;lt;br&amp;gt;&lt;br /&gt;
''abc.tron3.Tron 3.11,http://robocode-archive.strangeautomata.com/robots/abc.tron3.Tron_3.11.jar''&lt;br /&gt;
&lt;br /&gt;
'''Removed due to not working with Java 17. Don't use Java 18. '''&amp;lt;br&amp;gt;&lt;br /&gt;
dylanb.xyz 2.0,https://drive.google.com/uc?export=download&amp;amp;id=18ugz_el8xentgdnPipnK4zGyBOoT3fN9&lt;/div&gt;</summary>
		<author><name>D414</name></author>
		
	</entry>
	<entry>
		<id>http://robowiki.net/w/index.php?title=User:D414/Personal_Gotchas&amp;diff=57902</id>
		<title>User:D414/Personal Gotchas</title>
		<link rel="alternate" type="text/html" href="http://robowiki.net/w/index.php?title=User:D414/Personal_Gotchas&amp;diff=57902"/>
		<updated>2024-05-15T01:15:43Z</updated>

		<summary type="html">&lt;p&gt;D414: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Maximum scan distance=&lt;br /&gt;
It's possible for a scan event to return a number larger than 1216. The largest I've seen is a smidge over 1225.&lt;br /&gt;
&lt;br /&gt;
= Event Priority =&lt;br /&gt;
The documentation for event priorities is unclear. [https://robocode.sourceforge.io/docs/robocode/robocode/AdvancedRobot.html#setEventPriority-java.lang.String-int- setEventPriority] says lower values are higher priority while [https://robocode.sourceforge.io/docs/robocode/robocode/AdvancedRobot.html#getEventPriority-java.lang.String- getEventPriority] says higher values are higher priority. Testing confirms the later is correct. &lt;br /&gt;
&lt;br /&gt;
The documentation also has errors for the default priorities for several events.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Event !! [https://robocode.sourceforge.io/docs/robocode/robocode/AdvancedRobot.html#setEventPriority-java.lang.String-int- setEventPriority] docs !! [https://github.com/robo-code/robocode/tree/VER_1_9_5_2/robocode.api/src/main/java/robocode Source Code (1.9.5.2)]&lt;br /&gt;
|-&lt;br /&gt;
| RoundEndedEvent || 100 || '''110'''&lt;br /&gt;
|-&lt;br /&gt;
| BattleEndedEvent || 100 || 100&lt;br /&gt;
|-&lt;br /&gt;
| WinEvent || 100 || 100&lt;br /&gt;
|-&lt;br /&gt;
| SkippedTurnEvent || 100 || 100&lt;br /&gt;
|-&lt;br /&gt;
| StatusEvent || 99 || 99&lt;br /&gt;
|-&lt;br /&gt;
| Key and Mouse Events || 98 || 98&lt;br /&gt;
|-&lt;br /&gt;
| CustomEvent (Default) || 80 || 80&lt;br /&gt;
|-&lt;br /&gt;
| MessageEvent || 75 || 75&lt;br /&gt;
|-&lt;br /&gt;
| RobotDeathEvent || 70 || 70&lt;br /&gt;
|-&lt;br /&gt;
| BulletMissedEvent || 60 || 60&lt;br /&gt;
|-&lt;br /&gt;
| BulletHitBulletEvent || 55 || 55&lt;br /&gt;
|-&lt;br /&gt;
| BulletHitEvent || 50 || 50&lt;br /&gt;
|-&lt;br /&gt;
| HitByBulletEvent || 40 || '''20'''&lt;br /&gt;
|-&lt;br /&gt;
| HitWallEvent || 30 || 30&lt;br /&gt;
|-&lt;br /&gt;
| HitRobotEvent || 20 || '''40'''&lt;br /&gt;
|-&lt;br /&gt;
| ScannedRobotEvent || 10 || 10&lt;br /&gt;
|-&lt;br /&gt;
| PaintEvent || 5 || 5&lt;br /&gt;
|-&lt;br /&gt;
| DeathEvent || -1 || -1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Execute Method =&lt;br /&gt;
The documentation for the [https://robocode.sourceforge.io/docs/robocode/robocode/AdvancedRobot.html#execute-- execute] method says that it '''must''' be called otherwise set* methods will never be performed. This doesn't seem to be strictly true as a robot that uses set methods to spin its radar, gun and body in the [https://robocode.sourceforge.io/docs/robocode/robocode/Robot.html#run-- run] method will spin even without calling [https://robocode.sourceforge.io/docs/robocode/robocode/AdvancedRobot.html#execute-- execute].&lt;br /&gt;
&lt;br /&gt;
= Skipped Turns =&lt;br /&gt;
The documentation for [https://robocode.sourceforge.io/docs/robocode/robocode/SkippedTurnEvent.html SkippedTurnEvent] says a robot will be removed from the battle after skipping 30 turns however a robot using the example code will skip many more turns than this without being removed from the battle.&lt;br /&gt;
&lt;br /&gt;
= Ramming / ROBOT_HIT_BONUS / HitRobotEvent =&lt;br /&gt;
Based on some quick tests with RamFire vs SittingDuck it looks as though [https://robocode.sourceforge.io/docs/robocode/robocode/Rules.html#ROBOT_HIT_BONUS Rules.ROBOT_HIT_BONUS] isn't actually applied.&lt;br /&gt;
&lt;br /&gt;
It also appears that a ramming robot that gets stopped effectively gets its movement for that turn cancelled and remains in the same position. However, it can still move closer to the target on subsequent turns (Also tested with RamFire vs SittingDuck). This is mostly unimportant except for the case of using a HitRobotEvent to determine the position of an enemy that wasn't scanned that turn (eg in melee or a Droid in a team battle).&lt;/div&gt;</summary>
		<author><name>D414</name></author>
		
	</entry>
	<entry>
		<id>http://robowiki.net/w/index.php?title=Thread:User_talk:Kev/Nice_work_with_Figment&amp;diff=57900</id>
		<title>Thread:User talk:Kev/Nice work with Figment</title>
		<link rel="alternate" type="text/html" href="http://robowiki.net/w/index.php?title=Thread:User_talk:Kev/Nice_work_with_Figment&amp;diff=57900"/>
		<updated>2024-05-14T12:16:44Z</updated>

		<summary type="html">&lt;p&gt;D414: New thread: Nice work with Figment&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;That's a much cleaner port of Mirage's gun than I cobbled together although it looks like there are a few things you could nick from FireHammer to reduce Figment's size a little. I'll probably retire FireHammer later.&lt;/div&gt;</summary>
		<author><name>D414</name></author>
		
	</entry>
	<entry>
		<id>http://robowiki.net/w/index.php?title=User:D414/Diary_of_a_Robocoder&amp;diff=57898</id>
		<title>User:D414/Diary of a Robocoder</title>
		<link rel="alternate" type="text/html" href="http://robowiki.net/w/index.php?title=User:D414/Diary_of_a_Robocoder&amp;diff=57898"/>
		<updated>2024-05-14T07:39:12Z</updated>

		<summary type="html">&lt;p&gt;D414: Quantum now outranks HawkOnFire!&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;; 14th May 2024&lt;br /&gt;
Well, that was unexpected! The minor update to [[Quantum]] that I released reduced the codesize enough to allow me to fix the radar bug I added in v0.2.2 to make room for colours (Each time an opponent died there was a 50% chance the radar would switch directions). That bugfix was worth around 0.7 APS in the micro melee rumble, which was enough to push [[Quantum]] above [[HawkOnFire]]! I'm ''very'' excited to tune the gun...&lt;br /&gt;
&lt;br /&gt;
; 13th May 2024&lt;br /&gt;
ProGuard didn’t manage to shrink [[Quantum]] at all and installing Jikes is a bit of a faff these days (on an Arm MacBook anyway) so I decided to try out [https://github.com/Storyyeller/Krakatau Krakatau] to work with the assembly code directly. It looks like I can make room for the gun to use quite a few attributes - distance, bullet power, number of opponents, lateral velocity and lateral acceleration should all fit. I definitely need to improve on the spaghetti shaped shell scripts I’m using to build and test my bots if I’m going to successfully tune the gun, but I reckon it’ll be worth it. Whether or not it’s enough to outperform [[HawkOnFire]] with a nano remains to be seen, but I’m hopeful.&lt;br /&gt;
&lt;br /&gt;
; 10th May 2024&lt;br /&gt;
[[User:Sheldor2|Sheldor]]'s adaptation of [[Quantum]] (NaturalScience) motivated me to put development of a micro bot on hold. I had space for table based bullet power selection, albeit much simpler than [[User:Sheldor2|Sheldor]]'s, but only found marginal gains and tuning it by hand was both tedious and slow. I did manage to squeeze another 3 bytes out of my code though, bringing [[Quantum]] down to 239 bytes (without colours). There is room now for several different table based approaches but I'm going to need an automated way of tuning them. This leaves me with a nice todo list that will also benefit the development of other bots:&lt;br /&gt;
&lt;br /&gt;
* Try some other compilers, Jikes in particular&lt;br /&gt;
* Add ProGuard to my build scripts&lt;br /&gt;
* Build a test system that allows me to tune tables genetically&lt;br /&gt;
&lt;br /&gt;
; 4th May 2024&lt;br /&gt;
I managed to find another half-dozen or so bytes in [[FireHammer]] which was enough to improve the movement a bit. I've entered it into the rumble and will run some battles overnight so we'll see where it ranks when I wake up in the morning.&lt;br /&gt;
&lt;br /&gt;
Update: Can't complain about top 5 in the micros, although I was hoping to edge out Sprout to make top 3. This has confirmed my belief that a good circular gun is the way to go in a micro; 116 bytes for movement really isn't much to work with!&lt;br /&gt;
&lt;br /&gt;
; 2nd May 2024&lt;br /&gt;
I've finally given [[FireHammer]] a better (but not good) movement without going over 749 bytes. Once I've tidied the code up it will be ready to enter the rumble! I'm torn on whether to release it now versus waiting until I have a minibot ready to challenge [[Mirage]], I don't like to think about how much stronger [[User:Kev|Kev]] could make [[Mirage]] with all the extra space to play with!&lt;br /&gt;
&lt;br /&gt;
; 26th April 2024&lt;br /&gt;
My experimentation with micro sized melee guns is paying off; I've finally managed to squeeze [[Mirage]]'s amazing gun into a micro! The only (intended) functional changes are switching to [[Quantum]]'s bullet power selection and going back to a fixed size for bot width as per [[Mirage]] v0.1.&lt;br /&gt;
&lt;br /&gt;
So far I'm down to 733 bytes from a starting point of 919 (both without colours).&lt;br /&gt;
&lt;br /&gt;
Results are promising despite only spending 21 bytes on movement to move in an [[Infinity]] style box pattern.&lt;br /&gt;
&lt;br /&gt;
; 18th April 2024&lt;br /&gt;
I've started playing around with ideas for an entrant to the micro melee rumble. For now I'm looking at guns and mostly finding that [[DustBunny]]'s gun seems to give excellent performance per byte and is difficult to improve upon. The next best thing seems to be a good implementation of [[Circular Targeting]] but ultimately I think that movement is where the money is.&lt;br /&gt;
&lt;br /&gt;
I should probably turn my attention to finding the most efficient way I can to track enemy state, rather than relying on rolling averages, since the obvious HashMap approach introduces a lot of overhead. I'd also like to see if there's much to gain by switching from a basic nano style radar to something a little bit more sophisticated.&lt;br /&gt;
&lt;br /&gt;
In short, challenging [[Wallaby]] for the micro crown isn't going to be easy!&lt;br /&gt;
&lt;br /&gt;
; 14th April 2024&lt;br /&gt;
It turns out that Quantum is rather competetive! It knocked DustBunny off of the nano melee throne for a few days before settling in to second place. It still achieves a 100% PWIN and has by far the best survival score of any nano melee bot (and it has colours!). If I remove the colours I have 7 bytes to play with but I've not been able to find any changes that make a significant improvement. It would be interesting to see how the table looks once Quantum has run a similar number of battle to the other nanos (currently it's at less than 10%) however my rumble client has stopped working, which is a pain. Once we have internet again I'll see if I can get one of my low power machines setup as a dedicated client.&lt;br /&gt;
&lt;br /&gt;
; 6th April 2024&lt;br /&gt;
I haven't had much time for robocode over the last month but I have been able to experiment a little with a nano melee bot, heavily inspired by [[DustBunny]] and [[Infinity]]. I'm quite pleased with the idea to calculate [[Anti-Gravity Movement|anti-gravity]] forces based on the angle my bot would fire at instead of the angle to the enemy's current position. This bot (Quantum) is my first entry into the [[Roborumble]]!&lt;br /&gt;
&lt;br /&gt;
; 5th March 2024&lt;br /&gt;
My experiments with a nano [[Shadow/Melee Gun]] haven't gotten me the results I'd expected and I got a bit burned out from debugging it so I tried throwing a PM gun on which was okay but nothing to write home about. I think I'm going to experiment with different movements for a while for a change of pace. I've found I enjoy codesize restricted bots much more than megabots - I was getting a bit bogged down in top down development when I was allowed as much code as I liked.&lt;br /&gt;
&lt;br /&gt;
; 28th February 2024&lt;br /&gt;
[[File:Quantum Painting Firing Angles.png|thumb|Targeting everybody at once, Nanobot version!]]&lt;br /&gt;
I've managed to get a (very) basic version of [[Shadow/Melee Gun]] squeezed into my Nanobot. At the moment it only aims (at everybody) with [[Head-On Targeting]] weighted by distance. Once I'm done with bug fixing I think I'll be able to find room to add another gun or two and/or better energy management into the mix.&lt;br /&gt;
&lt;br /&gt;
; 27th February 2024&lt;br /&gt;
For the past couple of evenings I've been playing with nanobots for the first time. I'm interested in developing guns so decided to start by borrowing a movement from somewhere. [[Infinity]] was most appealing because its movement doesn't depend on the radar and only requires 68 bytes. I've managed to shrink the movement code by a further 15 bytes, giving me almost 200 bytes to use for a gun. ::Edit:: I've gotten it down to 35 bytes!&lt;br /&gt;
&lt;br /&gt;
; 23rd February 2024&lt;br /&gt;
I'm wondering if there should be an equivalent page to [[Wave Suffering]] for [[Displacement Vector|Displacement Vectors]]. My early efforts at collecting displacement vectors with a codesize restricted gun have resulted in some interesting and wild arrows being drawn all over the place. I'm making progress but I'm sure that subtle bugs will continue to be found for quite some time. Still not sure I'll make it work with enough space left to pair it with decent movement but the experience will be helpful either way.&lt;br /&gt;
&lt;br /&gt;
; 19th February 2024&lt;br /&gt;
[[File:Risk Function Painting.png|thumb|A picture is worth a thousand words]]&lt;br /&gt;
Over the last couple of days I've fallen face first into the &amp;lt;big&amp;gt;''pit of premature optimisation''&amp;lt;/big&amp;gt;. I noticed some interesting behaviour emerging as a result of my risk function and got carried away tweaking parameters and adding cobbled together versions of bits of code I'd not implemented in the hope of perfecting it. This predictably led to another pile of spaghetti code that needs (another) rewrite. /sigh.&lt;br /&gt;
&lt;br /&gt;
; 15th February 2024&lt;br /&gt;
My experimental bot had become a pile of spaghetti so it got a rewrite today. I'm still pleased with core design principle, especially given how quickly I was able to experiment with an idea I've not seen mentioned on the wiki before (no spoilers :p). My initial assessment is that it shows promise but definitely needs refinement as my bot now has the tendency under certain conditions to turn into a melee rambot...&lt;br /&gt;
&lt;br /&gt;
; 14th February 2024&lt;br /&gt;
My Robocoding time has been quite sporadic lately so it's been difficult to make progress on the ideas I have for a build system, testing framework and modular robot class. On the one hand that's disappointing because it's greatly slowing my efforts to develop an advanced melee contender however a few throwaway experiments have led to some interesting ideas for movement in mini (or possibly even micro) bots.&lt;br /&gt;
&lt;br /&gt;
The movement appears to be doing a good job at evaluating risk despite using a spinning radar and tracking very little information on enemies. The code is a bit buggy and needs some improvement but I think a half-decent gun could be implemented that mostly reuses the movement code, which is very interesting.&lt;br /&gt;
&lt;br /&gt;
At the very least the graphics displaying the risk evaluation are very satisfying to watch, even if these experiments don't find their way into a released bot.&lt;/div&gt;</summary>
		<author><name>D414</name></author>
		
	</entry>
	<entry>
		<id>http://robowiki.net/w/index.php?title=Quantum/Source_(Java)&amp;diff=57897</id>
		<title>Quantum/Source (Java)</title>
		<link rel="alternate" type="text/html" href="http://robowiki.net/w/index.php?title=Quantum/Source_(Java)&amp;diff=57897"/>
		<updated>2024-05-14T06:05:47Z</updated>

		<summary type="html">&lt;p&gt;D414: Update source code to v0.2.3&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
// -------------------------------------------------------------------------------------------------&lt;br /&gt;
// ==============&lt;br /&gt;
// Quantum (Nano)&lt;br /&gt;
// ==============&lt;br /&gt;
// Author: David414&lt;br /&gt;
// License: RWPCL (https://robowiki.net/wiki/RWPCL)&lt;br /&gt;
// -------------------------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
// -------------------------------------------------------------------------------------------------&lt;br /&gt;
// Credits&lt;br /&gt;
// -------------------------------------------------------------------------------------------------&lt;br /&gt;
// Quantum started out life as a tweaked version of Mike Dorgan's DustBunny before being heavily&lt;br /&gt;
// shrunk to make room for improved target tracking (inspired by Infinity, also by Mike).&lt;br /&gt;
&lt;br /&gt;
// -------------------------------------------------------------------------------------------------&lt;br /&gt;
// Version History&lt;br /&gt;
// -------------------------------------------------------------------------------------------------&lt;br /&gt;
// =================================================================================================&lt;br /&gt;
// v0.2.2 (2024-04-06) Codesize: 249  | Colors: Yes | 1v1 capable: No&lt;br /&gt;
// =================================================================================================&lt;br /&gt;
// - Antigravity movement based on DustBunny, but with forces calculated based on&lt;br /&gt;
//   where we would aim to hit the enemy, rather than where they currently are&lt;br /&gt;
// - Aim like DustBunny but with different energy management based only on how&lt;br /&gt;
//   many enemies are still alive. Fire more agressively early on and much less&lt;br /&gt;
//   agressively in 1v1&lt;br /&gt;
// - Quite a bit of code shrinking to make room for Infinity style target tracking&lt;br /&gt;
//&lt;br /&gt;
// =================================================================================================&lt;br /&gt;
// v0.2.2a (2024-04-11) Codesize: 249  | Colors: Yes | 1v1 capable: No&lt;br /&gt;
// =================================================================================================&lt;br /&gt;
// - No functional changes, added credits, version history and commented the code&lt;br /&gt;
//&lt;br /&gt;
// =================================================================================================&lt;br /&gt;
// v0.2.3 (2024-05-14) Codesize: 245  | Colors: Yes | 1v1 capable: No&lt;br /&gt;
// =================================================================================================&lt;br /&gt;
// - Change to int for distance and targetDistance variables&lt;br /&gt;
// - Switch to a gunHeat radar lock that doesn't require an if statement&lt;br /&gt;
// - Switch from setTurnRight to setTurnLeft&lt;br /&gt;
&lt;br /&gt;
package d414.nano;&lt;br /&gt;
&lt;br /&gt;
import robocode.*;&lt;br /&gt;
import robocode.util.Utils;&lt;br /&gt;
&lt;br /&gt;
import java.awt.Color;&lt;br /&gt;
&lt;br /&gt;
public class Quantum extends AdvancedRobot {&lt;br /&gt;
    // ---------------------------------------------------------------------------------------------&lt;br /&gt;
    // Tuning Knobs&lt;br /&gt;
    // ---------------------------------------------------------------------------------------------&lt;br /&gt;
    static final double WALL_FORCE = 1.0;&lt;br /&gt;
    static final double AGRAV_DECAY = 0.9;&lt;br /&gt;
    static final double AHEAD_AMOUNT = 120.0;&lt;br /&gt;
&lt;br /&gt;
    static final double AIM_START = 10.0;&lt;br /&gt;
    static final double AIM_FACTOR = 1.008;&lt;br /&gt;
    static final double RADAR_LOCK_THRESHOLD = 1.0;&lt;br /&gt;
    static final int POWER_FACTOR = 2;&lt;br /&gt;
&lt;br /&gt;
    // ---------------------------------------------------------------------------------------------&lt;br /&gt;
    // Globals&lt;br /&gt;
    // ---------------------------------------------------------------------------------------------&lt;br /&gt;
    static String targetName;&lt;br /&gt;
    static int targetDistance;&lt;br /&gt;
    static double xForce;&lt;br /&gt;
    static double yForce;&lt;br /&gt;
&lt;br /&gt;
    @Override&lt;br /&gt;
    public void run() {&lt;br /&gt;
        setAllColors(Color.cyan);&lt;br /&gt;
        setAdjustGunForRobotTurn(true);&lt;br /&gt;
        onRobotDeath(null);&lt;br /&gt;
        setTurnRadarRight(Double.POSITIVE_INFINITY);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    @Override&lt;br /&gt;
    public void onRobotDeath(RobotDeathEvent r1e) {&lt;br /&gt;
        targetDistance = Integer.MAX_VALUE;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    @Override&lt;br /&gt;
    public void onScannedRobot(ScannedRobotEvent r1e) {&lt;br /&gt;
        int r2i;&lt;br /&gt;
        double r3d;&lt;br /&gt;
&lt;br /&gt;
        setTurnLeftRadians(Utils.normalRelativeAngle(&lt;br /&gt;
                    (r3d = getHeadingRadians())&lt;br /&gt;
                    - Math.atan2(&lt;br /&gt;
                        (xForce = xForce * AGRAV_DECAY&lt;br /&gt;
                         - Math.sin(r3d = (r3d += r1e.getBearingRadians())&lt;br /&gt;
                             + (r1e.getVelocity()&lt;br /&gt;
                                 * Math.sin(r1e.getHeadingRadians() - r3d)&lt;br /&gt;
                                 / (AIM_START + Math.pow(AIM_FACTOR, r2i = (int)r1e.getDistance()))&lt;br /&gt;
                               )&lt;br /&gt;
                             ) / r2i&lt;br /&gt;
                        )&lt;br /&gt;
                        + calcWallForce(getX())&lt;br /&gt;
                        , &lt;br /&gt;
                        (yForce = yForce * AGRAV_DECAY - Math.cos(r3d) / r2i)&lt;br /&gt;
                        + calcWallForce(getY())&lt;br /&gt;
                        )&lt;br /&gt;
                    ));&lt;br /&gt;
        setAhead(AHEAD_AMOUNT - Math.abs(getTurnRemaining()));&lt;br /&gt;
&lt;br /&gt;
        if (r2i &amp;lt; targetDistance || r1e.getName() == targetName) {&lt;br /&gt;
            targetName = r1e.getName();&lt;br /&gt;
            targetDistance = r2i;&lt;br /&gt;
&lt;br /&gt;
            setTurnRadarRight((getGunHeat() - RADAR_LOCK_THRESHOLD) * getRadarTurnRemaining());&lt;br /&gt;
            setFire(getOthers() / POWER_FACTOR);&lt;br /&gt;
            setTurnGunRightRadians(Utils.normalRelativeAngle(r3d - getGunHeadingRadians()));&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public static double calcWallForce(double r0d) {&lt;br /&gt;
        return (WALL_FORCE / r0d) - (WALL_FORCE / (1000 - r0d));&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>D414</name></author>
		
	</entry>
	<entry>
		<id>http://robowiki.net/w/index.php?title=RoboRumble/Participants/Melee&amp;diff=57896</id>
		<title>RoboRumble/Participants/Melee</title>
		<link rel="alternate" type="text/html" href="http://robowiki.net/w/index.php?title=RoboRumble/Participants/Melee&amp;diff=57896"/>
		<updated>2024-05-13T23:43:46Z</updated>

		<summary type="html">&lt;p&gt;D414: Minor update to Quantum&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{:RoboRumble/Navigation}}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Just add your bot name ('''as appears in the Robocode selector after packaging''', so including versionnumber) and the download link by &amp;quot;,&amp;quot; (there must be no space after the comma).&lt;br /&gt;
&lt;br /&gt;
The list is in '''alphabetical''' order. Add your bot in the right slot.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;For your bot to be accepted by the RR@Home server, the following rules are mandatory:&amp;lt;/span&amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
* The bot must have a package-name.&lt;br /&gt;
* The bot must be packaged in a jar-file.&lt;br /&gt;
* A &amp;lt;botname&amp;gt;.properties file must be present in the jar-file.&lt;br /&gt;
* The naming of the bot must reflect the internal structure, see [http://home.versatel.nl/gheijenk/plaatjes/bot_naming.png]for sample.RamFire.&lt;br /&gt;
* '''&amp;lt;font color=&amp;quot;#CA0813&amp;quot;&amp;gt;The bot should be compatible with Java 17&amp;lt;/font&amp;gt; (Don't compile your code with Java 18 or newer versions)'''&lt;br /&gt;
&lt;br /&gt;
The easiest way to do this is to package your bot with Robocode (Robot -&amp;gt; Package robot for upload).&lt;br /&gt;
&lt;br /&gt;
'''PLEASE MAKE SURE YOUR BOT IS NOT ALREADY ON THE LIST BEFORE YOU ADD IT.&amp;lt;br&amp;gt;IF YOU ARE ADDING A NEW VERSION OF YOUR BOT, PLEASE DELETE THE OLD ONE.'''&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
aaa.r.ScalarR 0.005g.047,https://drive.google.com/uc?export=download&amp;amp;id=1RtyCnpE6XI_WHHvJwjj2brqFPvfgX9Uv&lt;br /&gt;
abc.Shadow 3.84i,http://robocode-archive.strangeautomata.com/robots/abc.Shadow_3.84i.jar&lt;br /&gt;
abud.ThirdRobo 1.0,http://robocode-archive.strangeautomata.com/robots/abud.ThirdRobo_1.0.jar&lt;br /&gt;
acogdev.alpha 0.2,http://robocode-archive.strangeautomata.com/robots/acogdev.alpha_0.2.jar&lt;br /&gt;
adt.Ar1 2.1,http://robocode-archive.strangeautomata.com/robots/adt.Ar1_2.1.jar&lt;br /&gt;
adt.Ar2 1.0,http://robocode-archive.strangeautomata.com/robots/adt.Ar2_1.0.jar&lt;br /&gt;
adt.Ar2 1.1,http://robocode-archive.strangeautomata.com/robots/adt.Ar2_1.1.jar&lt;br /&gt;
agd.Mooserwirt2 2.7,http://robocode-archive.strangeautomata.com/robots/agd.Mooserwirt2_2.7.jar&lt;br /&gt;
agrach.Dalek 1.0,https://github.com/aleksey-zhidkov/rc-repo-mirror/raw/master/agrach.Dalek_1.0.jar&lt;br /&gt;
ags.surreptitious.MiniSurreptitious 0.0.1,http://robocode-archive.strangeautomata.com/robots/ags.surreptitious.MiniSurreptitious_0.0.1.jar&lt;br /&gt;
ags.Glacier 0.2.11,http://robocode-archive.strangeautomata.com/robots/ags.Glacier_0.2.11.jar&lt;br /&gt;
ahf.NanoAndrew .4,http://robocode-archive.strangeautomata.com/robots/ahf.NanoAndrew_.4.jar&lt;br /&gt;
ahr.ice.Ice 1.0.2,http://robocode-archive.strangeautomata.com/robots/ahr.ice.Ice_1.0.2.jar&lt;br /&gt;
ak.Fermat 2.0,http://robocode-archive.strangeautomata.com/robots/ak.Fermat_2.0.jar&lt;br /&gt;
alpha.BlackIce 1.0,http://robocode-archive.strangeautomata.com/robots/alpha.BlackIce_1.0.jar&lt;br /&gt;
alpha.RainingFire 1.0,http://robocode-archive.strangeautomata.com/robots/alpha.RainingFire_1.0.jar&lt;br /&gt;
amk.ChumbaMini 0.2,http://robocode-archive.strangeautomata.com/robots/amk.ChumbaMini_0.2.jar&lt;br /&gt;
amk.ChumbaWumba 0.3,http://robocode-archive.strangeautomata.com/robots/amk.ChumbaWumba_0.3.jar&lt;br /&gt;
amk.jointstrike.JointStrike 0.2,http://robocode-archive.strangeautomata.com/robots/amk.jointstrike.JointStrike_0.2.jar&lt;br /&gt;
amk.ShizzleStiX.ShizzleStiX 0.6,http://robocode-archive.strangeautomata.com/robots/amk.ShizzleStiX.ShizzleStiX_0.6.jar&lt;br /&gt;
amk.superstrike.SuperStrike 0.3,http://robocode-archive.strangeautomata.com/robots/amk.superstrike.SuperStrike_0.3.jar&lt;br /&gt;
amk.Punbot.Punbot 0.01,http://robocode-archive.strangeautomata.com/robots/amk.Punbot.Punbot_0.01.jar&lt;br /&gt;
amz.NanoClone 1.41,http://robocode-archive.strangeautomata.com/robots/amz.NanoClone_1.41.jar&lt;br /&gt;
ap.Frederick 1.1,http://robocode-archive.strangeautomata.com/robots/ap.Frederick_1.1.jar&lt;br /&gt;
apc.botM 3.0,http://robocode-archive.strangeautomata.com/robots/apc.botM_3.0.jar&lt;br /&gt;
apc.Colossus2 0.17,http://robocode-archive.strangeautomata.com/robots/apc.Colossus2_0.17.jar&lt;br /&gt;
apc.LeeroyJenkins2 1.0,http://robocode-archive.strangeautomata.com/robots/apc.LeeroyJenkins2_1.0.jar&lt;br /&gt;
apollokidd.ApolloKidd 0.9,http://robocode-archive.strangeautomata.com/robots/apollokidd.ApolloKidd_0.9.jar&lt;br /&gt;
ara.Shera 0.88,http://robocode-archive.strangeautomata.com/robots/ara.Shera_0.88.jar&lt;br /&gt;
arthord.MannyPacquiao Beta,http://robocode-archive.strangeautomata.com/robots/arthord.MannyPacquiao_Beta.jar&lt;br /&gt;
arthord.NanoSatanMelee Beta,http://robocode-archive.strangeautomata.com/robots/arthord.NanoSatanMelee_Beta.jar&lt;br /&gt;
ary.Swarm 1.1,http://robocode-archive.strangeautomata.com/robots/ary.Swarm_1.1.jar&lt;br /&gt;
as.FrankTheTank 1.3,http://robocode-archive.strangeautomata.com/robots/as.FrankTheTank_1.3.jar&lt;br /&gt;
asd.Cthulhu 1.3,http://robocode-archive.strangeautomata.com/robots/asd.Cthulhu_1.3.jar&lt;br /&gt;
awesomeness.Elite 1.0,http://robocode-archive.strangeautomata.com/robots/awesomeness.Elite_1.0.jar&lt;br /&gt;
axeBots.HataMoto 3.09,http://robocode-archive.strangeautomata.com/robots/axeBots.HataMoto_3.09.jar&lt;br /&gt;
ayk.WallHugger 1.0,http://robocode-archive.strangeautomata.com/robots/ayk.WallHugger_1.0.jar&lt;br /&gt;
az.Ololobot 0.2.4,https://github.com/alexei-zayakin/robocode/raw/master/az.Ololobot_0.2.4.jar&lt;br /&gt;
baal.nano.N 1.42,http://robocode-archive.strangeautomata.com/robots/baal.nano.N_1.42.jar&lt;br /&gt;
bayen.nut.Squirrel 1.615,http://robocode-archive.strangeautomata.com/robots/bayen.nut.Squirrel_1.615.jar&lt;br /&gt;
bayen.UbaMicro 1.4,http://robocode-archive.strangeautomata.com/robots/bayen.UbaMicro_1.4.jar&lt;br /&gt;
bigpete.Stewie 1.0,http://robocode-archive.strangeautomata.com/robots/bigpete.Stewie_1.0.jar&lt;br /&gt;
br2.MobyDickBot 1.6,http://robocode-archive.strangeautomata.com/robots/br2.MobyDickBot_1.6.jar&lt;br /&gt;
brainfade.melee.Dusk 0.44,http://robocode-archive.strangeautomata.com/robots/brainfade.melee.Dusk_0.44.jar&lt;br /&gt;
brainfade.melee.Genghis 0.36,http://robocode-archive.strangeautomata.com/robots/brainfade.melee.Genghis_0.36.jar&lt;br /&gt;
bts.mega.Gnarly 1.4,http://robocode-archive.strangeautomata.com/robots/bts.mega.Gnarly_1.4.jar&lt;br /&gt;
bts.wiki.RipCurl 0.9b,http://robocode-archive.strangeautomata.com/robots/bts.wiki.RipCurl_0.9b.jar&lt;br /&gt;
bvh.fnr.Fenrir 0.36l,http://robocode-archive.strangeautomata.com/robots/bvh.fnr.Fenrir_0.36l.jar&lt;br /&gt;
bvh.fry.Freya 0.82,http://robocode-archive.strangeautomata.com/robots/bvh.fry.Freya_0.82.jar&lt;br /&gt;
bvh.micro.Freya 0.3,http://robocode-archive.strangeautomata.com/robots/bvh.micro.Freya_0.3.jar&lt;br /&gt;
bvh.mini.Fenrir 0.39,http://robocode-archive.strangeautomata.com/robots/bvh.mini.Fenrir_0.39.jar&lt;br /&gt;
bvh.mini.Freya 0.55,http://robocode-archive.strangeautomata.com/robots/bvh.mini.Freya_0.55.jar&lt;br /&gt;
bwbaugh.nano.Tirunculus 0.0.0a,http://robocode-archive.strangeautomata.com/robots/bwbaugh.nano.Tirunculus_0.0.0a.jar&lt;br /&gt;
bzdp.BoxCar 2.0,http://robocode-archive.strangeautomata.com/robots/bzdp.BoxCar_2.0.jar&lt;br /&gt;
bzdp.Pansy 2.1,http://robocode-archive.strangeautomata.com/robots/bzdp.Pansy_2.1.jar&lt;br /&gt;
caimano.Furia_Ceca 0.22,http://robocode-archive.strangeautomata.com/robots/caimano.Furia_Ceca_0.22.jar&lt;br /&gt;
catcat20.Lambda 0.024,https://drive.google.com/uc?export=download&amp;amp;id=1KgQRpAJVYtrnX_M0YCUT3iS1SjInSvcX&lt;br /&gt;
catcat20.Rabbit 0.001,https://drive.google.com/uc?export=download&amp;amp;id=1Cz81GQX7u9qe0muFXWx4qm-lNOA0MXeE&lt;br /&gt;
catcat20.shape.Theta 0.018,https://drive.google.com/uc?export=download&amp;amp;id=1EXcQ5PlX7m2alnvlISipPF2ywsWPMSA0&lt;br /&gt;
cb.fire.Firestarter 2.0f,https://www.dropbox.com/s/96qhyuh648ufuju/cb.fire.Firestarter_2.0f.jar?dl=1&lt;br /&gt;
cb.nano.Insomnia 1.0,https://www.dropbox.com/s/3sl5bz9knsgxewe/cb.nano.Insomnia_1.0.jar?dl=1&lt;br /&gt;
cf.RiO.RiOx 4.2.1,http://robocode-archive.strangeautomata.com/robots/cf.RiO.RiOx_4.2.1.jar&lt;br /&gt;
cli.Dancer 1.1,http://robocode-archive.strangeautomata.com/robots/cli.Dancer_1.1.jar&lt;br /&gt;
cli.WasteOfAmmo 1.0,http://robocode-archive.strangeautomata.com/robots/cli.WasteOfAmmo_1.0.jar&lt;br /&gt;
co.edu.usb.rc.LidisTron 1.0,http://robocode-archive.strangeautomata.com/robots/co.edu.usb.rc.LidisTron_1.0.jar&lt;br /&gt;
com.blogspot.malinkody.DestrobotMalin 1.0,http://robocode-archive.strangeautomata.com/robots/com.blogspot.malinkody.DestrobotMalin_1.0.jar&lt;br /&gt;
com.cgarias.rc.AdvancedTrackerII 1.0,http://robocode-archive.strangeautomata.com/robots/com.cgarias.rc.AdvancedTrackerII_1.0.jar&lt;br /&gt;
com.cohesiva.robocode.ManOwaR 1.0,http://robocode-archive.strangeautomata.com/robots/com.cohesiva.robocode.ManOwaR_1.0.jar&lt;br /&gt;
com.spp.robocode.MostlyHarmless 010,https://drive.google.com/u/0/uc?id=1VAJUrVH2LCj94MJyQXBL9w8NtNeSoCtm&amp;amp;export=download&lt;br /&gt;
com.syncleus.robocode.Dreadnaught 0.1,http://robocode-archive.strangeautomata.com/robots/com.syncleus.robocode.Dreadnaught_0.1.jar&lt;br /&gt;
conscience.Electron 1.3g,http://robocode-archive.strangeautomata.com/robots/conscience.Electron_1.3g.jar&lt;br /&gt;
cre.Karolos 0.32,http://robocode-archive.strangeautomata.com/robots/cre.Karolos_0.32.jar&lt;br /&gt;
cs.Grudge 1.0,http://robocode-archive.strangeautomata.com/robots/cs.Grudge_1.0.jar&lt;br /&gt;
cs.sheldor.Talon 1.1,http://robocode-archive.strangeautomata.com/robots/cs.sheldor.Talon_1.1.jar&lt;br /&gt;
cs.Wren 1.0,http://robocode-archive.strangeautomata.com/robots/cs.Wren_1.0.jar&lt;br /&gt;
css.Delitioner 0.11,http://robocode-archive.strangeautomata.com/robots/css.Delitioner_0.11.jar&lt;br /&gt;
cvt.Firsty 1.0,http://robocode-archive.strangeautomata.com/robots/cvt.Firsty_1.0.jar&lt;br /&gt;
cw.megas.Blade 0.8,http://robocode-archive.strangeautomata.com/robots/cw.megas.Blade_0.8.jar&lt;br /&gt;
cx.BlestPain 1.41,http://robocode-archive.strangeautomata.com/robots/cx.BlestPain_1.41.jar&lt;br /&gt;
cx.mini.Nimrod 0.55,http://robocode-archive.strangeautomata.com/robots/cx.mini.Nimrod_0.55.jar&lt;br /&gt;
cx.Princess 1.0,http://robocode-archive.strangeautomata.com/robots/cx.Princess_1.0.jar&lt;br /&gt;
d414.micro.FireHammer 0.3.1,https://drive.google.com/uc?export=download&amp;amp;id=1ccql_6rwcq8FIKpvIOeeEGU9IZIBCX3g&lt;br /&gt;
d414.nano.Quantum 0.2.3,https://drive.google.com/uc?export=download&amp;amp;id=1uYG260wPwhHyuSeEojcLvuAILMYtWfvr&lt;br /&gt;
dans.Cinnamon 1.2,http://robocode-archive.strangeautomata.com/robots/dans.Cinnamon_1.2.jar&lt;br /&gt;
darkcanuck.B26354 1.06,http://robocode-archive.strangeautomata.com/robots/darkcanuck.B26354_1.06.jar&lt;br /&gt;
darkcanuck.Leon 1.01,http://robocode-archive.strangeautomata.com/robots/darkcanuck.Leon_1.01.jar&lt;br /&gt;
darwinsnightmare.DNGEN474UI85390C20S0R528 1.0,http://robocode-archive.strangeautomata.com/robots/darwinsnightmare.DNGEN474UI85390C20S0R528_1.0.jar&lt;br /&gt;
davidalves.net.DuelistMicroMelee 1.4,http://robocode-archive.strangeautomata.com/robots/davidalves.net.DuelistMicroMelee_1.4.jar&lt;br /&gt;
davidalves.net.DuelistMiniMelee 1.2,http://robocode-archive.strangeautomata.com/robots/davidalves.net.DuelistMiniMelee_1.2.jar&lt;br /&gt;
davidalves.net.DuelistNanoMelee 1.01,http://robocode-archive.strangeautomata.com/robots/davidalves.net.DuelistNanoMelee_1.01.jar&lt;br /&gt;
davidalves.Phoenix 0.54,https://github.com/aleksey-zhidkov/rc-repo-mirror/raw/master/davidalves.Phoenix_0.54.jar&lt;br /&gt;
DBall.Anarchy 0.1,http://robocode-archive.strangeautomata.com/robots/DBall.Anarchy_0.1.jar&lt;br /&gt;
DBall.NUKE 0.1,http://robocode-archive.strangeautomata.com/robots/DBall.NUKE_0.1.jar&lt;br /&gt;
dcs.Eater_of_Worlds 1.1.3-A,http://robocode-archive.strangeautomata.com/robots/dcs.Eater_of_Worlds_1.1.3-A.jar&lt;br /&gt;
deewiant.Anomaly 0.2,http://robocode-archive.strangeautomata.com/robots/deewiant.Anomaly_0.2.jar&lt;br /&gt;
de.simpleworks.robocode.bots.swiBot 1.0,http://robocode-archive.strangeautomata.com/robots/de.simpleworks.robocode.bots.swiBot_1.0.jar&lt;br /&gt;
de.simpleworks.robocode.bots.swiBot 1.1,http://robocode-archive.strangeautomata.com/robots/de.simpleworks.robocode.bots.swiBot_1.1.jar&lt;br /&gt;
dft.Calliope 5.6,http://robocode-archive.strangeautomata.com/robots/dft.Calliope_5.6.jar&lt;br /&gt;
disan.Chair 2.2.0,http://robocode-archive.strangeautomata.com/robots/disan.Chair_2.2.0.jar&lt;br /&gt;
divineomega.DivineBot 1.9.4.5,https://dl.dropboxusercontent.com/s/sk33qkpx7cfcmv6/divineomega.DivineBot_1.9.4.5.jar?dl=1&amp;amp;token_hash=AAGI4C3Fm8km-0aLNU3pUVE1JEZqx8UDV6qk5s8PoRgjhg&lt;br /&gt;
divineomega.TrialBot 0.003,https://dl.dropboxusercontent.com/s/an44muntp8f0p6h/divineomega.TrialBot_0.003.jar?token_hash=AAG5XTuv2fkEkTYhNIEJ0zre-SpWgK-jvKNqQ120pFeYSA&amp;amp;dl=1&lt;br /&gt;
djc.DynaBot 0.1.1,http://robocode-archive.strangeautomata.com/robots/djc.DynaBot_0.1.1.jar&lt;br /&gt;
djdjdj.NanoSkunk10 1.0,http://robocode-archive.strangeautomata.com/robots/djdjdj.NanoSkunk10_1.0.jar&lt;br /&gt;
dl.BetterWalls 1.0,http://robocode-archive.strangeautomata.com/robots/dl.BetterWalls_1.0.jar&lt;br /&gt;
dmh.robocode.robot.BlackDeath 9.2,https://www.dropbox.com/s/tads4vk7jrgmv6u/dmh.robocode.robot.BlackDeath_9.2.jar?dl=1&lt;br /&gt;
dmh.robocode.robot.RedDwarf 0.4,https://www.dropbox.com/s/n0k5n5iyr66ssut/dmh.robocode.robot.RedDwarf_0.4.jar?dl=1&lt;br /&gt;
donjezza.Jezza 1.0,http://robocode-archive.strangeautomata.com/robots/donjezza.Jezza_1.0.jar&lt;br /&gt;
donjezza.Muncho 1.0,http://robocode-archive.strangeautomata.com/robots/donjezza.Muncho_1.0.jar&lt;br /&gt;
drd.Dreadknoght 0.9,http://robocode-archive.strangeautomata.com/robots/drd.Dreadknoght_0.9.jar&lt;br /&gt;
ds.Oo 2.2,http://robocode-archive.strangeautomata.com/robots/ds.Oo_2.2.jar&lt;br /&gt;
dsw.StaticD 1.0,http://robocode-archive.strangeautomata.com/robots/dsw.StaticD_1.0.jar&lt;br /&gt;
DTF.Kludgy 1.2b,http://robocode-archive.strangeautomata.com/robots/DTF.Kludgy_1.2b.jar&lt;br /&gt;
dummy.micro.Sparrow 2.5,http://robocode-archive.strangeautomata.com/robots/dummy.micro.Sparrow_2.5.jar&lt;br /&gt;
dummy.mini.Scimitar 1.01,http://robocode-archive.strangeautomata.com/robots/dummy.mini.Scimitar_1.01.jar&lt;br /&gt;
EBBU.Sim2 1.02,http://robocode-archive.strangeautomata.com/robots/EBBU.Sim2_1.02.jar&lt;br /&gt;
edu.otg.spr.TheTeacher 1.2,http://robocode-archive.strangeautomata.com/robots/edu.otg.spr.TheTeacher_1.2.jar&lt;br /&gt;
eem.EvBot v4.6.16,http://robocode-archive.strangeautomata.com/robots/eem.EvBot_v4.6.16.jar&lt;br /&gt;
eem.EvBotNG v12.8,http://robocode-archive.strangeautomata.com/robots/eem.EvBotNG_v12.8.jar&lt;br /&gt;
eem.IWillFireNoBullet v2.8,http://robocode-archive.strangeautomata.com/robots/eem.IWillFireNoBullet_v2.8.jar&lt;br /&gt;
EH.Eagle 1.0.6,http://robocode-archive.strangeautomata.com/robots/EH.Eagle_1.0.6.jar&lt;br /&gt;
ejb.Polaris 1.0.1,http://robocode-archive.strangeautomata.com/robots/ejb.Polaris_1.0.1.jar&lt;br /&gt;
el.JumpShoot 0.2,http://robocode-archive.strangeautomata.com/robots/el.JumpShoot_0.2.jar&lt;br /&gt;
eld.Hmm 1.0,http://robocode-archive.strangeautomata.com/robots/eld.Hmm_1.0.jar&lt;br /&gt;
emp.Yngwie 1.11,http://robocode-archive.strangeautomata.com/robots/emp.Yngwie_1.11.jar&lt;br /&gt;
erdnis.Rover 0.3,http://robocode-archive.strangeautomata.com/robots/erdnis.Rover_0.3.jar&lt;br /&gt;
et.Predator 1.8,http://robocode-archive.strangeautomata.com/robots/et.Predator_1.8.jar&lt;br /&gt;
evd.X1 0.01,http://robocode-archive.strangeautomata.com/robots/evd.X1_0.01.jar&lt;br /&gt;
exauge.GateKeeper 1.1.121g,http://robocode-archive.strangeautomata.com/robots/exauge.GateKeeper_1.1.121g.jar&lt;br /&gt;
fire219.CatBot 1.0,https://dl.dropbox.com/s/bhboah2ps3r9xuj/fire219.CatBot_1.0.jar?dl=0&lt;br /&gt;
florent.XSeries.X2 0.12,http://wesley3.free.fr/florent.XSeries.X2_0.12.jar&lt;br /&gt;
fm.claire 1.7,http://robocode-archive.strangeautomata.com/robots/fm.claire_1.7.jar&lt;br /&gt;
fm.mammillarias 1.3,http://robocode-archive.strangeautomata.com/robots/fm.mammillarias_1.3.jar&lt;br /&gt;
fnc.bandit.Bandit 5.2.0,http://robocode-archive.strangeautomata.com/robots/fnc.bandit.Bandit_5.2.0.jar&lt;br /&gt;
fowl3628800.LightningBolt 2.6.0,http://robocode-archive.strangeautomata.com/robots/fowl3628800.LightningBolt_2.6.0.jar&lt;br /&gt;
franzor.Lizt 1.3.1,http://robocode-archive.strangeautomata.com/robots/franzor.Lizt_1.3.1.jar&lt;br /&gt;
fullsail.LaxativeTeaTwo 1.0,http://robocode-archive.strangeautomata.com/robots/fullsail.LaxativeTeaTwo_1.0.jar&lt;br /&gt;
fullsail.TimbotNoPrediction 1.0,http://robocode-archive.strangeautomata.com/robots/fullsail.TimbotNoPrediction_1.0.jar&lt;br /&gt;
fullsail.SweetTea 1.1,http://robocode-archive.strangeautomata.com/robots/fullsail.SweetTea_1.1.jar&lt;br /&gt;
fwb.Nine 1.0.1,http://robocode-archive.strangeautomata.com/robots/fwb.Nine_1.0.1.jar&lt;br /&gt;
GarmBox.Anger 1.0,https://drive.google.com/uc?export=download&amp;amp;id=12mUMd9tKHdCAV_JYVSuyJfkwVl6HZ42y&lt;br /&gt;
GarmBox.Oranges 1.0,https://drive.google.com/uc?export=download&amp;amp;id=1b6sXfphAg_ARqbZ1-Kg2pzILY2jObElv&lt;br /&gt;
Gecko.ultimateGeckoBot 1.0,http://robocode-archive.strangeautomata.com/robots/Gecko.ultimateGeckoBot_1.0.jar&lt;br /&gt;
germ.TheMind .2,http://robocode-archive.strangeautomata.com/robots/germ.TheMind_.2.jar&lt;br /&gt;
gg.Squaraus 0.6,http://robocode-archive.strangeautomata.com/robots/gg.Squaraus_0.6.jar&lt;br /&gt;
gg.Wolverine 2.0,http://robocode-archive.strangeautomata.com/robots/gg.Wolverine_2.0.jar&lt;br /&gt;
gh.Griezel 0.5.2,http://robocode-archive.strangeautomata.com/robots/gh.Griezel_0.5.2.jar&lt;br /&gt;
gh.micro.Gruweltje 0.7,http://robocode-archive.strangeautomata.com/robots/gh.micro.Gruweltje_0.7.jar&lt;br /&gt;
gh.mini.Griezel 0.2,http://robocode-archive.strangeautomata.com/robots/gh.mini.Griezel_0.2.jar&lt;br /&gt;
gh.mini.GrubbmOne 1.0,http://robocode-archive.strangeautomata.com/robots/gh.mini.GrubbmOne_1.0.jar&lt;br /&gt;
gh.mini.Gruwel 0.9,http://robocode-archive.strangeautomata.com/robots/gh.mini.Gruwel_0.9.jar&lt;br /&gt;
gh.nano.Grofvuil 0.2,http://robocode-archive.strangeautomata.com/robots/gh.nano.Grofvuil_0.2.jar&lt;br /&gt;
ghent.ArthurPanzergon 1.0.0,http://franck.jousseaume.free.fr/robocode/ArthurPanzergon_1.0.0.jar&lt;br /&gt;
gimp.GimpBot 0.1,http://robocode-archive.strangeautomata.com/robots/gimp.GimpBot_0.1.jar&lt;br /&gt;
gjr.Cephalosporin 0.1,http://robocode-archive.strangeautomata.com/robots/gjr.Cephalosporin_0.1.jar&lt;br /&gt;
goblin.Bender 2.4,http://robocode-archive.strangeautomata.com/robots/goblin.Bender_2.4.jar&lt;br /&gt;
gre.svman4.Leonidas 1.3.2,https://drive.google.com/uc?export=download&amp;amp;id=1ZeSWWgjvqsnq-44JyQR776ebBuOnTTd3&lt;br /&gt;
gre.svman4.Morfeas 1.4.1,https://drive.google.com/uc?export=download&amp;amp;id=1D4P_zT0zqxasqpCNoFB34KikbJKVXTn0&lt;br /&gt;
Grystrion.RandomTrackerNOREV 1.0,https://www.dropbox.com/s/9ym5golnwurhfxw/Grystrion.RandomTrackerNOREV_1.0.jar?dl=1&lt;br /&gt;
Grystrion.TrackerWO 1.0,https://www.dropbox.com/s/f1j88yf69zn37jp/Grystrion.TrackerWO_1.0.jar?dl=1&lt;br /&gt;
hvilela.HVilela 0.9,http://robocode-archive.strangeautomata.com/robots/hvilela.HVilela_0.9.jar&lt;br /&gt;
ICS4U1.Patrick_White_Schrodinger 1.1,http://robocode-archive.strangeautomata.com/robots/ICS4U1.Patrick_White_Schrodinger_1.1.jar&lt;br /&gt;
inonit.robocode.javascript.MyFirstRobot 1.1,https://github.com/davidpcaldwell/roborumble-participants/blob/master/inonit.robocode.javascript.MyFirstRobot_1.1.jar?raw=true&lt;br /&gt;
intruder.PrairieWolf 2.61,http://robocode-archive.strangeautomata.com/robots/intruder.PrairieWolf_2.61.jar&lt;br /&gt;
jab.DiamondStealer 5,http://robocode-archive.strangeautomata.com/robots/jab.DiamondStealers_5.jar&lt;br /&gt;
jangs.ns51 1.0,http://robocode-archive.strangeautomata.com/robots/jangs.ns51_1.0.jar&lt;br /&gt;
jaybot.adv.bots.JayBot 2.0,http://robocode-archive.strangeautomata.com/robots/jaybot.adv.bots.JayBot_2.0.jar&lt;br /&gt;
jaybot.bots.Oddball 4.0,http://robocode-archive.strangeautomata.com/robots/jaybot.bots.Oddball_4.0.jar&lt;br /&gt;
jcs.Seth 1.8,http://robocode-archive.strangeautomata.com/robots/jcs.Seth_1.8.jar&lt;br /&gt;
jdw.Hurricane 1.4,http://robocode-archive.strangeautomata.com/robots/jdw.Hurricane_1.4.jar&lt;br /&gt;
jekl.StoneGhost 0.7,http://robocode-archive.strangeautomata.com/robots/jekl.StoneGhost_0.7.jar&lt;br /&gt;
jeremyreeder.collective.Prophet 5,http://robocode-archive.strangeautomata.com/robots/jeremyreeder.collective.Prophet_5.jar&lt;br /&gt;
jeremyreeder.Vincent 2011.12.09,http://robocode-archive.strangeautomata.com/robots/jeremyreeder.Vincent_2011.12.09.jar&lt;br /&gt;
jje.BagPuss 1.2,http://robocode-archive.strangeautomata.com/robots/jje.BagPuss_1.2.jar&lt;br /&gt;
jk.melee.Neuromancer 7.12,https://www.dropbox.com/s/ctjzl08u2f3x3r0/jk.melee.Neuromancer_7.12.jar?dl=1&lt;br /&gt;
jlm.javaDisturbance 0.59,http://robocode-archive.strangeautomata.com/robots/jlm.javaDisturbance_0.59.jar&lt;br /&gt;
joe.ADinosaur 1.0,http://robocode-archive.strangeautomata.com/robots/joe.ADinosaur_1.0.jar&lt;br /&gt;
jok.PheonixM 0.1.2,http://robocode-archive.strangeautomata.com/robots/jok.PheonixM_0.1.2.jar&lt;br /&gt;
josago.Jorgito 0.16,http://robocode-archive.strangeautomata.com/robots/josago.Jorgito_0.16.jar&lt;br /&gt;
jp.Perpy 16.0,http://robocode-archive.strangeautomata.com/robots/jp.Perpy_16.0.jar&lt;br /&gt;
jrm.Test0 1.0,http://robocode-archive.strangeautomata.com/robots/jrm.Test0_1.0.jar&lt;br /&gt;
js.PinBall 1.6,http://robocode-archive.strangeautomata.com/robots/js.PinBall_1.6.jar&lt;br /&gt;
jsal.Jsalbot 1.0,http://robocode-archive.strangeautomata.com/robots/jsal.Jsalbot_1.0.jar&lt;br /&gt;
justin.Mallais 14.0,http://robocode-archive.strangeautomata.com/robots/justin.Mallais_14.0.jar&lt;br /&gt;
justin.DemonicRage 3.4,http://robocode-archive.strangeautomata.com/robots/justin.DemonicRage_3.4.jar&lt;br /&gt;
jwirde.Gort 2.0,http://robocode-archive.strangeautomata.com/robots/jwirde.Gort_2.0.jar&lt;br /&gt;
jwst.DAD.DarkAndDarker 1.1,http://robocode-archive.strangeautomata.com/robots/jwst.DAD.DarkAndDarker_1.1.jar&lt;br /&gt;
kano.gamma.KanoGamma 1.8,http://robocode-archive.strangeautomata.com/robots/kano.gamma.KanoGamma_1.8.jar&lt;br /&gt;
kawigi.micro.Shiz 1.1,http://robocode-archive.strangeautomata.com/robots/kawigi.micro.Shiz_1.1.jar&lt;br /&gt;
kawigi.mini.Coriantumr 1.1,http://robocode-archive.strangeautomata.com/robots/kawigi.mini.Coriantumr_1.1.jar&lt;br /&gt;
kawigi.mini.Fhqwhgads 1.1,http://robocode-archive.strangeautomata.com/robots/kawigi.mini.Fhqwhgads_1.1.jar&lt;br /&gt;
kawigi.nano.Lib 1.0,http://robocode-archive.strangeautomata.com/robots/kawigi.nano.Lib_1.0.jar&lt;br /&gt;
kawigi.robot.Girl 1.2,http://robocode-archive.strangeautomata.com/robots/kawigi.robot.Girl_1.2.jar&lt;br /&gt;
kawigi.sbf.FloodHT 0.9.2,http://robocode-archive.strangeautomata.com/robots/kawigi.sbf.FloodHT_0.9.2.jar&lt;br /&gt;
kawigi.sbf.FloodSonnet 0.9,http://robocode-archive.strangeautomata.com/robots/kawigi.sbf.FloodSonnet_0.9.jar&lt;br /&gt;
kawigi.spare.SpareParts 0.7.6nosnd,http://robocode-archive.strangeautomata.com/robots/kawigi.spare.SpareParts_0.7.6nosnd.jar&lt;br /&gt;
kc.mini.Mirage 0.2,https://drive.google.com/uc?export=download&amp;amp;id=1d2pv16MB2BXdAODf2mTGpS-yRIYOJJcT&lt;br /&gt;
kdf.KoulDestroyer 1.0,https://icarus.cs.weber.edu/~kfeuz/downloads/kdf.KoulDestroyer_1.0.jar&lt;br /&gt;
kid.Gladiator .7.2,http://robocode-archive.strangeautomata.com/robots/kid.Gladiator_.7.2.jar&lt;br /&gt;
kid.test.NightFox .2,http://robocode-archive.strangeautomata.com/robots/kid.test.NightFox_.2.jar&lt;br /&gt;
KiraNL.Chupacabra 0.4,http://robocode-archive.strangeautomata.com/robots/KiraNL.Chupacabra_0.4.jar&lt;br /&gt;
kinsen.melee.Angsaichmophobia 1.8c,http://robocode-archive.strangeautomata.com/robots/kinsen.melee.Angsaichmophobia_1.8c.jar&lt;br /&gt;
Krabb.akim2.Akim2 1.1b,http://robocode-archive.strangeautomata.com/robots/Krabb.akim2.Akim2_1.1b.jar&lt;br /&gt;
Krabb.sliNk.Garm 0.9u,http://robocode-archive.strangeautomata.com/robots/Krabb.sliNk.Garm_0.9u.jar&lt;br /&gt;
krillr.mini.JointStrike 2.0.0,http://robocode-archive.strangeautomata.com/robots/krillr.mini.JointStrike_2.0.0.jar&lt;br /&gt;
kurios.DOSexe .9a,http://robocode-archive.strangeautomata.com/robots/kurios.DOSexe_.9a.jar&lt;br /&gt;
kurios.DOSexe .9b,http://robocode-archive.strangeautomata.com/robots/kurios.DOSexe_.9b.jar&lt;br /&gt;
kvk.HebusLeTroll 0.35,http://robocode-archive.strangeautomata.com/robots/kvk.HebusLeTroll_0.35.jar&lt;br /&gt;
labg.Cataclysm 2.05,http://robocode-archive.strangeautomata.com/robots/labg.Cataclysm_2.05.jar&lt;br /&gt;
lambdaxy.TBot 0.1,http://robocode-archive.strangeautomata.com/robots/lambdaxy.TBot_0.1.jar&lt;br /&gt;
lessonz.robocode.Oz 0.5.0,http://robocode-archive.strangeautomata.com/robots/lessonz.robocode.Oz_0.5.0.jar&lt;br /&gt;
lmk.ACPFinal 0.1,http://robocode-archive.strangeautomata.com/robots/lmk.ACPFinal_0.1.jar&lt;br /&gt;
Lo_Ian.Gandalf_V4 4.0,http://robocode-archive.strangeautomata.com/robots/Lo_Ian.Gandalf_V4_4.0.jar&lt;br /&gt;
logiblocs.SittingDroid 1.0,http://robocode-archive.strangeautomata.com/robots/logiblocs.SittingDroid_1.0.jar&lt;br /&gt;
lorneswork.Predator 1.0,http://robocode-archive.strangeautomata.com/robots/lorneswork.Predator_1.0.jar&lt;br /&gt;
lrem.Spectre 0.4.4,http://robocode-archive.strangeautomata.com/robots/lrem.Spectre_0.4.4.jar&lt;br /&gt;
lrem.micro.MoggFanatic 0.2,http://robocode-archive.strangeautomata.com/robots/lrem.micro.MoggFanatic_0.2.jar&lt;br /&gt;
lrem.micro.SpikeSoldier 0.4,http://robocode-archive.strangeautomata.com/robots/lrem.micro.SpikeSoldier_0.4.jar&lt;br /&gt;
lunchie.Lunchbox 0.93,http://robocode-archive.strangeautomata.com/robots/lunchie.Lunchbox_0.93.jar&lt;br /&gt;
lxx.ConceptA 0.8,https://github.com/aleksey-zhidkov/ConceptA/raw/master/builds/lxx.ConceptA_0.8.jar&lt;br /&gt;
m3thos.Eva00 1.1,http://robocode-archive.strangeautomata.com/robots/m3thos.Eva00_1.1.jar&lt;br /&gt;
m3thos.Eva02 0.7.1,http://robocode-archive.strangeautomata.com/robots/m3thos.Eva02_0.7.1.jar&lt;br /&gt;
m3thos.mini.Eva01 0.5.5,http://robocode-archive.strangeautomata.com/robots/m3thos.mini.Eva01_0.5.5.jar&lt;br /&gt;
maribo.FollowFire 1,http://robocode-archive.strangeautomata.com/robots/maribo.FollowFire_1.jar&lt;br /&gt;
maribo.IotaCT 1.1,http://robocode-archive.strangeautomata.com/robots/maribo.IotaCT_1.1.jar&lt;br /&gt;
maribo.melee.BMV 0.1,http://robocode-archive.strangeautomata.com/robots/maribo.melee.BMV_0.1.jar&lt;br /&gt;
maribo.mini.MiniQuester 0.1,https://dl.dropboxusercontent.com/s/67bfz8fhhrnc34j/maribo.mini.MiniQuester_0.1.jar&lt;br /&gt;
maribo.Quester 0.3,https://dl.dropboxusercontent.com/s/3jtoh2u1qdulof4/maribo.Quester_0.3.jar&lt;br /&gt;
matt.advanced.Katana 1.0,http://robocode-archive.strangeautomata.com/robots/matt.advanced.Katana_1.0.jar&lt;br /&gt;
matt.UnderDark3 2.4.34,http://robocode-archive.strangeautomata.com/robots/matt.UnderDark3_2.4.34.jar&lt;br /&gt;
mb.Beast 0.1,http://robocode-archive.strangeautomata.com/robots/mb.Beast_0.1.jar&lt;br /&gt;
mbh.Mbh 0.1,http://robocode-archive.strangeautomata.com/robots/mbh.Mbh_0.1.jar&lt;br /&gt;
mbro.Detektor3 0.1.1,http://robocode-archive.strangeautomata.com/robots/mbro.Detektor3_0.1.1.jar&lt;br /&gt;
mc2.enemy.Original 0.9,http://robocode-archive.strangeautomata.com/robots/mc2.enemy.Original_0.9.jar&lt;br /&gt;
mk.Alpha 0.2.1,http://robocode-archive.strangeautomata.com/robots/mk.Alpha_0.2.1.jar&lt;br /&gt;
mld.DustBunny 3.8,http://robocode-archive.strangeautomata.com/robots/mld.DustBunny_3.8.jar&lt;br /&gt;
mld.Infinity 2.2,http://robocode-archive.strangeautomata.com/robots/mld.Infinity_2.2.jar&lt;br /&gt;
mld.Wisdom 1.0,http://robocode-archive.strangeautomata.com/robots/mld.Wisdom_1.0.jar&lt;br /&gt;
mme.NikeEnhanced 2.0,http://robocode-archive.strangeautomata.com/robots/mme.NikeEnhanced_2.0.jar&lt;br /&gt;
mn.nano.perceptual.Impact 1.3.0,https://www.dropbox.com/s/njuuaycr3qswlgu/mn.nano.perceptual.Impact_1.3.0.jar?dl=1&lt;br /&gt;
mn.Combat 3.25.0,https://www.dropbox.com/s/5iufszjp28qfptw/mn.Combat_3.25.0.jar?dl=1&lt;br /&gt;
morbid.MorbidPriest 1.0,http://robocode-archive.strangeautomata.com/robots/morbid.MorbidPriest_1.0.jar&lt;br /&gt;
ms.Ares 0.19,http://robocode-archive.strangeautomata.com/robots/ms.Ares_0.19.jar&lt;br /&gt;
myl.micro.Troodon 1.10,http://robocode-archive.strangeautomata.com/robots/myl.micro.Troodon_1.10.jar&lt;br /&gt;
myl.nano.Graviton 1.10,http://robocode-archive.strangeautomata.com/robots/myl.nano.Graviton_1.10.jar&lt;br /&gt;
myl.nano.KomoriNinja 1.1,http://robocode-archive.strangeautomata.com/robots/myl.nano.KomoriNinja_1.1.jar&lt;br /&gt;
mym.EdgeStalker 1.0,http://robocode-archive.strangeautomata.com/robots/mym.EdgeStalker_1.0.jar&lt;br /&gt;
mz.AntiGrav 1.0,http://robocode-archive.strangeautomata.com/robots/mz.AntiGrav_1.0.jar&lt;br /&gt;
mz.MicroGodMelee 1,http://robocode-archive.strangeautomata.com/robots/mz.MicroGodMelee_1.jar&lt;br /&gt;
mz.MicroSheep 1.0,http://robocode-archive.strangeautomata.com/robots/mz.MicroSheep_1.0.jar&lt;br /&gt;
mz.Cork 0.1,http://robocode-archive.strangeautomata.com/robots/mz.Cork_0.1.jar&lt;br /&gt;
mz.NanoGod 2.02,http://robocode-archive.strangeautomata.com/robots/mz.NanoGod_2.02.jar&lt;br /&gt;
nat.PallasHawk 1.0,http://robocode-archive.strangeautomata.com/robots/nat.PallasHawk_1.0.jar&lt;br /&gt;
ne.Chimera 1.2,http://robocode-archive.strangeautomata.com/robots/ne.Chimera_1.2.jar&lt;br /&gt;
nic.Nicator 2.4,http://robocode-archive.strangeautomata.com/robots/nic.Nicator_2.4.jar&lt;br /&gt;
Noran.BitchingElk 0.054,http://robocode-archive.strangeautomata.com/robots/Noran.BitchingElk_0.054.jar&lt;br /&gt;
ntc.ControlledChaos 1.1.4,http://robocode-archive.strangeautomata.com/robots/ntc.ControlledChaos_1.1.4.jar&lt;br /&gt;
ntc.Opposite 1.5,http://robocode-archive.strangeautomata.com/robots/ntc.Opposite_1.5.jar&lt;br /&gt;
nz.jdc.nano.GridFu 1.0,http://robocode-archive.strangeautomata.com/robots/nz.jdc.nano.GridFu_1.0.jar&lt;br /&gt;
oa.weak.BotherBot 0.1,http://robocode-archive.strangeautomata.com/robots/oa.weak.BotherBot_0.1.jar&lt;br /&gt;
oa.weak.FlyMk1 0.1,http://robocode-archive.strangeautomata.com/robots/oa.weak.FlyMk1_0.1.jar&lt;br /&gt;
oog.melee.Capulet 1.2,http://robocode-archive.strangeautomata.com/robots/oog.melee.Capulet_1.2.jar&lt;br /&gt;
oog.melee.CapuletDroid 1.1,http://robocode-archive.strangeautomata.com/robots/oog.melee.CapuletDroid_1.1.jar&lt;br /&gt;
oog.melee.Corsair 1.0,http://robocode-archive.strangeautomata.com/robots/oog.melee.Corsair_1.0.jar&lt;br /&gt;
oog.melee.Mercutio 1.0,http://robocode-archive.strangeautomata.com/robots/oog.melee.Mercutio_1.0.jar&lt;br /&gt;
origin.SleepSiphon 1.7b,https://github.com/John-Paul-R/SleepSiphon/releases/download/1.7b/origin.SleepSiphon_1.7b.jar&lt;br /&gt;
pa.Improved 1.0,http://robocode-archive.strangeautomata.com/robots/pa.Improved_1.0.jar&lt;br /&gt;
pac.ABC 2.1,http://robocode-archive.strangeautomata.com/robots/pac.ABC_2.1.jar&lt;br /&gt;
panzer.Panzer 0.2,http://robocode-archive.strangeautomata.com/robots/panzer.Panzer_0.2.jar&lt;br /&gt;
patson.PatsonTestBot 1.0,http://robocode-archive.strangeautomata.com/robots/patson.PatsonTestBot_1.0.jar&lt;br /&gt;
pbg.R2D2 1.0,http://robocode-archive.strangeautomata.com/robots/pbg.R2D2_1.0.jar&lt;br /&gt;
pbg.NinjaX 1.2,https://github.com/realr2d2/Bots/blob/gh-pages/pbg.NinjaX_1.2.jar?raw=true&lt;br /&gt;
TNT.TNT 0.99.1,http://robocode-archive.strangeautomata.com/robots/TNT.TNT_0.99.1.jar&lt;br /&gt;
pe.minimelee.SandboxMiniMelee 1.1,http://robocode-archive.strangeautomata.com/robots/pe.minimelee.SandboxMiniMelee_1.1.jar&lt;br /&gt;
pe.SandboxDT 2.71m,http://robocode-archive.strangeautomata.com/robots/pe.SandboxDT_2.71m.jar&lt;br /&gt;
pe.SandboxLump 1.52,http://robocode-archive.strangeautomata.com/robots/pe.SandboxLump_1.52.jar&lt;br /&gt;
pedersen.Grishnakh 1.0,http://robocode-archive.strangeautomata.com/robots/pedersen.Grishnakh_1.0.jar&lt;br /&gt;
pedersen.Moron 2.0,http://robocode-archive.strangeautomata.com/robots/pedersen.Moron_2.0.jar&lt;br /&gt;
pedersen.Ugluk 1.1.1,http://robocode-archive.strangeautomata.com/robots/pedersen.Ugluk_1.1.1.jar&lt;br /&gt;
pez.mini.ChironexFleckeri 0.5,http://robocode-archive.strangeautomata.com/robots/pez.mini.ChironexFleckeri_0.5.jar&lt;br /&gt;
pfvicm.Sobieski 7.2.3b,http://robocode-archive.strangeautomata.com/robots/pfvicm.Sobieski_7.2.3b.jar&lt;br /&gt;
ph.melee.ArcherME 0.3,http://robocode-archive.strangeautomata.com/robots/ph.melee.ArcherME_0.3.jar&lt;br /&gt;
Polkwane.SmashMelee 1.0,https://dl.dropboxusercontent.com/s/hog8g5km2pu3q1i/Polkwane.SmashMelee_1.0.jar?token_hash=AAEYkudeilgEUEILMqRqcdMrqBYFMaGSzuqXAO6BMVi2gQ&amp;amp;dl=1&lt;br /&gt;
positive.Portia 1.26e,http://robocode-archive.strangeautomata.com/robots/positive.Portia_1.26e.jar&lt;br /&gt;
PSW.Relentless 0.1,http://robocode-archive.strangeautomata.com/robots/PSW.Relentless_0.1.jar&lt;br /&gt;
pulsar.PulsarMax 0.8.9,http://robocode-archive.strangeautomata.com/robots/pulsar.PulsarMax_0.8.9.jar&lt;br /&gt;
qohnil.blot.BlotBot 3.61,http://robocode-archive.strangeautomata.com/robots/qohnil.blot.BlotBot_3.61.jar&lt;br /&gt;
qualidafial.MajorDick 1.0.1,https://www.dropbox.com/sh/n570kf8rsq6fuw2/vVQSIJJnAS/qualidafial.MajorDick_1.0.1.jar?dl=1&lt;br /&gt;
Queens_teamrobot.UltraRazor 1.0,http://robocode-archive.strangeautomata.com/robots/Queens_teamrobot.UltraRazor_1.0.jar&lt;br /&gt;
radnor.DoctorBob 1.42,http://robocode-archive.strangeautomata.com/robots/radnor.DoctorBob_1.42.jar&lt;br /&gt;
rampancy.Durandal 2.1d,http://robocode-archive.strangeautomata.com/robots/rampancy.Durandal_2.1d.jar&lt;br /&gt;
ratosh.Nobo 0.21,http://robocode-archive.strangeautomata.com/robots/ratosh.Nobo_0.21.jar&lt;br /&gt;
ratosh.Wesco 1.4,http://robocode-archive.strangeautomata.com/robots/ratosh.Wesco_1.4.jar&lt;br /&gt;
rdm.Dueler 0.4x,https://drive.google.com/uc?export=download&amp;amp;id=16x234SaadG-76wT0TJhpyDTxdQhO-j3j&lt;br /&gt;
rdt199.Warlord 0.73,http://robocode-archive.strangeautomata.com/robots/rdt199.Warlord_0.73.jar&lt;br /&gt;
repositorio.NanoStep 1.0,http://robocode-archive.strangeautomata.com/robots/repositorio.NanoStep_1.0.jar&lt;br /&gt;
robar.nano.Assertive_Melee 0.2,http://robocode-archive.strangeautomata.com/robots/robar.nano.Assertive_Melee_0.2.jar&lt;br /&gt;
rrh.Iwillfindyou 2.0,https://drive.google.com/uc?export=download&amp;amp;id=1wE-V_PQeMvKLisPmM8s6JEaznXEHYAIt&lt;br /&gt;
rsalesc.roborio.RoborioPorradeiro 1.1b,http://robocode-archive.strangeautomata.com/robots/rsalesc.roborio.RoborioPorradeiro_1.1b.jar&lt;br /&gt;
rsalesc.melee.Medina 0.4.5,http://robocode-archive.strangeautomata.com/robots/rsalesc.melee.Medina_0.4.5.jar&lt;br /&gt;
rsalesc.melee.Monk 0.3.6c,http://robocode-archive.strangeautomata.com/robots/rsalesc.melee.Monk_0.3.6c.jar&lt;br /&gt;
rtk.Tachikoma 1.0,http://robocode-archive.strangeautomata.com/robots/rtk.Tachikoma_1.0.jar&lt;br /&gt;
rz.Aleph 0.34,http://robocode-archive.strangeautomata.com/robots/rz.Aleph_0.34.jar&lt;br /&gt;
rz.GlowBlowMelee 1.4,http://robocode-archive.strangeautomata.com/robots/rz.GlowBlowMelee_1.4.jar&lt;br /&gt;
rz.HawkOnFire 0.1,http://robocode-archive.strangeautomata.com/robots/rz.HawkOnFire_0.1.jar&lt;br /&gt;
sadoner.killer 0.2,http://robocode-archive.strangeautomata.com/robots/sadoner.killer_0.2.jar&lt;br /&gt;
sam.Samspin 1.0,http://robocode-archive.strangeautomata.com/robots/sam.Samspin_1.0.jar&lt;br /&gt;
sample.Corners 1.0,http://robocode-archive.strangeautomata.com/robots/sample.Corners_1.0.jar&lt;br /&gt;
sample.Crazy 1.0,http://robocode-archive.strangeautomata.com/robots/sample.Crazy_1.0.jar&lt;br /&gt;
sample.Fire 1.0,http://robocode-archive.strangeautomata.com/robots/sample.Fire_1.0.jar&lt;br /&gt;
sample.MyFirstJuniorRobot 1.0,http://robocode-archive.strangeautomata.com/robots/sample.MyFirstJuniorRobot_1.0.jar&lt;br /&gt;
sample.MyFirstRobot 1.0,http://robocode-archive.strangeautomata.com/robots/sample.MyFirstRobot_1.0.jar&lt;br /&gt;
sample.RamFire 1.0,http://robocode-archive.strangeautomata.com/robots/sample.RamFire_1.0.jar&lt;br /&gt;
sample.SittingDuck 1.0,http://robocode-archive.strangeautomata.com/robots/sample.SittingDuck_1.0.jar&lt;br /&gt;
sample.SpinBot 1.0,http://robocode-archive.strangeautomata.com/robots/sample.SpinBot_1.0.jar&lt;br /&gt;
sample.Target 1.0,http://robocode-archive.strangeautomata.com/robots/sample.Target_1.0.jar&lt;br /&gt;
sample.Tracker 1.0,http://robocode-archive.strangeautomata.com/robots/sample.Tracker_1.0.jar&lt;br /&gt;
sample.TrackFire 1.0,http://robocode-archive.strangeautomata.com/robots/sample.TrackFire_1.0.jar&lt;br /&gt;
sample.VelociRobot 1.0,http://robocode-archive.strangeautomata.com/robots/sample.VelociRobot_1.0.jar&lt;br /&gt;
sample.Walls 1.0,http://robocode-archive.strangeautomata.com/robots/sample.Walls_1.0.jar&lt;br /&gt;
sanyi.mikrobi.Roberto 1.0,http://robocode-archive.strangeautomata.com/robots/sanyi.mikrobi.Roberto_1.0.jar&lt;br /&gt;
sanja.First 0.1,http://robocode-archive.strangeautomata.com/robots/sanja.First_0.1.jar&lt;br /&gt;
sch.Simone 0.3d,http://robocode-archive.strangeautomata.com/robots/sch.Simone_0.3d.jar&lt;br /&gt;
sgp.JollyNinja 3.53,http://robocode-archive.strangeautomata.com/robots/sgp.JollyNinja_3.53.jar&lt;br /&gt;
SHAM.WOW 1.4,http://robocode-archive.strangeautomata.com/robots/SHAM.WOW_1.4.jar&lt;br /&gt;
sheldor.melee.nano.NaturalScience 1.2.1,https://github.com/sheldor-robocode/jar-files/raw/main/sheldor.melee.nano.NaturalScience_1.2.1.jar&lt;br /&gt;
sheldor.melee.nano.TestMelee 0.1,http://robocode-archive.strangeautomata.com/robots/sheldor.melee.nano.TestMelee_0.1.jar&lt;br /&gt;
sheldor.nano.PointInLineRRAL 1.0.0,http://robocode-archive.strangeautomata.com/robots/sheldor.nano.PointInLineRRAL_1.0.0.jar&lt;br /&gt;
shinh.Entangled 0.3,http://robocode-archive.strangeautomata.com/robots/shinh.Entangled_0.3.jar&lt;br /&gt;
shrub.Silver v048,http://robocode-archive.strangeautomata.com/robots/shrub.Silver_v048.jar&lt;br /&gt;
shrub.Vapour v159,http://robocode-archive.strangeautomata.com/robots/shrub.Vapour_v159.jar&lt;br /&gt;
shu.nitro.LENIN .T34,http://robocode-archive.strangeautomata.com/robots/shu.nitro.LENIN_.T34.jar&lt;br /&gt;
sigterm.Sigterm 1.0,http://robocode-archive.strangeautomata.com/robots/sigterm.Sigterm_1.0.jar&lt;br /&gt;
simonton.micro.Sprout 1.1.3,http://robocode-archive.strangeautomata.com/robots/simonton.micro.Sprout_1.1.3.jar&lt;br /&gt;
simonton.nano.MeleeSeed 1.8,http://robocode-archive.strangeautomata.com/robots/simonton.nano.MeleeSeed_1.8.jar&lt;br /&gt;
simonton.nano.WeekendObsession_Melee 1.0,http://robocode-archive.strangeautomata.com/robots/simonton.nano.WeekendObsession_Melee_1.0.jar&lt;br /&gt;
skm.butterfly 1.0,http://robocode-archive.strangeautomata.com/robots/skm.butterfly_1.0.jar&lt;br /&gt;
skm.Ryubot 1.0,http://robocode-archive.strangeautomata.com/robots/skm.Ryubot_1.0.jar&lt;br /&gt;
skm.PateranBotlock2 1.0,http://robocode-archive.strangeautomata.com/robots/skm.PateranBotlock2_1.0.jar&lt;br /&gt;
spin.Bugstard 0.012b,http://robocode-archive.strangeautomata.com/robots/spin.Bugstard_0.012b.jar?dl=1&lt;br /&gt;
spinnercat.Omen 1.0,http://robocode-archive.strangeautomata.com/robots/spinnercat.Omen_1.0.jar&lt;br /&gt;
spinnercat.micro.Tyger 0.1,http://robocode-archive.strangeautomata.com/robots/spinnercat.micro.Tyger_0.1.jar&lt;br /&gt;
spinnercat.Robovirus 2.718,http://robocode-archive.strangeautomata.com/robots/spinnercat.Robovirus_2.718.jar&lt;br /&gt;
sp.Nanos.Ember 1.1,http://robocode-archive.strangeautomata.com/robots/sp.Nanos.Ember_1.1.jar&lt;br /&gt;
squidM.TentalceMeleeNano 1.1,http://robocode-archive.strangeautomata.com/robots/squidM.TentalceMeleeNano_1.1.jar&lt;br /&gt;
stelo.AreaTargetingBot 1.1,http://robocode-archive.strangeautomata.com/robots/stelo.AreaTargetingBot_1.1.jar&lt;br /&gt;
stelo.IntrinsicVolatility 1.4,http://robocode-archive.strangeautomata.com/robots/stelo.IntrinsicVolatility_1.4.jar&lt;br /&gt;
stelo.Liblix 0.3.1,https://github.com/kimtg/robocode-bots/releases/download/release/stelo.Liblix_0.3.1.jar&lt;br /&gt;
stelo.Lifestealer 1.0,http://robocode-archive.strangeautomata.com/robots/stelo.Lifestealer_1.0.jar&lt;br /&gt;
stelo.Mirror 1.1,http://robocode-archive.strangeautomata.com/robots/stelo.Mirror_1.1.jar&lt;br /&gt;
stelo.MirrorMicro 1.0,http://robocode-archive.strangeautomata.com/robots/stelo.MirrorMicro_1.0.jar&lt;br /&gt;
stelo.MirrorNano 1.3,http://robocode-archive.strangeautomata.com/robots/stelo.MirrorNano_1.3.jar&lt;br /&gt;
stelo.MyAgileRobot 0.2,http://robocode-archive.strangeautomata.com/robots/stelo.MyAgileRobot_0.2.jar&lt;br /&gt;
stelo.PatternRobot 1.0,http://robocode-archive.strangeautomata.com/robots/stelo.PatternRobot_1.0.jar&lt;br /&gt;
stelo.PianistNano 1.2,http://robocode-archive.strangeautomata.com/robots/stelo.PianistNano_1.2.jar&lt;br /&gt;
stelo.RamTrackSurfer 1.2,http://robocode-archive.strangeautomata.com/robots/stelo.RamTrackSurfer_1.2.jar&lt;br /&gt;
stelo.Randomness 1.0,http://robocode-archive.strangeautomata.com/robots/stelo.Randomness_1.0.jar&lt;br /&gt;
stelo.SoJNanoMelee 1.1,http://robocode-archive.strangeautomata.com/robots/stelo.SoJNanoMelee_1.1.jar&lt;br /&gt;
stelo.SoRobotNanoMelee 1.2,http://robocode-archive.strangeautomata.com/robots/stelo.SoRobotNanoMelee_1.2.jar&lt;br /&gt;
stelo.UntouchableNano 1.3,http://robocode-archive.strangeautomata.com/robots/stelo.UntouchableNano_1.3.jar&lt;br /&gt;
stelo.Wang 1.0,http://robocode-archive.strangeautomata.com/robots/stelo.Wang_1.0.jar&lt;br /&gt;
stelo.WangRobot 1.0,http://robocode-archive.strangeautomata.com/robots/stelo.WangRobot_1.0.jar&lt;br /&gt;
step.nanoPri 1.0,http://robocode-archive.strangeautomata.com/robots/step.nanoPri_1.0.jar&lt;br /&gt;
stf.PanzerGeneral 0.1,http://robocode-archive.strangeautomata.com/robots/stf.PanzerGeneral_0.1.jar&lt;br /&gt;
stuff.Vlad 0.1,http://robocode-archive.strangeautomata.com/robots/stuff.Vlad_0.1.jar&lt;br /&gt;
sul.Lunar 1.1,http://robocode-archive.strangeautomata.com/robots/sul.Lunar_1.1.jar&lt;br /&gt;
supersample.SuperBoxBot 1.0,http://robocode-archive.strangeautomata.com/robots/supersample.SuperBoxBot_1.0.jar&lt;br /&gt;
tad.Dalek98 0.98,http://robocode-archive.strangeautomata.com/robots/tad.Dalek98_0.98.jar&lt;br /&gt;
tcf.Reach 3,http://robocode-archive.strangeautomata.com/robots/tcf.Reach_3.jar&lt;br /&gt;
techdude.forest.FlamingForest 1.1,http://robocode-archive.strangeautomata.com/robots/techdude.forest.FlamingForest_1.1.jar&lt;br /&gt;
techdude.kombat.FlamingKombat 1.5,http://robocode-archive.strangeautomata.com/robots/techdude.kombat.FlamingKombat_1.5.jar&lt;br /&gt;
testantiswapgun.AntiSwap 1.0,http://robocode-archive.strangeautomata.com/robots/asd.AntiSwap_1.0.jar&lt;br /&gt;
tex.Longbot 0.4,http://robocode-archive.strangeautomata.com/robots/tex.Longbot_0.4.jar&lt;br /&gt;
throxbot.ThroxBot 0.1,http://robocode-archive.strangeautomata.com/robots/throxbot.ThroxBot_0.1.jar&lt;br /&gt;
timmit.nano.TimDog 0.33,http://robocode-archive.strangeautomata.com/robots/timmit.nano.TimDog_0.33.jar&lt;br /&gt;
tj.zombie1n 1.0.1,http://robocode-archive.strangeautomata.com/robots/tj.zombie1n_1.0.1.jar&lt;br /&gt;
tlp.ThreeLeggedPig 1,http://robocode-archive.strangeautomata.com/robots/tlp.ThreeLeggedPig_1.jar&lt;br /&gt;
tm.Yuugao 1.0,http://robocode-archive.strangeautomata.com/robots/tm.Yuugao_1.0.jar&lt;br /&gt;
tripphippy.Alice 1.1,http://robocode-archive.strangeautomata.com/robots/tripphippy.Alice_1.1.jar&lt;br /&gt;
trm.Wrekt 1.1.6.f,http://robocode-archive.strangeautomata.com/robots/trm.Wrekt_1.1.6.f.jar&lt;br /&gt;
tvv.micro.Antares 1.1.1,http://robocode-archive.strangeautomata.com/robots/tvv.micro.Antares_1.1.1.jar&lt;br /&gt;
tvv.nano.Polaris 1.2,http://robocode-archive.strangeautomata.com/robots/tvv.nano.Polaris_1.2.jar&lt;br /&gt;
tzu.TheArtOfWar 1.2,http://robocode-archive.strangeautomata.com/robots/tzu.TheArtOfWar_1.2.jar&lt;br /&gt;
uji.Antique 1.0,http://robocode-archive.strangeautomata.com/robots/uji.Antique_1.0.jar&lt;br /&gt;
uji.DBH 1.1,http://robocode-archive.strangeautomata.com/robots/uji.DBH_1.1.jar&lt;br /&gt;
uji.YellohFellah 1.0,http://robocode-archive.strangeautomata.com/robots/uji.YellohFellah_1.0.jar&lt;br /&gt;
urdos.URDOS 1.3,http://robocode-archive.strangeautomata.com/robots/urdos.URDOS_1.3.jar&lt;br /&gt;
vjik.UnViolation 1.1,http://robocode-archive.strangeautomata.com/robots/vjik.UnViolation_1.1.jar&lt;br /&gt;
voidious.Diamond 1.8.28,http://robocode-archive.strangeautomata.com/robots/voidious.Diamond_1.8.28.jar&lt;br /&gt;
voidious.micro.BlitzBat 1.05,http://robocode-archive.strangeautomata.com/robots/voidious.micro.BlitzBat_1.05.jar&lt;br /&gt;
voidious.mini.BrokenSword 2.0.3,http://robocode-archive.strangeautomata.com/robots/voidious.mini.BrokenSword_2.0.3.jar&lt;br /&gt;
vStar.RAFzilla 2.15,https://drive.google.com/uc?export=download&amp;amp;id=1mSf7wnoO5VnMdHDCJcC-tT9X7NzIcLJF&lt;br /&gt;
vuen.Cake 2.51,http://robocode-archive.strangeautomata.com/robots/vuen.Cake_2.51.jar&lt;br /&gt;
WarfaJibril.Jibril_Warfa_Andromeda 1.11,http://robocode-archive.strangeautomata.com/robots/WarfaJibril.Jibril_Warfa_Andromeda_1.11.jar&lt;br /&gt;
wcsv.melee.EngineerMelee 0.1,http://robocode-archive.strangeautomata.com/robots/wcsv.melee.EngineerMelee_0.1.jar&lt;br /&gt;
wee.Gem 1.8.4,http://robocode-archive.strangeautomata.com/robots/wee.Gem_1.8.4.jar&lt;br /&gt;
whitesquare.robots.SkynetAdvanced 1.1,https://dl.dropboxusercontent.com/s/6epm51goxqp7p0h/whitesquare.robots.SkynetAdvanced_1.1.jar?dl=1&lt;br /&gt;
winamp32.micro.MicroMacro 1.0,http://robocode-archive.strangeautomata.com/robots/winamp32.micro.MicroMacro_1.0.jar&lt;br /&gt;
wit.Chuliath 1.0,http://robocode-archive.strangeautomata.com/robots/wit.Chuliath_1.0.jar&lt;br /&gt;
wit.Deep7 2.0,http://robocode-archive.strangeautomata.com/robots/wit.Deep7_2.0.jar&lt;br /&gt;
wompi.Numbat 2.1,http://www.casepool.de/robocode/wompi.Numbat_2.1.jar&lt;br /&gt;
wompi.Quokka 1.6,http://www.casepool.de/robocode/wompi.Quokka_1.6.jar&lt;br /&gt;
wompi.Wallaby 5.1,http://www.casepool.de/robocode/wompi.Wallaby_5.1.jar&lt;br /&gt;
yagami.Tidus 0.11,http://robocode-archive.strangeautomata.com/robots/yagami.Tidus_0.11.jar&lt;br /&gt;
yk.JahMicro 1.0,http://robocode-archive.strangeautomata.com/robots/yk.JahMicro_1.0.jar&lt;br /&gt;
yk.JahRoslav 1.1,http://robocode-archive.strangeautomata.com/robots/yk.JahRoslav_1.1.jar&lt;br /&gt;
zyx.mega.YersiniaPestis 3.1,http://robocode-archive.strangeautomata.com/robots/zyx.mega.YersiniaPestis_3.1.jar&lt;br /&gt;
zyx.micro.Ant 1.1,http://robocode-archive.strangeautomata.com/robots/zyx.micro.Ant_1.1.jar&lt;br /&gt;
zyx.nano.Ant 1.1,http://robocode-archive.strangeautomata.com/robots/zyx.nano.Ant_1.1.jar&lt;br /&gt;
zyx.nano.BacillusComma 1.0,http://robocode-archive.strangeautomata.com/robots/zyx.nano.BacillusComma_1.0.jar&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
'''''No chatting on this page. Use the /ParticipantsChat page for that.'''''&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
'''''Removed because the server says: Ignoring. Also client cannot download these'''''&amp;lt;br&amp;gt;&lt;br /&gt;
''traker.Eraser 1,http://lablanchisserie.fr/Parissou/traker.Eraser.jar&lt;br /&gt;
''xyzdev.SimpleJack 1.0,https://xyzdev.webfactional.com/archive/xyzdev.SimpleJack_1.0.jar&lt;br /&gt;
&lt;br /&gt;
'''''Removed because the jarcontent/filename is not correct'''''&amp;lt;br&amp;gt;&lt;br /&gt;
''ary.HelpMeelee 1.0,3624''&amp;lt;br&amp;gt;&lt;br /&gt;
''dmsr.MiniR101 0.6''&amp;lt;br&amp;gt;&lt;br /&gt;
''enriquevilela.TieFighter 0.1,3224''&amp;lt;br&amp;gt;&lt;br /&gt;
''cw.melee.Burner 2.0&amp;lt;br&amp;gt;&lt;br /&gt;
''ROB.TraumaLlama 1.0,https://www.dropbox.com/s/b14r13f4xwc5kj5/ROB.TraumaLlama_1.0.jar?dl=0''&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''Removed because he crashes the vm frequently (mac/linux) 1.6'''''&amp;lt;br&amp;gt;&lt;br /&gt;
''dam.MogBot 2.9,http://www.robocoderepository.com/BotFiles/555/dam.MogBot_2.9.jar&lt;br /&gt;
&lt;br /&gt;
'''''Removed due to WontFix issues in Robocode 1.7+:'''''&amp;lt;br&amp;gt;&lt;br /&gt;
''* Hviela: ([[http://sourceforge.net/tracker/?func=detail&amp;amp;aid=2953268&amp;amp;group_id=37202&amp;amp;atid=419486 SF #2953268]])&amp;lt;br&amp;gt;&lt;br /&gt;
'': hvilela.HVilela 0.9.3,http://henrique.vilela.googlepages.com/hvilela.HVilela_0.9.3.jar''&lt;br /&gt;
&lt;br /&gt;
'''''Removed due to constant timeouts'''''&amp;lt;br&amp;gt;&lt;br /&gt;
''ary.FourWD 1.3c,http://robocode-archive.strangeautomata.com/robots/ary.FourWD_1.3c.jar&amp;lt;br&amp;gt;&lt;br /&gt;
''stelo.Moojuk 1.3,http://robocode-archive.strangeautomata.com/robots/stelo.Moojuk_1.3.jar&lt;br /&gt;
&lt;br /&gt;
'''''Removed due to constant unstoppable and compatibility issue under java 8'''''&amp;lt;br&amp;gt;&lt;br /&gt;
''apc.Caan 1.0,http://robocode-archive.strangeautomata.com/robots/apc.Caan_1.0.jar&lt;br /&gt;
&lt;br /&gt;
'''''Removed due to attempting to read environment variables'''''&amp;lt;br&amp;gt;&lt;br /&gt;
''gm.GaetanoA 2.15,http://robocode-archive.strangeautomata.com/robots/gm.GaetanoA_2.15.jar&lt;br /&gt;
&lt;br /&gt;
'''''Removed due to invalid robot or team'''''&amp;lt;br&amp;gt;&lt;br /&gt;
''stelo.Spread 0.5.2,https://github.com/kimtg/robocode-bots/releases/download/release/stelo.Spread_0.5.2.jar&lt;br /&gt;
''stelo.PastFuture 2.3.1,https://github.com/kimtg/robocode-bots/releases/download/release/stelo.PastFuture_2.3.1.jar&lt;br /&gt;
&lt;br /&gt;
'''Removed due to not working in 1.9.4.2'''&amp;lt;br&amp;gt;&lt;br /&gt;
''abc.tron3.Tron 3.11,http://robocode-archive.strangeautomata.com/robots/abc.tron3.Tron_3.11.jar''&lt;br /&gt;
&lt;br /&gt;
'''Removed due to not working with Java 17. Don't use Java 18. '''&amp;lt;br&amp;gt;&lt;br /&gt;
dylanb.xyz 2.0,https://drive.google.com/uc?export=download&amp;amp;id=18ugz_el8xentgdnPipnK4zGyBOoT3fN9&lt;/div&gt;</summary>
		<author><name>D414</name></author>
		
	</entry>
	<entry>
		<id>http://robowiki.net/w/index.php?title=User:D414/Diary_of_a_Robocoder&amp;diff=57895</id>
		<title>User:D414/Diary of a Robocoder</title>
		<link rel="alternate" type="text/html" href="http://robowiki.net/w/index.php?title=User:D414/Diary_of_a_Robocoder&amp;diff=57895"/>
		<updated>2024-05-13T18:41:22Z</updated>

		<summary type="html">&lt;p&gt;D414: More code shrinking and gun tweaks&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;; 13th May 2024&lt;br /&gt;
ProGuard didn’t manage to shrink [[Quantum]] at all and installing Jikes is a bit of a faff these days (on an Arm MacBook anyway) so I decided to try out [https://github.com/Storyyeller/Krakatau Krakatau] to work with the assembly code directly. It looks like I can make room for the gun to use quite a few attributes - distance, bullet power, number of opponents, lateral velocity and lateral acceleration should all fit. I definitely need to improve on the spaghetti shaped shell scripts I’m using to build and test my bots if I’m going to successfully tune the gun, but I reckon it’ll be worth it. Whether or not it’s enough to outperform [[HawkOnFire]] with a nano remains to be seen, but I’m hopeful.&lt;br /&gt;
&lt;br /&gt;
; 10th May 2024&lt;br /&gt;
[[User:Sheldor2|Sheldor]]'s adaptation of [[Quantum]] (NaturalScience) motivated me to put development of a micro bot on hold. I had space for table based bullet power selection, albeit much simpler than [[User:Sheldor2|Sheldor]]'s, but only found marginal gains and tuning it by hand was both tedious and slow. I did manage to squeeze another 3 bytes out of my code though, bringing [[Quantum]] down to 239 bytes (without colours). There is room now for several different table based approaches but I'm going to need an automated way of tuning them. This leaves me with a nice todo list that will also benefit the development of other bots:&lt;br /&gt;
&lt;br /&gt;
* Try some other compilers, Jikes in particular&lt;br /&gt;
* Add ProGuard to my build scripts&lt;br /&gt;
* Build a test system that allows me to tune tables genetically&lt;br /&gt;
&lt;br /&gt;
; 4th May 2024&lt;br /&gt;
I managed to find another half-dozen or so bytes in [[FireHammer]] which was enough to improve the movement a bit. I've entered it into the rumble and will run some battles overnight so we'll see where it ranks when I wake up in the morning.&lt;br /&gt;
&lt;br /&gt;
Update: Can't complain about top 5 in the micros, although I was hoping to edge out Sprout to make top 3. This has confirmed my belief that a good circular gun is the way to go in a micro; 116 bytes for movement really isn't much to work with!&lt;br /&gt;
&lt;br /&gt;
; 2nd May 2024&lt;br /&gt;
I've finally given [[FireHammer]] a better (but not good) movement without going over 749 bytes. Once I've tidied the code up it will be ready to enter the rumble! I'm torn on whether to release it now versus waiting until I have a minibot ready to challenge [[Mirage]], I don't like to think about how much stronger [[User:Kev|Kev]] could make [[Mirage]] with all the extra space to play with!&lt;br /&gt;
&lt;br /&gt;
; 26th April 2024&lt;br /&gt;
My experimentation with micro sized melee guns is paying off; I've finally managed to squeeze [[Mirage]]'s amazing gun into a micro! The only (intended) functional changes are switching to [[Quantum]]'s bullet power selection and going back to a fixed size for bot width as per [[Mirage]] v0.1.&lt;br /&gt;
&lt;br /&gt;
So far I'm down to 733 bytes from a starting point of 919 (both without colours).&lt;br /&gt;
&lt;br /&gt;
Results are promising despite only spending 21 bytes on movement to move in an [[Infinity]] style box pattern.&lt;br /&gt;
&lt;br /&gt;
; 18th April 2024&lt;br /&gt;
I've started playing around with ideas for an entrant to the micro melee rumble. For now I'm looking at guns and mostly finding that [[DustBunny]]'s gun seems to give excellent performance per byte and is difficult to improve upon. The next best thing seems to be a good implementation of [[Circular Targeting]] but ultimately I think that movement is where the money is.&lt;br /&gt;
&lt;br /&gt;
I should probably turn my attention to finding the most efficient way I can to track enemy state, rather than relying on rolling averages, since the obvious HashMap approach introduces a lot of overhead. I'd also like to see if there's much to gain by switching from a basic nano style radar to something a little bit more sophisticated.&lt;br /&gt;
&lt;br /&gt;
In short, challenging [[Wallaby]] for the micro crown isn't going to be easy!&lt;br /&gt;
&lt;br /&gt;
; 14th April 2024&lt;br /&gt;
It turns out that Quantum is rather competetive! It knocked DustBunny off of the nano melee throne for a few days before settling in to second place. It still achieves a 100% PWIN and has by far the best survival score of any nano melee bot (and it has colours!). If I remove the colours I have 7 bytes to play with but I've not been able to find any changes that make a significant improvement. It would be interesting to see how the table looks once Quantum has run a similar number of battle to the other nanos (currently it's at less than 10%) however my rumble client has stopped working, which is a pain. Once we have internet again I'll see if I can get one of my low power machines setup as a dedicated client.&lt;br /&gt;
&lt;br /&gt;
; 6th April 2024&lt;br /&gt;
I haven't had much time for robocode over the last month but I have been able to experiment a little with a nano melee bot, heavily inspired by [[DustBunny]] and [[Infinity]]. I'm quite pleased with the idea to calculate [[Anti-Gravity Movement|anti-gravity]] forces based on the angle my bot would fire at instead of the angle to the enemy's current position. This bot (Quantum) is my first entry into the [[Roborumble]]!&lt;br /&gt;
&lt;br /&gt;
; 5th March 2024&lt;br /&gt;
My experiments with a nano [[Shadow/Melee Gun]] haven't gotten me the results I'd expected and I got a bit burned out from debugging it so I tried throwing a PM gun on which was okay but nothing to write home about. I think I'm going to experiment with different movements for a while for a change of pace. I've found I enjoy codesize restricted bots much more than megabots - I was getting a bit bogged down in top down development when I was allowed as much code as I liked.&lt;br /&gt;
&lt;br /&gt;
; 28th February 2024&lt;br /&gt;
[[File:Quantum Painting Firing Angles.png|thumb|Targeting everybody at once, Nanobot version!]]&lt;br /&gt;
I've managed to get a (very) basic version of [[Shadow/Melee Gun]] squeezed into my Nanobot. At the moment it only aims (at everybody) with [[Head-On Targeting]] weighted by distance. Once I'm done with bug fixing I think I'll be able to find room to add another gun or two and/or better energy management into the mix.&lt;br /&gt;
&lt;br /&gt;
; 27th February 2024&lt;br /&gt;
For the past couple of evenings I've been playing with nanobots for the first time. I'm interested in developing guns so decided to start by borrowing a movement from somewhere. [[Infinity]] was most appealing because its movement doesn't depend on the radar and only requires 68 bytes. I've managed to shrink the movement code by a further 15 bytes, giving me almost 200 bytes to use for a gun. ::Edit:: I've gotten it down to 35 bytes!&lt;br /&gt;
&lt;br /&gt;
; 23rd February 2024&lt;br /&gt;
I'm wondering if there should be an equivalent page to [[Wave Suffering]] for [[Displacement Vector|Displacement Vectors]]. My early efforts at collecting displacement vectors with a codesize restricted gun have resulted in some interesting and wild arrows being drawn all over the place. I'm making progress but I'm sure that subtle bugs will continue to be found for quite some time. Still not sure I'll make it work with enough space left to pair it with decent movement but the experience will be helpful either way.&lt;br /&gt;
&lt;br /&gt;
; 19th February 2024&lt;br /&gt;
[[File:Risk Function Painting.png|thumb|A picture is worth a thousand words]]&lt;br /&gt;
Over the last couple of days I've fallen face first into the &amp;lt;big&amp;gt;''pit of premature optimisation''&amp;lt;/big&amp;gt;. I noticed some interesting behaviour emerging as a result of my risk function and got carried away tweaking parameters and adding cobbled together versions of bits of code I'd not implemented in the hope of perfecting it. This predictably led to another pile of spaghetti code that needs (another) rewrite. /sigh.&lt;br /&gt;
&lt;br /&gt;
; 15th February 2024&lt;br /&gt;
My experimental bot had become a pile of spaghetti so it got a rewrite today. I'm still pleased with core design principle, especially given how quickly I was able to experiment with an idea I've not seen mentioned on the wiki before (no spoilers :p). My initial assessment is that it shows promise but definitely needs refinement as my bot now has the tendency under certain conditions to turn into a melee rambot...&lt;br /&gt;
&lt;br /&gt;
; 14th February 2024&lt;br /&gt;
My Robocoding time has been quite sporadic lately so it's been difficult to make progress on the ideas I have for a build system, testing framework and modular robot class. On the one hand that's disappointing because it's greatly slowing my efforts to develop an advanced melee contender however a few throwaway experiments have led to some interesting ideas for movement in mini (or possibly even micro) bots.&lt;br /&gt;
&lt;br /&gt;
The movement appears to be doing a good job at evaluating risk despite using a spinning radar and tracking very little information on enemies. The code is a bit buggy and needs some improvement but I think a half-decent gun could be implemented that mostly reuses the movement code, which is very interesting.&lt;br /&gt;
&lt;br /&gt;
At the very least the graphics displaying the risk evaluation are very satisfying to watch, even if these experiments don't find their way into a released bot.&lt;/div&gt;</summary>
		<author><name>D414</name></author>
		
	</entry>
</feed>