err, the thing is we didn’t use any interesting algorithms for it. Most of the logic implemented is based on if-then-else statements. I.e. if a player doesn’t know where the ball is, it will first look at the last position it has seen the ball and if still not found, will start turning around.
Unfortunately, the codebase we started working with didn’t have any debugging facilities and had some low-level bugs, so we had to fix those first and then we barely had any time to work on implementing smarter algorithms for decision-making. The problem with clients was that they only took information available at time t for making a decision for the step t+1. We started rewriting the code to make the client have some ‘memory’ (i.e. take into account steps t-n) about it’s past actions. This worked on some of the simpler actions, but we didn’t have time to extend it to more complicated things.