|
Comp202: Principles of Object-Oriented Programming II
Fall 2007 -- Final
Project
|
UNDER CONSTRUCTION!!
Project Description
The final project is to create a group game based on using
RMI to connect multiple BallWorld-type systems together where balls (or the
commands that run the balls) can be transported from one system to another and
interact with the other balls in those systems. Balls would be able to
"kill" each other and the objective of the game is to have only your balls left
anywhere in the end.
The Ballworld system that this project would be based on
would be
the command-based BallSwarm system from Comp201.
Download the latest BallSwarm code here! (inside the Final
Project folder)
Basic features:
- When two computers connect, a "wormhole" is created
between the two systems that allows balls to be transported from one to the
other. The wormhole would thus be bi-directional.
- Balls would be able to "kill" each other.
- Killing another ball would increase that ball's
ability to kill other balls.
- There should be a chat window that enables the player
to communicate with other players.
- Balls should be able to report their kills or death
back to their computer of origin.
- Balls should have unique and different abilities to
chase after or to avoid other balls.
- All balls have some set of invariant base behaviors
that cannot be overridden by other behaviors, e.g. be killed by a larger
ball.
Possible features:
- Only the strategies are transmitted from system to
system, not the ball class itself.
- Balls have a means of reproducing, e.g. mitosis after
reaching a certain size. Or other means...
- Ability for multiple smaller balls to kill a single
larger ball -- promotes pack hunting behavior
- "Aging" in balls, i.e. they get smaller/weaker the
longer they don't "feed".
- Balls could get "hurt" by another ball, but not
killed.
- Probabilistic outcome from a fight between two balls
rather than a simple "bigger ball wins".
- etc.
Current project specifications
Milestone 1: Initial System Design
For this milestone you are to design and propose
modifications to the BallSwarm system that will enable the desired game features
to be implemented. The choice of features is up to the student.
After this milestone is submitted, the class as a whole will decide on which
design or modification of a design or possibly a melding of multiple designs
will be used for the final project implementation.
Requirements for the design proposal:
- A list of game features that the design should be
able to implement.
- A code listing of every common interface that will be
used in everyone's implementation.
- A written discussion of the changes that will be
necessary to the BallSwarm system in order to incorporate the above
interfaces.
Milestone 2: Core
Functionality
For this milestone you are to create a no-frills
demonstration implementation that utilizes what interfaces that have already
been agreed upon as well as creating concrete arguments (i.e. using your own
code as an example) of possible modifications or additions to those interfaces.
One of the requirements for this milestone (see below) is
interoperability. This means that some necessary or desired changes to
global interfaces must be ironed out with the class as a whole before
the due date!
Requirements for the core functionality demo:
- Your game should have the following capabilities:
- Interoperability with other players
- Chat with other players
- Establishment of a bi-directional worm hole when
connecting with another player
- Send a ball with non-trivial capabilities,
i.e. more than simple straight line movement, from one computer to
another when it encounters a wormhole ball.
- Two balls engage in a fight when they collide
with a resultant change in hit points/health.
- Ball dies if health/hit points drops to zero.
- A listing of proposed changes or additions to the
current global interfaces. Each suggested change or addition should
come with a written rationale (~1 medium paragraph)
Final Deliverable
The submission for the final deliverable must include the
following:
- The entire code directory structure
- Documentation:
- User guide with instructions on
- How to start the game
- How to connect to another player, both
initially and during game play
- How to create new balls
- Any special behaviors of balls being made
- How scoring is tallied and displayed.
Last Revised
Thursday, 03-Jun-2010 09:52:31 CDT
©2007 Stephen Wong and Dung Nguyen