Not all bots are created equal. Take distance as an example. Against a given enemy your gun may want a certain distance and the enemy's guns may want a certain distance.
Marshmallow uses serializable tuning factor objects to store information about what distances work best against this or that enemy. This particular dynamic factor has been given a name by
Kawigi;
DynamicDistancing. But it can be applied to anything. Which gun works best? What guess factors should be used? Etc. Whenever you find you are compiling different versions of your bot to try out different factors you might consider making the factor dynamic. Depending on how fast you can rate the factors you should also consider making these factors persistant.
But, be careful as to how you measure the performance of your factors. Merely measuring your own hit rate or just the enemy hit rate will not take you far. Check out MakoHT/Code for a peak at how Kawigi goes about DynamicDistancing. He gives and takes points continously for when firing, taking or giving a hit and so on.
-- PEZ
-Quick question: Why serializable? -- Vuen
So I can serialize the factors. See CompressedSerialization. Marshmallow has all factors in a big hash which it serializes after each round and deserializes before each match. -- PEZ