The big challenge in this contest was the number of different choices to be made each round. With 2 wizards, up to 7 balls, 2 bludgers, 2 enemies, and 4 potential spells to use, the options quickly compound. Early on, I struggled with how to best handle this, until I came up with a generic command and ranking architecture. This allowed me to iterate through the breadth of options, generate ranked values for each possibility, and then execute whichever ones gave me the best possible score.
Other factors that strongly contributed to performance were how to calculate which wizard pursued which balls, optimizing the trajectory and thrust trigonometry for best intercept, and finally simulating trajectory of shots on goal to avoid getting blocked and maximize scoring potential. By having a generic system that assigned value ranks to each action, I was also able to adjust weighting and scoring ratios to optimize my wizards' AI behaviors. This made a big difference once I broke into the top 100, because I needed a way to genetically adjust to wins and losses in order to slowly climb up the ranks.
This was another great, engaging contest and I'm sad that it's over. I can't say enough good things about CodinGame. I look forward to seeing reading the breakdown of the contest once all the data is analyzed, and I hope I can learn enough to improve on my performance even more for next time and maybe threaten for a top spot.
No comments:
Post a Comment