Thanks CG team!
11th in Silver in a last minute push.
I only noticed the contest once it was about half over. Oops. Still I decided semi-spontaneously to participate.
I liked that it was very simple to get started, and the first two wood leagues were easy to get out of.
I didn’t really search – I went with trying to pick the best move with a complex eval function. This was apparently a mistake, as search with a simple eval function seems to have performed very well.
In the early leagues, I just worked out how ‘far’ I was from a potion, with the base spells, and moved towards the best “DPS” (gold / turn). Improving that by factoring in needing to rest and tracking back got me into low silver, I think.
I think added buying spells. I judged them by counting the ‘value’ of ingredients they produced versus used, bumping them further if they were repeatable, and if they didn’t need any ingredients to be cast (as those are always applicable, and presumably valuable). I wanted to factor in a penalty if they required too many items.
I also added the tax and bonus afterwards. I think this worked fairly well. I later put a time factor in (which seems a really important thing in multiple places in the game). This got me to middle of silver, I think.
The biggest problem was that I didn’t take into account the new spells, except if one was immediately applicable.
So, I did a fairly big transform of doing a search (sort of guided, but not really) to find how far away potions really were. This got me to about 500, I think. It had some bugs, and I think was not very efficient.
I then changed things in kind of a big way again, unifying my eval to evaluate the world, and just trying all moves. This was quite last minute. In it I use my exact potion distance, and just combine the money I have with a mix of distances to the nearest (by tweaked DPS) of all potions. I like this because it unifies resting, casting, and buying potions. I put in some special cases, like checking if I would win (6th potion and more gold) and boosting that.
Here tweaking made a big difference, but I hadn’t set up local testing, and submission was so slow, I just kind of winged it, but got a pretty good improvement.
I didn’t consider the opponent at all.
I liked that the contest was different; I didn’t like that debugging / tweaking was so hard – in other games I’ve been able to often see where my program did something clearly wrong – this one seemed much more slightly different balances that might have gone differently in different cases. It also just didn’t feel very creative overall – but that may have been because my basis wasn’t solid enough.
In any case thanks to CG, the participants, and all the people posting here, as it’s great reading!