Deliverable: Simulator Increment 1
For the first formal increment you are to submit design and implementation of a simulator that does the following:
- Connection and handshaking. The following sequence is followed for
each of two controllers:
- The controller connects to a waiting simulator
- The controller sends the message CTF2009 colour
- The simulator sends the message CTF2009
- The controller sends the message STEAL version
- The simulator sends the message STEAL version
- Game set up -- the remaining STEAL protocol states up to and including PlaceFlag
- Player movement -- STEAL protocol state Play, including:
- Accepting (and acting on) the accelerate, spin and placePlayer commands as given in the STEAL specification
- Accepting placePlayer requires simulator debug mode
- Updating player positions according to the laws of Newtonian physics and the constraints given in the CTF2009 specification (clock multiplier, player drift, etc.)
There is no requirement to design or implement collision detection, visibility, scoring, etc. at this stage of the project - though if you can get ahead, do so.
Testing
Test infrastructure and basic test case(s) will be provided. You must include your own tests (at least 10 tests) to verify that your simulator has implemented the above requirements. All test cases will be applied to all team simulators and you will be graded on how well your simulator does as well as how well your test cases do at finding errors in simulators.
Documentation
In keeping with the spirit of live documentation (and to save trees) you are required to submit electronic documents only, preferably in a format readable using a standard web browser or pdf viewer. The structure and style of your documentation is very much up to you and I encourage you to be creative in effectively and professionally documenting your design. As discussed below, the submitted documents must be in the trunk/Doc sub-directory of the subversion repository. I strongly encourage you to use this as a location for your working documents and to start working on them now.
Your documentation must contain the following information:
- A description of the architectural design (i.e., set of components, their roles, responsibilities, relationships and interactions). Appropriate use of UML diagrams will significantly enhance this. Also reference to design patterns being used, where appropriate, will help in describing your design.
- Precise, accurate and cross-referenced class interface documentation for all classes. This is easiest to do using javadoc (see How to Write Doc Comments for the Javadoc Tool).
- For all test cases, a concise description of what is being tested, how, and what are the expected results.
Submission Process
A particular revision of your whole repository will be "tagged" (See Creating Tags in the SVN Book) with the name sim_incr_1_submit and this will be taken to be the submitted files. You may choose a revision yourselves and add the tag before 0900 on the due date. If the appropriate tag is not added by the due date, the revision in the repository at 0900 on the due date will be tagged and used.