CS 428 Games and Virtual Environments Homework #4
Due: 4/20/20, 11:59pm. Turnin is by blackboard. Remember to
put your NAME in a comment at the top of your file(s)/document(s).
This assignment includes two tasks that may be done in parallel.
You can get full credit for one part, even if you don't succeed with
the other part.
1. Many "Rooms"
Extend your shooter game to handle larger .json files with more rooms,
for example, jeb.json, a JSON-and-GDX adaptation
of jeb.dat.
Suggestion: for substantial partial credit, add one room at a time and
report how many rooms/doors/openings you managed to incorporate. You do
not have to use jeb.json, you can add multiple rooms to your own design. By
induction, if you got > 2 rooms working, adding more should get easier
and easier, at least until your OpenGL implementation gives out on you.
2. Combat system: network messages for combat and damage
You have a lot of latidude on how you choose to implement this
- Add a notion of Health points to characters and/or monsters.
Most likely this will be dynamic state represented on both clients
and server, but of course server is the final judge/referee of game outcome.
-
- Add a \attack command to your network protocol
-
- Client sends to server an attack report of the form
\attack name target
Server then sends to clients a damage report of the form
\damage name target damage
which says that name
has attacked target
and did damage
points of damage
- Implement calls to this from the client's weapon firing event
- Previously this just implemented a complete kill if it hit
- Death and respawn
- Server decides when a character is dead, announces when and where
a character respawns.
- network messages for these, the latter being similar to a new login.
3. libGDX Chat Client and Session Monitor
Implement enough of the CVE network protocol in Java (and libGDX, if possible)
to login and send and receive text chat messages with other users.
You should implement \login, \version, \logout, \say, and \tell commands.
For all other commands received from the server, you should just echo
them to the screen. Replace any sequence of binary or unprintable content
(if any) with the string "##".
You may adapt existing libGDX code from the internet; if you borrow code,
say where it came from. But you are trying to implement the CVE protocol.