I think this is a little more widespread as a strategy than thought, and that’s something I’m not as ok with.
I remember an issue when we developed this (for the purpose of replaying matches against ourselves and getting debug messages from our algo). When a parsed game like that ends, there aren’t any more turns to play, so your algo crashes. To fix this, when games go “off script,” we made the last turn repeat itself if the game hasn’t ended. That way, the algo doesn’t crash and get removed if we decide to upload it to get the debug messages vs ourself.
So did You’re_Allowed_A_Wand in their round robin match against Demux. It looks like the last round of that match is round 22, as they repeat the same turn until they lose, having gone off script. Looking at their computation times, it’s a very similar system. I’d love to hear from @16daystocode on their system for this.
UPDATE: All of You’re_Allowed’s matches did this. Looking at one of their previous version’s matches, I am unable to find a single instance of them using their own algo. I’m not sure they have one.
On a separate note, turns out, my match against Kauffk faced a replay of KKroep’s algorithm as well. It looks like the same series of KKroep’s algos that You’re_Allowed selected, though I can’t place that as a Transistor or Demux. I figured I’d introduce my thoughts on “countering” this cheese strategy, as it seems my algo took it off script almost immediately, and I think I know why. Hopefully this helps people focused on pioneering the designs of algos, like mazes and transistors, and makes them less susceptible to copy-cats and parsed replays of defeats.
Firstly, I selected a different algo than what was on the leaderboards. This isn’t incredibly useful in countering this strategy, but it is worth noting simply having a new version can send these games “off script” and tilt the game in your favor.
Second, my algo does care about what the enemy placed turn 0. Skipping a turn and “catching up” on placements by round 1 will alter the behavior of my algo. I would recommend doing something with turn 0 enemy placements (or the lack thereof) if you want to ensure your algo takes things “off script” at minimal disruption to you.
Third, a little bit of RNG may help. I haven’t incorporated this yet, but I really liked @codegame 's idea of using RNG when two equally good attacks could be selected.