In our team structure, players are organized into team formations with each player filling a unique role. However players can switch among roles and the entire team can change formations. Both formations and roles are defined as part of the locker- room agreement, and each player is given a unique ID number. It is a significant challenge for players to remain coordinated, both by all believing that they are using the same formation and by filling all the roles in the formation. Since agents are all completely autonomous, such coordination is not guaranteed. For more details on the issues relating to this team structure, see [9].
As proposed in Section 3, all of our agent messages are of the form:
(CMUnited <Uniform-number> <Encoded-stamp> <Formation-number> <Formation-set-time> <Position-number> <target> <Message-type> [<Message-data>])For example, player 8 might want to pass to player 6 but not know precisely where player 6 is at the moment. In this case, it could send the message (CMUnited 8 312 1 0 7 --> 6 Where are you?). ``CMUnited 8'' is the sender's team and number; ``312'' is the <Endcoded-stamp>, in this case an agreed-upon linear combination of the current time, the formation number, and the sender's position number; ``1 0'' is the team formation player 8 is using followed by the time at which it started using it; `` 7'' is player 8's current position; ``--> 6'' indicates that the message is for player 6; and ``Where are you?'' is a message type indicating that a particular response is requested: the recipient's coordinate location. In this case, there is no message data.
Upon hearing such a message, any teammate would update its internal state to indicate that player 8 is playing position 7. However only player 6 sets its response and response-flag internal state variables. In this case, since the target is a single player, the communicate-delay flag remains at 0. Were the message targeted towards the whole team or to a subset of the team, then communicate-delay would equal:
where communicate-interval is the time between audible messages for a given agent (200ms in this case). Thus, assuming no further interference, player 8 would be able to hear responses from all targets.
Once player 6 is ready to respond, it might send back the message (CMUnited 6 342 1 0 5 --> all I'm at 4.1 -24.5). Notice that player 6 is using the same team formation but playing a different position from player 8: position 5. Since this message doesn't require a response (as indicated by the ``I'm at'' message type), the message is accessible to the whole team (``--> all''): all teammates who hear the message update their world states to reflect the message data. In this case, player 6 is at coordinate position .
Notice that were player 8 not to receive a response from player 6 before passing, it could still pass to its best estimate of player 6's location: should the message fail to get through, no disaster would result. Such is the nature of most communication in this domain. Should there be a situation which absolutely requires that a message get through, the sending agent could repeat the message periodically until hearing confirmation from the recipient that the message has arrived. However, such a technique incurs high action costs and should be used sparingly.
Notice that in the two example messages above, both players are using the same team-formation. However, such is not always the case. Even if they use common environmental cues to trigger formation changes, one player might miss the cue. In order to combat such a case, players update the team formation if a teammate is using a different formation that was set a later time. For example, if player 6's message had begun ``(CMUnited 6 342 3 50 ...'' indicating that it had been using team formation 3 since time 50, an internal behavior in player 8 would have changed its internal state to indicate the new team strategy. Thus our team was able to remain coordinated even when changing formations.
Other examples of communication used in our implementation of simulated robotic soccer players include:
We found that the resulting updates of player world states and internal states greatly improved the performance of our team.