Cause?
The highlighted comment was created in this revision.
Hmm... I don't think so. While IMO it's important to handle "oops, I skipped a turn and lost my radar lock" gracefully, that would have a similar probability of affecting any given round out of the 35 rounds, which would likely not result in such a huge gap between battles.
Whatever the problem is likely is something that affects subsequent rounds after the problem first occurring I think... Times like this make me wish Roborumble sent slightly more information to the server (i.e. per round results, or compressed robot stdout logs for the last <insert-number-here> battles in the rumble)
A few little spots where NullPointerExceptions crept in. Just needed a few sanity checks here and there. Wave surfing with a kNN is very interesting in round one.. where there may be little or no data to go on yet!
I would argue that aspect is more of an issue for VCS, because in kNN you'll always get at least one data point after the first wave passes, whereas in VCS you could get no data even after the first wave passes. Though in both cases you need to handle the no-data case gracefully of course.
What bites me is that I cull points via displacement vectors (points that would lead off of the battlefield), so it's still feasible for me to end up with an empty return till about 1/2 to 3/4 of the way through round one.
I really should drop the displacement culling and see if it hurts/helps. It may be a bit of complexity I don't need.