Yeees, I’ve reached Legend. I just needed two and a half more weeks after the contest 
Here I’ve described how I got to Gold during the contest. After that I had a couple of days left and I wanted to implemented sequential MCTS, but the bugs kept stacking and stacking and I couldn’t get into the time frame of the contest, but I was determine to fulfil my ideas.
It was really hard for me to debug the big search tree, so I decided to invest several days to implement a visual debugger for the tree, using D3 js, which looks like this:
I’m backpropagating [+0; +0.5; +1] for lose, draw, win for the owners of the nodes:
This debugger allowed me to interactively observer each iteration for each turn of the MCTS algorithm:
This helped me to clear all bugs related to tree building.
I had big problem preserving the tree between turns, but after @Magus gave an advise (to try the moves for the children of the current root) I’ve got it right.
The other big nasty bug I was fighting for days was that I started to build the tree form the perspective of the the opponent…
So in the end apparently “little” things(and implementing correct simulation) cost me most of the time, but hopefully I’ll clear these things on the next contest 
The lessons I’ve learned on the path of reaching Legend:
- Clever pruning of moves(for expand and rollout) is very important, here I’ve used @Magus’s strategy again. Even though MCTS is advertised to work well with big branching factor, to get in the 100 ms time limit it’s best to lower that factor.
- Pure Monte Carlo Simulation with UCB works really well(against Gold bots) and it could be used to debug the simulations and also to implement the MCTS, actually in my opinion MCTS is way better MC+UCB.
- Sequential(classic) MCTS could work pretty nice for simultaneous games.
Great game 
Legendary


