How does it move?
The main idea behind the movement in all versions of Gem has been that it should avoid popular nanobot aiming mechanisms. For example, in Gem's early days, linear aiming was popular, so I had a version of Gem which moved in a circle. When circular aiming became more prevalent I adjusted its movement to an inverted circle and that still seems to work fairly well.
The latest tweak to the movement has been to start each round with a large movement leg (getBattleFieldWidth?()) which is reduced to normal (160) when Gem hits a wall. What this means is that Gem heads for a wall and doesn't start its normal movement pattern until it gets there.
How does it fire?
Target selection is done by locking its radar onto an opponent, but continuing to sweep either side of it, relying on the fact that onScannedRobot
always delivers events sorted by closest distance first. Bots which are more than 450 units away are ignored until there are less than 3 remaining. Firing is done using a variation on Mike Dorgan's code from Infinity 1.6. Firepower selection is a combination of Gem's energy and the distance to the enemy.
How does the melee strategy differ from one-on-one strategy?
It's purely a melee robot.
Where did you get the name?
When my grandfather first met my daughter he called her a "wee gem". As "wee" is a Scottish word for small, I decided to appropriate it for use in nanobots.
Can I use your code?
By all means. Just make sure that you give credit where it's due.
What's next for your robot?
I have no idea. I didn't think I could get anything more out of Gem 1.8.2, then someone mentioned robocode.util.Utils.normalRelativeAngle
) which gave me a few more bytes to play with.
What other robot(s) is it based on?
The gun comes from Infinity, but other than that, I don't think it's based on anything else.
Where can I get the latest version?
The latest version is 1.8.4. [Click here to download it]
Will there ever be another version?
If I can ever figure out a way of saving a few bytes and beating Infinity 2.1, then it will happen.