I, Developer


My RTanque bot

Written by John Moses on June 30, 2013

KCRuby is running a RTanque contest right now. I heard about this when Wes Garrison gave a presentation on Ruby at Cerner’s internal tech conference and gave a plug to KCRuby.

RTanque

RTanque is a tank game where you create your own tank (a bot) and target and shoot other tanks. It is based on Robotwar that is back from the 1970s. The underlying framework for RTanque is written in Ruby and uses the Gosu library , a 2d game platform that is available for IOS and soon Android. Your bots are written in Ruby and look like this:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
class Moses < RTanque::Bot::Brain
  NAME = 'Moses'
  include RTanque::Bot::BrainHelper

  TURRET_FIRE_RANGE = RTanque::Heading::ONE_DEGREE * 1.0
  
  def tick!
    self.evade
    if(self.nearest_target)
      target = nearest_target
      kill(target)
    else
      scan
    end
  end

  def evade
    command.speed = MAX_BOT_SPEED
    command.heading = sensors.heading + 0.02
  end

  def kill(target)
    self.command.radar_heading = target.heading
    self.command.turret_heading = target.heading
    if self.sensors.turret_heading.delta(target.heading).abs < TURRET_FIRE_RANGE
      self.command.fire(MAX_FIRE_POWER)
    end
  end

  def nearest_target
    self.sensors.radar.min { |a,b| a.distance <=> b.distance }
  end

  def scan
    self.command.radar_heading = self.sensors.radar_heading + MAX_RADAR_ROTATION
  end
end 

The RTanque repo has instructions on setting the game up. You will need version 1.9.2 of Ruby or higher. By default Mac has 1.8.7 installed, so you will have to use RVM to get it going. Here is a screenshot of the actual game in action.