|Movement||Minimum Risk Movement|
Coriantumr was a military leader trying to gain control of the fallen government of his people. He was warned that if he continued warring that he would see the utter destruction of his civilization:
And in the second year the word of the Lord came to Ether, that he should go and prophesy unto Coriantumr that, if he would repent, and all his household, the Lord would give unto him his kingdom and spare the people— Otherwise they should be destroyed, and all his household save it were himself. And he should only live to see the fulfilling of the prophecies which had been spoken concerning another people receiving the land for their inheritance; and Coriantumr should receive a burial by them; and every soul should be destroyed save it were Coriantumr. And it came to pass that Coriantumr repented not, neither his household, neither the people; and the wars ceased not; and they sought to kill Ether, but he fled from before them and hid again in the cavity of the rock. (Ether 13:20-22)
And so it happened, Coriantumr was the last survivor of this war. This robot was built with the same idea in mind - be the only one alive when the dust clears. I've long thought that if I could make a great melee bot, I would name it Coriantumr (in fact, I've probably started bots called "Coriantumr" three or four times before this, but none embodied the name). I'd like to think that this is that bot.
- Kawigi - I was liberal, however, in researching ideas through the wiki and repository and in the code of a few reasonably good melee bots.
- What's special about it?
- You haven't robocoded until you've tried to make a melee strategy that works.
- How competitive is it?
- With a couple days of time, it has shown. Version 1.0 is currently:
- 1680.02 (#7) in general melee (2 rating points away from my target)
- 1675.3 (#2) in mini melee (right where I had hoped)
- 1768.83 (#35) in general 1-on-1 (this was higher than I expected, but it appears to do extremely well against a lot of weaker bots)
- 1774.21 (#12) in mini 1-on-1 - ahead of Fhqwhgads, which was a big surprise to me.
- It's among the most successful and influential melee bots. Currently #2 in the MiniMeleeRumble.
- How does it move?
- It uses Minimum Risk Movement. Conceptually, it's not a whole lot different from FloodHT, but the implementation is completely different. The thing I like about the implementation is that it has some coherence and consistency, but is able to change its mind in mid-move, too. I'd have to post the entire findRisk method to really elaborate how it evaluates movement vectors, but if you're interested, read it yourself. It's fairly documented. Basically, every tick it looks at around 60 points at a uniform distance around it, and if any of those points are better than the point it's currently driving to, it will switch to go toward that one. This way it is able to react to changes in its environment quickly, but it is tweaked to still mostly continue in the same direction for most of the distance to its destination.
- How does it fire?
- It uses a GuessFactor gun that is segmented differently between melee and one-on-one battles.
- How does it dodge bullets?
- Dodge bullets?? Coriantumr is mostly trying not to get shot at in the first place. When being shot at is inevitable, though, it just sort of moves perpendicular, usually avoids head-on aim fairly well, and stays away from its opponent as much as possible without risking being targeted by others.
- How does the melee strategy differ from one-on-one strategy?
- There are a few movement tweaks to improve its one-on-one performance, but most of the movement code in this robot is centered around avoiding confrontation in melee. Its targeting is also different between the two - it's first segmentation axis is whether or not it's in a melee battle. Its third is bullet flight time. The middle one is acceleration in one-on-one, or lateral direction in melee. By lateral direction, I mean whether the opponent is moving toward, away from, or laterally from me.
- How does it select a target to attack/avoid in melee?
- It usually attacks the closest enemy to it, but it tries not to change targets in the middle of aiming. It tries to avoid everyone, if possible - Coriantumr is only happy when it is in a position where every other robot has a better target than Coriantumr.
- What does it save between rounds and matches?
- Saves stat buffers for each opponent between rounds, nothing between matches. I tried to add data saving and loading, but it was too big, so I used the space I had elsewhere.
- Where did you get the name?
- See the top. He's an interesting warrior from the Book of Mormon (  ). Look in the Book of Ether, starting at the end of chapter 11.
- Can I use your code?
- The code is released under the Kawigi Public License. You are welcome to use it, but not to make an even better bot with it and beat me. I know, it's a strange license agreement. I release the source because I think it will help people understand what Minimum Risk Movement is all about, since there doesn't appear to be a large number of open source bots who use it. Coriantumr's evaluation of whether it will become a likely target for other robots embodies Minimum Risk Movement in such a way that it is no longer just an implementation decision for Anti-Gravity Movement.
- What's next for your robot?
- Find some space for either better one-on-one movement or a cool victory dance.
- Does it have any White Whales?
- Not really sure. My bots have usually had trouble with shinh.Entangled in melee, but I'd say the goal I had with this robot was to reach the level of Nimrod and HawkOnFire.
- What other robot(s) is it based on?
- FloodHT, HawkOnFire / GlowBlowMelee, little code ideas from Troodon and Nimrod, little hints David Alves wouldn't give me about DuelistMiniMelee.