From Robowiki
Jump to navigation Jump to search


Subsections: /Workshop - /History


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.

Performance BotMeleeDuels
Ugluk v0.13.016281807
Ugluk v1.015471837
Ugluk v1.1.01639n/a
Ugluk v1.1.11649n/a
Ugluk v1.2.0n/a1788
Ugluk v1.2.1n/a1758
Ugluk v1.2.2n/a1771
Ugluk v1.2.3n/a1779
Ugluk v0.15.2108356121
Ugluk v0.15.78537599
Ugluk v0.15.98637998
Ugluk v1.1.1Melee2986%
Ugluk v0.15.9Duels5589%
Ugluk v1.0Beat 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.0Achieve Top 10 or 1700+ rank in Meleerumble.
Ugluk v3.0Achieve Top 30 or 1900+ rank in Roborumble.
Develop new targeting and movement concepts.

Targeting Challenge

Bot BFly CC Chk Cig Cya DM FM Grb RMB Tig Total
Ugluk v0.15.2 99.36 65.81 88.45 87.69 78.14 92.71 85.56 80.91 87.65 76.86 84.31
Ugluk v0.14.TC 98.45 61.37 87.37 84.97 72.11 92.58 87.60 83.15 85.91 74.05 82.76
Ugluk v0.14.1a 97.59 65.70 86.27 84.19 70.80 92.03 84.92 83.86 85.60 77.73 82.87
Ugluk v0.14.1b 96.90 59.63 79.14 71.84 64.48 84.92 76.01 73.89 77.82 75.12 75.97
Ugluk v0.14.1c 93.30 37.68 56.16 76.33 37.17 91.30 64.09 72.27 69.44 55.35 65.21
Ugluk v0.9.6+ 96.45 54.12 73.65 72.18 62.05 90.70 87.26 83.53 90.15 79.85 78.99
Ugluk v0.8.5 91.71 3.26 21.41 64.49 7.45 90.47 70.11 85.21 85.33 19.58 53.90

Movement Challenge (wave surfing)

Ugluk v0.15.899.4499.9398.4999.29
Ugluk v0.15.7MC95.0597.0597.3496.48
Ugluk v0.14.MC97.3699.3498.0398.25
Ugluk v0.14.590.9396.9597.9895.29
Ugluk v0.14.x60.7094.3098.0384.34
Ugluk v0.9.6+76.1453.6653.0660.95
Ugluk v0.7.727.9654.9761.1648.03

Head to Head (Targeting vs Movement)

TC BotMC BotTC ScoreMC Score
Ugluk v0.14.TCUgluk v0.14.MC93.536.47
Ugluk v0.15.7TCUgluk v0.15.7MC78.5721.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.

Energy Management

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.