Le CMU-2000 fournit une classe PositionInfo, qui hérite
des méthodes et des variables de plusieurs autres classes de
l'implémentation (PositionInfo, PlayerInfo et
OptionInfo). La classe PositionInfo contient toutes
les informations déduites de la communication avec le serveur de la
simulation, soit une image symbolique mais brute de l'état du monde.
Le CMU-2000 modélise les objets de l'environnement par une suite de
classes géométriques, décrites dans la figure
. Parmi les
informations contenues dans la classe PositionInfo:
La classe PositionInfo fournit de plus de nombreux accesseurs
(méthodes permettant d'accéder aux données de la mémoire)
et de nombreux facilitateurs (méthodes permettant de simplifier
l'accès et la modification de structures de données complexes en
mémoire). Notamment, elle fournit des facilitateurs définissant des
prédicats simples sur les objets de l'environnement (distance à la
balle, calcul de la vitesse d'un objet, vérification de la validité de
la position d'un coéquipier, etc.). Elle propose de plus des prédicats plus
complexes, utilisables directement pour faciliter l'évaluation des
actions en cours (par exemple le nombre de joueurs adverses dans un
cône donné, ce qui est utile pour évaluer les chances de
réussite d'une passe).
Notre implémentation utilise intensivement CMU-2000 pour gérer la couche protocole (attente de l'arrivée de messages, interprétation des messages reçus, mise à jour de l'état du monde en fonction de la réponse du serveur, etc.) et pour les primitives effectrices de bas niveau (avancée d'un pas, impression d'une accélération sur la balle, etc.). De même, nous utilisons certains facilitateurs de la classe PositionInfo pour simplifier des calculs géométriques et pour factoriser les calculs de position.