Positioning

For most roles, there are different positional computations, but all of these can be found in PositionComputations.cpp All roles with multiple robots (defenders, attackers, wallers) are calculated at the same time, to make it flexible for the amount of robots assigned to that role.

For single roles (harasser, keeper, passer, receiver, etc.) only one position is computated.

Profile Different roles have different desires when being positioned. An offender that is preparing to shoot at the goal needs to have visibility of the enemy goal but the possibility of a successful pass also needs to be taken into consideration. A profile includes four desires: openness of the robot, line of sight between ball and robot, the potential for the position as a position to shoot at goal from and a blocking score.

Saving information Within every tick the world state stays the same, this means that all computations and evaluations are the same for that tick. To reduce the number of computations, the computations made are saved linked to a position in its raw form (score and not the score multiplied by the weight). If the score of a position is demanded, the code will check if the computations for the required factor was already made this tick and takes that value, or if not, compute the score of the position for that factor.