Day extends Night, but changes the color from black to white.
Skilgannon
My first TwinDuel bot(s), and my first team. It is designed so that I only have to change a few constants and it will be able to act as a full 5v5 team. It also uses rudimentary friendly-fire avoidance, by using Line2D.Double.distSeg(Point2D.Double) and projecting the absolute bearing of bots.
The latest version looks pretty strong, but 1.0 was a bit of a flop.
It uses MinimumRiskMovement with several ideas taken from Shiz, but all my own code and implementation.
1.0 used a segmented PlayItForward? gun, which rebuilt 50 movements, but the recent versions use a simple GuessFactor gun, based off of Connavar, and adapted to hit non-orbital movements.
It randomly reverses every now and again, according to when Raiko's flattener says it should. I should probably switch to Waylander's flattener, though.
I tried to use functions for everything, so that there are no specific cases for 2v2, 2v1, 1v2, or 1v1. The closest it comes to special casing is by segmenting its gun on the number of teammates it has.
It attacks bots that are:
No saving between matches (TwinDuel rules), but between matches it saves the sucessful GuessFactors
They are the two swords wielded by Skilgannon in several books by David Gemmell.
Under the following terms:
Beating LuminariousDuo and MarioBros - how I have no idea
None really....some of the gun stuff I double checked against Connavar
Nice name. =) Going to do one black one white like YinYang? --David Alves
If I continue with the idea, then yes, definately =). I realised it was a bit tough to fit a pattern matcher that stored data on multiple enemies, and has scan interpolation, and still fit a GF gun with scan interpolation, so I've made something that is a cross between the two: a segmented play-it-forward gun, that reconstructs the last 50 movement patterns in that set of 'bins'. I've also got an optimal radar scanning (inspired by a comment by Voidious) that scans in the direction of the enemy who was scanned the longest time ago - so it should be pretty effective for melee as well. It's got my-location sharing, which will be used for movement. Right now I'm at 1200 bytes, and all I have to add is the movement. I'm pretty sure I'll go for MinimumRiskMovement - although a special case for 1v1 at the end would be nice if I can fit it =). -- Skilgannon
Enumeration allE = enemies.elements(); double otherAngle = absBearing; int oldestScan = Integer.MAX_VALUE; do{ EnemyInfo tmp = (EnemyInfo)allE.nextElement(); if(tmp.lastScanTime < oldestScan && tmp != eInfo && tmp.isAlive && !(eInfo == currentTarget && getGunHeat() < 1)){ otherAngle = absoluteAngle(myLocation,tmp.location); oldestScan = tmp.lastScanTime; } }while(allE.hasMoreElements()); setTurnRadarRight(Utils.normalRelativeAngle(otherAngle - getRadarHeadingRadians())*2);
-- Skilgannon
I'm going away until next week wednesday....so I don't think I'll have an entry this week. Good luck, guys! -- Skilgannon