CS344M: Autonomous Multiagent Systems -- Fall 2012: 2D Programming Assignment 3

2D Programming Assignment 3 for Autonomous Multiagent Systems (cs344M)


This assignment assumes the knowledge gained from the 2D versions of assignment 1 and assignment 2. If you did not do the 2D version of assignment 2, you should read through it before continuing.

Your goal is to use communication to help an agent improve its performance in some way. Details for an example task are given here. It is expected that many of you will choose to follow the example (which is perfectly acceptable). But you may choose any other task (except for the tasks from assignment 2) as long as you can show a noticeable improvement with communication when compared to no communication. Before choosing another task, be sure to send us an email to ensure that it is acceptable. Even if you don't use the example, you should still read carefully through the hints since they may be applicable to your task.


  • Create an agent whose sole goal is to face the ball as much as possible. When you drop the ball in a new location, it should find and face the ball again as quickly as possible. Once the player is placed on the field (e.g. with the move command), it should not change location again.
  • Note that your player from assignment 2 can already do this. But now, you may use up to 3 other agents placed on the field to watch and communicate (with the "say" command - see page 34 of the manual).
  • None of the players will need to dash or kick - only turn and say.
  • As in the previous assignment, you are encouraged to base your code off of the sample agent - you still don't need to parse the entire see messages.
  • You can create two different types of agents - one that tries to face the ball as quickly as possible and one that is watches and communicates. However, most of you will likely find it easier to just design one agent that communicates and tries to face the ball quickly (and then have all four players run this code).
  • The communication protocol among the agents is for you to design.
  • Some details:

  • Put the player that's trying to see the ball in "narrow" view mode (45 degree view cone), by sending the command "(change_view narrow high)". That will make the difference between the comm/nocomm conditions more visible. See pages 37 through 40 of the manual for more information.
  • Keep in mind that when the player is in narrow view mode, it gets sights twice as frequently. That means that it can get more than one sight in a given cycle. Be careful not to send more than one turn (or kick or dash if doing a different task) in the same cycle. You can check if the sight is new by tracking the time stamps at the beginnings of the messages.
  • The helping players can be in either narrow or normal view mode (45 degree or 90 degree view cone), but don't put them in wide mode (180 degree view cone) -- that is, among the 3 of them, there should be a blind spot unless they do some scanning themselves.
  • In the end, there should be a visible improvement in the speed with which the player can find the ball when using communication vs when not using communication.
  • Remember that there is a limit to the range of communication (see page 35 of the manual). As such, plan the positions of your players accordingly.
  • By default, messages can only be 10 characters long. If you need to increase this value, you can do so by changing the line
    server::say_msg_size = 10
    in the copy of .rcssserver-server.conf in your home directory (see hint from part 3 of 2D programming assignment 2).
  • You will also probably also want to set the line
    server::forbid_kick_off_offside = true
    to be false (as you did for parts of the previous assignment). Depending on your task, you may want to set other lines differently than their default values.
  • What to turn in:

  • 2 logfiles with player 1 (make sure it's player 1 so I know which one to look at) trying to face the ball: one without communication, called [yourlogin]-nocomm.rcg, and one with communication, called [yourlogin]-comm.rcg. In both cases, drop the ball around the field in a wide variety of locations to exhibit the robustness (or lack thereof) of your agents to different ball positions.
  • Your modified source code as [yourlogin]-source.c. Comment your code such that I can follow what you did and easily run your communication and non-communication tasks (ie, try to make it easy to turn communication on and off). If you have more than one source .c file to turnin, please name them reasonably and prepend your login to the file names.
  • If you did the 2D version of assignment 2, you must also submit a new log file called [yourlogin]-passWithCom.rcg and updated, commented source code called [yourlogin]-passWithCom.c. These files should reflect an improvement - through the use of communication - to your solution to part 3 of 2D programming assignment 2.
  • To turn in your files, use the turnin program with grader "eladlieb" and assignment label "prog3". When the assignment is there, send us an email to that effect, clearly stating that you submitted the 2D version of assignment 3 in the email subject. Be sure to include a brief description of your task (even if you did the example task), a brief description of your communication protocol, and an answer to the following question: 'Could an opponent agent disrupt your communication method? How?' . Also note if you changed any lines in .rcssserver-server.conf other than the two mentioned above in the details section.
  • Grading Criteria

    You will be graded on how much you can improve your agents using communication. Note: If you did the 2D version of assignment 2, and you do not submit a new log file and updated source code that uses communication to improve upon your passing solution to assignment 2, then you will lose 2 points on this assignment.

    [Back to Department Homepage]

    Page maintained by Elad Liebman
    Questions? Send me mail