Keep in mind that the segmentations used here are from FloodMini 1.3, but each segmentation has one more bucket that basically means "not segmented on this parameter".
// 2 wall, 3 latv, 3 acceleration, 10 distance, 31 guessfactors stats = new int[3][4][4][11][31];
With 4 segmentations, I have 16 stat buffers, so here I insert a hit into all 16 of them.
//the indexes are from 0 - (number of segments-1), segment is the bucket that hit. public void addStat(int wall, int acc, int latv, int dist, int segment) { //add the stat to each of the sixteen guns: for (int i=0; i<16; i++) { int tempdist = (i&1)*(dist+1); int templatv = ((i>>1)&1)*(latv+1); int tempacc = ((i>>2)&1)*(acc+1); int tempwall = ((i>>3)&1)*(wall+1); stats[tempwall][tempacc][templatv][tempdist][segment]++; } }
Now we need to figure out what direction to shoot for a specific VG. The comments which are from the original bot explain the gunID variable, which is a number from 0 to 15 in this case and is also what i is in the previous snippet:
/** * Explaining the gunID: * - if the gunID is odd, distance matters in choosing a firing angle. * - if the gunID/2 is odd, the lateral velocity at firetime matters in choosing a firing angle. * - if the gunID/4 is odd, the current acceleration/deceleration state is relavant in choosing a firing angle. * - if the gunID >= 8, the relationship to the wall is a relavant factor. * the same correlation is used to add stats to the buffer above, where the loop counter 'i' is equivalent to gunID. **/ public int getStatIndex(int wall, int acc, int latv, int dist, int gunID) { int tempdist = (gunID&1)*(dist+1); int templatv = ((gunID>>1)&1)*(latv+1); int tempacc = ((gunID>>2)&1)*(acc+1); int tempwall = ((gunID>>3)&1)*(wall+1); int bestindex = 15; int[] buffer = stats[tempwall][tempacc][templatv][tempdist]; for (int i=0; i<31; i++) { if (buffer[i] > buffer[bestindex]) bestindex = i; } return bestindex; }
So all this should give you some idea what level of hackery I'm capable of when no one is looking, and what exactly powered the massive FloodHT 0.7 gun array (there were on the order of 30 guns, and 16 came from doing this, and 8 came from doing this on a different kind of gun). When I figured out, however, that FloodMini's gun was more effective than FloodHT's, I decided that the VG thing wasn't working for me, and after Iiley discovered the same problem in his work on a pre-release BlestPain, I tried to convince PEZ and Marshmallow to give up on it ;-) -- Kawigi