Thanks for the answer.

I checked out the other bots and gonna try to beat them consistently. My first-evening-bot "Mark I" isn't performing terrible though against them (mainly in "empty", "battle1" is okay though as well). Here's the code for anyone to check out.

**Code:**

-- Mark I.

ship = nil

world = nil

width = nil

height = nil

approaching = 0

arrived = 0

function init(shipIn, worldIn)

ship = shipIn

world = worldIn

width = world:width()

height = world:height()

ship:setName("Mark I")

approaching = 1

arrived = 1

end

xdes = 0

ydes = 0

function run(enemyShips, sensors)

if approaching == 1 or (# sensors:hitByLaserEvents() > 0) or ship:hitWall() then

xdes = math.random() * width

ydes = math.random() * height

approaching = 0

end

shipMoveTo(ship, xdes, ydes)

if (# enemyShips > 0) then

local targetShip = enemyShips[math.floor(math.random() * (# enemyShips)) + 1]

local targetDistance = calcDistance(targetShip.x, targetShip.y, ship:x(), ship:y())

local projTargetDistance = targetDistance

for i=1,10,1 do

projTargetDistance = calcDistance(targetShip.x + math.cos(targetShip.heading)*targetShip.speed*projTargetDistance/25,

targetShip.y + math.sin(targetShip.heading)*targetShip.speed*projTargetDistance/25,

ship:x(), ship:y())

end

local firingAngle = math.atan2(targetShip.y - ship:y(), targetShip.x - ship:x())

local projFiringAngle = math.atan2(targetShip.y + math.sin(targetShip.heading)*targetShip.speed*projTargetDistance/25 - ship:y(),

targetShip.x + math.cos(targetShip.heading)*targetShip.speed*projTargetDistance/25 - ship:x())

ship:fireLaser(projFiringAngle)

ship:fireTorpedo(firingAngle, targetDistance)

end

end

c1 = 1.

c2 = 1.

function shipMoveTo(ship, x, y)

local angle = math.atan2(y - ship:y(), x - ship:x())

local distance = math.sqrt((y - ship:y())^2 + (x - ship:x())^2)

local ax = c1*math.sqrt(distance)*math.cos(angle) - c2*ship:speed()*math.cos(ship:heading())

local ay = c1*math.sqrt(distance)*math.sin(angle) - c2*ship:speed()*math.sin(ship:heading())

local amag = math.sqrt(ax^2 + ay^2)

local aang = math.atan2(ay, ax)

local alim = math.max(amag,1.)

ax = ax / alim

ay = ay / alim

amag = amag / alim

if distance/ship:speed() < 10 then

approaching = 1

end

if ship:speed() >= 0.5 or distance >= 0.5 then

ship:fireThruster(aang, amag)

else

arrived = 1

ship:fireThruster(ship:heading() + math.pi,ship:speed())

end

end

function calcDistance(x1, y1, x2, y2)

return math.sqrt((y1 - y2)^2 + (x1 - x2)^2)

end

Code is very messy and some obvious flaws (like taking the projectile speed 25 for both laser and torpedoes) I fixed in my current working bot are in there as well. Next versions are going to be more sophisticated for sure

.

EDIT: At some point I'm gonna upload some bots to the wiki like you intended. The proper next versions though

.