Ugluk is the name of an orc in The Lord of the Rings. He leads Saruman's Uruk-Hai to snatch the halflings and return them to Saruman unspoiled. In the movie he's the one with the bow shooting Boromir and fighting Aragorn, though he dies near Fangorn Forest in the book. I started using the name while playing World of Warcraft, and it seemed a suitable persona for a melee tank. Ugluk is the sum of my Robocode experience. I have no plans to develop any other competitive bots. All of his code is my own, though I certainly read the wiki and discuss concepts freely.
|Ugluk v1.0||Beat all of GrubbmGait's bots consistently in duels.|
Beat all of Loki's bots consistently in duels.
Achieve Top 50 or 1800+ rank in Roborumble.
|Ugluk v2.0||Achieve Top 10 or 1700+ rank in Meleerumble.|
|Ugluk v3.0||Achieve Top 30 or 1900+ rank in Roborumble.|
Develop new targeting and movement concepts.
Movement Challenge (wave surfing)
Head to Head (Targeting vs Movement)
|TC Bot||MC Bot||TC Score||MC Score|
|Ugluk v0.14.TC||Ugluk v0.14.MC||93.53||6.47|
|Ugluk v0.15.7TC||Ugluk v0.15.7MC||78.57||21.43|
Ugluk has a set of proven guns for projection or statistical targeting. Performance statistics are segmented in the same way as bearing offsets, and gun selection is based on the best performing gun under the present situation. Firepower is determined prior to determining targeting, and a virtual wave is fired each round with a firing angle associated with each gun. Segmentation reduces the effectiveness of stop-n-go movement styles.
Ugluk has a selection of movement styles to choose from. The best performing movements are selected through atrittion. Most movements augment their style with repulsive fields for walls and robots. Some do not, including my latest movement style which determines possible destinations in a hexagonal grid and iteratively projects both it's movement and the anticipated trajectories of enemy bullets. I have four tangental 'wave surfing' styles, none of which work especially well. I do not have any techniques implemented for adjusting wave surfing according to actual bullet hits. In melee I try to strike a balance between 'securing a corner and squatting' and 'moving around to avoid being targeted for long'.
Ugluk's scanning has undergone some small revisions, mostly matters of style, but also avoiding some potential skips. The beam is really really narrow and hopefully that will scare my opponents into believing that I know what I'm doing. If the radar does lose its target (most likely due to an opponent's running into something) it will start sweeping again after a few ticks.
There are a few aspects to Ugluk's energy conservation, but the most important is that he won't take a shot in a duel if taking the shot gives the energy advantage to his opponent.
Debugging, Statistics, and Persistence
Debugging is broken down into 'lines', 'debug', and 'exception'. Lines are sent to the console print stream. The rest is written to file due to volume.
Statistics for energy management, targeting hit percentages for each gun and target, and melee placement (nod to Kawigi) are tracked and displayed to one debugging output or another.
Presently only debugging information is persisted to file, though I've played with storing and retrieving targeting statistics. They just take too much room when fighting 400+ bots.
Archnemeses / White Whales
My white whale is Freya, but she's somewhere on the horizon now, and I am not actively chasing her. In general Ugluk wants to conquor opponents who will fight back when defeated (i.e. are under active development) so he's targeting the offerings of Loki and GrubbmGrb primarily, and aspires to oust Corbos and wcsv in time. Eventually it would be nice to take out Mue, ABC, and PEZ as well, but I'll talk that talk when Ugluk can back it up.