Energy Management & Firepower Selection
This is the thread's initial revision.
You know, your description of using score estimation based firepower selection, reminded me that back in 2010 I was working on a thing akin to that for Midboss 1s. Unfortunately that version had to be pulled from the rumble (replaced with an older version without this feature) for being a bit too slow and having a habit of skipping turns, and I never actually got around to re-introducing a bot using the technique or optimizing it.
I never released the code to that before, but posted it here for interest's sake: Midboss/Score-Estimation_based_Firepower_Selection
I find it interesting to compare what I built back then to what BeepBoop is doing.
It had some score estimation formulas that were pretty similar to BeepBoop's.... but what really made it slow is it performed that score estimation formula absurdly many times per tick. Rather than be content with some continuous-time estimate based on average rate of damage, it did brute force prediction of discrete future waves, all the permutations of hits/misses, for up to 30 waves into the future (though with caching to effectively re-join alike branches, since 2^30 would get silly), only performing the sort of score estimation BeepBoop does at a depth or minimum probability limit.
I'm not sure how much extra going for simulating discrete branching possibilities with discrete waves gained me, but the idea was that it this would give it some more interesting emergent 'cleverness' around the precise timing of things or amount of energy left for firing toward the very very end of the round. Boy did it chew up CPU though.
The fact that BeepBoop is using a form of score estimation in it's firepower selection, tempts me to some day go back to try to refine what I had started back then, so thanks :-)