Les équipes de programmes footballeurs s'affrontent par le biais
d'un serveur de simulation développé par Itsuki NODA,
[#!noda-1995!#]. Chacune des équipes est distribuée en plusieurs
processus et est composée
d'autant de programmes que de joueurs, se connectant tous sur le
serveur par le biais de connexions de type UDP/IP. Chaque joueur est
donc un processus isolé des autres, n'ayant aucun moyen de communiquer
directement avec les autres ni de partager sa mémoire. Chacun des joueurs est
représenté identiquement par le serveur, sauf le gardien de but qui
possède un effecteur supplémentaire pour pouvoir attraper la balle. Un agent spécial est
également disponible, l'entraîneur. L'entraîneur a une vision
extérieure du jeu mais ne peut pas y agir physiquement.
Le but du serveur de simulation de la RoboCup est d'éviter les
problématiques de mise au point mécanique. La simulation de la
RoboCup conserve néanmoins la complexité du traitement de
l'information et de la perception du monde. Le serveur approxime les
conditions d'un milieu réel: la perception de l'environnement tout
comme les communications sont bruitées. L'environnement simulé n'est
pas discrétisé et les effecteurs de chacun des agents sont proches de
leurs équivalents physiques réels. Par exemple, malgré leur volonté,
les agents se déplacent moins vite lorsqu'ils sont fatigués. Enfin,
l'architecture des canaux de communication informatiques entre les
joueurs et le serveur (utilisation d'UDP, mécanisme rapide mais non
fiable) rend impossible la prédiction de la réussite ou de l'échec
de la communication avec le serveur.
Le simulateur et les joueurs communiquent grâce à un protocole réseau défini dans [#!sserver-manual-1999!#]. Le serveur envoie à intervalles réguliers des informations sur l'état du monde au client et ce dernier agit sur le monde en envoyant des requêtes définies par le protocole de la RoboCup au serveur. Il est intéressant de noter que le serveur n'accepte qu'une et une seule action par intervalle de temps déterminé. Dans le cas où un client en enverrait plusieurs, le serveur en choisi une au hasard.