Deadline Schedule

Please talk to me (Justin) in advance if you aren’t going to make a deadline so we can redistribute some of the workload.









Week 2 - 4/8

-Finish basic framework (create window & render text)

 -Write profiling, logging, & ini parsing utilities

-Create website & revise design docs

-Finish all c++ tutorials, openGL tutorials

-Create website & revise design docs

-Finish keyboard input handling class (init, destroy, poll)

-Basic sphere-sphere collision detection working

<Out of Town>

Week 3 - 4/13

-Write clean classes for loading jpegs & images

-Write sound system

-Write menu system

-Complete Server API (transferred from John)

-Begin Client API (transferred from John)

-Input handler reads .ini files

-Input handler writes .ini files


-Collision detection finalized

-Player motion/rotation math finalized

<Out of Town>

Week 4 - 4/20

-Complete TextInput for typing in multiplayer lobby

-1st draft of ParticleEngine

-BEGIN INTEGRATION of network code

-Complete Client API (transferred from John)

-Begin Server Application (using Server API)

-BEGIN INTEGRATION of network code

<Out of Town>

-Input handler finalized, with gamepad support

-Integrate gamepad & keymapping into client framework

-INTEGRATE player motion/rotation; can move player around screen!

-3D model & texture for player ship

-3D model & texture for world

-3D model & texture for one enemy

Week 5 - 4/27

-FINISH INTEGRATION of network w/ client & server

-Finish MD2 Model Importer

-FINISH INTEGRATION of network w/ client & server

-Integrate Player.cpp code with server

-1st draft of enemy AI

-INTEGRATE player motion/rotation with the server

-Script at least 1 camera motions using Bezier Curve algorithm

-3D Model for world (with multiple rooms)

-3D Model & texture for at least 2 enemies

Half Week 4/30

-NETWORK EXPANSION: (rework it so client sends State-change messages only)


-NETWORK EXPANSION: (rework it so server receives & processes State-change messages only)


-Simple AI implemented & inserted to the game

-INTEGRATE player motion/rotation with the server

-Set up control points for at least 3 bezier curve camera shifts

-1 animated model (either new, or animating some from above)

Week 6 - 5/4

-Finish ParticleEngine

-Write Bezier Curve algorithm for scripting camera motions

-Setup KeyMapping, volume controls, device selection in menus


<Out of Town>

-AI 100% finished, in game, & working

-Implement collision detection in the server’s logic


-2 more animated models (either new, or animating some from above)

Half Week 5/7

-NETWORK EXPANSION: Break down world-state receipt to component arrays

-Import & render enemies

-Render bullets (when fired)

-NETWORK EXPANSION: Break down world-state transmission to component arrays

-Process & transmit enemies

-Process & transmit bullets (if fired)

-AI 100% finished, in game, & working

-Collision detection & responses fine-tuned & 100% done

-Animated model in MD2 (extended)

-Revised world model

-Have a full set of basic sounds

Week 7 - 5/11

-Implement sounds over the network

-Develop data structure for & import world model

-Fix crashes (with logger, MD2 loader, Gamepads)

-Setup rendering for shields

-Implement sounds over the network

-Cleanup & Compartmentalize server code

-World initialized from .INI files

-AI 100% finished, in game, & working (extended)

-Collision detection & responses fine-tuned & 100% done (extended)

-Add physics for bullets

-Add physics for accelerating turning rate


-Animated model in MD2 (extended X2)

-Revised world model (extended)

-Have a full set of basic sounds (extended)

-Have at least one inner sphere finished

Half Week 5/14



-3 different types of enemy AI implemented

-Have shields working

-Fix accelerated turning

-Revisions to bezier curves (talk to justin)

-Animated model in MD2 (extended X3)

-HUD texture finished

-Title Screen

Week 8 - 5/18

-Real-Time Lighting

-Double Buffering for gamestate

-Setup “banked” turning of ships

-“Player Died” messages

-More network message types

-Solve grey out server issue

-All 5 different types of enemy AI implemented

-Collision detection w/ world (camera)

-Collision detection w/ world (ship)

-Bezier curve animations between all of the rooms


-Animated model in MD2 (extended X4)

-Different looking textures for all of the rooms

-Different looking textures for all of the inner spheres

-HUD texture finished (extended)

Half Week 5/21

-Triple buffering of gamestate



-Death Messages

-Rapid Fire


-Death Messages

-Player Lives

-Revisions to AI, all behavior finalized

-Fix collision Responses

-Fix Bezier Curves (extended)

-Ship collision with world (extended)

-Bezier curves between rooms (extended)

-Animated models in MD2 (extended X5)

-Title Screen (extended)

-Different looking textures for all of the inner spheres (extended)

-HUD texture finished (extended X2)

Week 9 - 5/25

-Ship Headlights

-Integrate/Scale Animated Models

-Setup materials for models

-Multilayered Backgrounds

-Frustum Culling

-Link client & server for Single Player


-Weapons & Ammo

-Room Changes

-Limited Shields

-Rapid Fire Fix

-Revisions to AI, all behavior finalized

-Overhaul Motion

-Bullets Damaging Yourself

-Ship to Tube Bezier Curve

-Title Screen (extended X2)

-Different looking textures for all of the inner spheres (extended X3)

-HUD texture finished (extended X3)

Half Week 5/28

-Player Lifebar/Name overlay

-Names (in multiplayer)

-Collaborate EVENT messages, perform actions

-Render powerups

-3D Sound!!!!


-Powerups finished

-Enemies have worse aim

-Enemies only come to you if they “see” you

-Blackout bug


-Overhaul Motion

-Ship to Tube Bezier Curve

-Camera Collision Detection w/ other rooms

-Title Screen (extended X3)

-HUD texture finished (extended X4)

-Ship Chunk models

-Different looking textures for all of the inner spheres (extended X4)

-Load Screen

-Powerup Models

Week 10 - 6/1

-Finish tube animations (from chris)


-HUD finalized (w/ weapons)


-Gather & insert sounds for EVERYTHING

-Add background junk

-Render A-Bomb

-Menu/Loading Backgrounds

-Help Chris w/ new motion

-Different player skins in game

-Scoring System

-Spread-Fire Lasers


-Lightning Gun

-Randomized Powerup Spawning

-Different projectile types for different enemies

-Server Control Panel

-Behavior for Ebola

-Behavior for Boss

-Fix enemy collision responses

-Orientations for projectiles

-Fix ship/world collision

-Fix time-based motion

-Boss entrance bezier curve

-Final Boss model

-Different looking textures for all of the inner spheres (extended X5)

-Powerup Models

-Fix Load Screen


- 6/4

-Final Boss entrance cutscene

-Final Boss defeat cutscene

-Billboarding for everything

-Networking optimizations

-Process gameover/you won

-Fix client hanging when server dies

-Fix Single Player for new server GUI


-Enemies spawn in as they’re killed (not all at once)

-Deathmatch Mode

-X killed X messages


-Boss & Ebola revisions


-Boss death Bezier curve


-Final Boss Model

-Different looking textures for all of the inner spheres (extended X6)



Blue     = Finished on time

Yellow = Partially Finished

Red      = Not Finished

Green   = Not Available


Week 4 Summary – 4/19/04

            Well, my original intention was to get the network code fully integrated by this week’s meeting (Tues 4/20), which, unfortunately, we weren’t able to do.  However, we came really close – the network API’s are 100% cleaned up, we have a basic server application up & running, and I have the client set up to the point where we can type in an IP address to connect to in openGL – inserting the IP string into a call to Connect(ip) should be simple – I’m sure we’ll have connectivity up by mid this week.

            Gamepad input was reported as completed, which is great! I haven’t actually seen it work, as we have a few versions of the main application floating around, but all of the changes are inside the InputHandler module, so integrating should just be a matter of copying the new version of this classes into one project.

            Player motion works, but isn’t complete – the motion is frame-based and not time-based, there appear to be several bugs with rotation, & not all of the features are implemented quite yet.

            As for the models, we finally figured out a way to convert maya to .md2 (our preferred model format), and have completed a basic ship model & textured sphere for the world.  Again, not quite what I was going for – I really wanted more complex world and enemy models too, but it’s reassuring at least to know that we got stuff converted to a more manageable/familiar format.

            Finally, John.  I don’t really know what to put here because he hasn’t posted any daily progress reports since the 10th, nor has he communicated any successes or difficulties to anyone else in the group.


Week 5 Summary – 4/26/04

            This week Andy & I accomplished everything we set out to accomplish, and more!  After several really really long programming sessions, we completed the client/server integration (see Justin & Andy’s progress reports for more details), resulting in the ability to connect & disconnect multiple clients, broadcast a world state which renders on each client, and issue game-state changing commands from any of the clients (each of whom are uniquely identified).  The only piece that is missing is for the player motion logic to be integrated onto the server-side, so that “moveLeft” messages will result in updating the worldState to reflect the leftward motion.  We’re hoping that Chris will complete this part of the integration by tomorrow morning’s meeting.

            On top of this, I 100% finished my quake2 model importer & renderer; I started from an importer that I had previously written, but realized that there were a large number of bugs/features that needed to be fixed/added.  Plus I completed a working version of the particle engine which renders “bubbles” as “thrust” from the back of the sub as it moves about the screen.

            Screenshots of the MD2 driver can be found under Justin’s API’s; screenshots of the overall framework have been posted under the “screenshots” section of this webpage.

            Nakul also completely cleaned up & documented his InputHandler, and has begun work on the A.I. Conceptually, it looks pretty sound at this point – we’ll just have to wait & see how it turns out!  The plan so far is to implement a system where we’ll have a specifiable level of intelligence, and we can also switch roles between computer controlled & player controlled characters (see Nakul’s progress reports for more details).

            As I mentioned above, I’ve integrated Chris’ player motion code to the client to render the ship w/ its particle thruster; Chris still needs to integrate it with the server (which will require some reworking), and I’m not sure how the Bezier curve camera motion is going (I also wrote two Bezier curve functions that need to be integrated into his math libraries); hopefully we’ll have some working demos up of that too by tomorrow’s meeting.

            Jeff has completed a nice set of 3D models, including the world, the ship (from last week), and several enemies.  We haven’t had a chance to test these inside the game as of yet, however because the ship model works fine we can only assume that the same will hold for the others.  Jeff has posted some snapshots of these models under the “Concept Art” section (and of course, his ship can be seen inside the actual game).

            No one has heard from John all week.  I’ve made several attempts to get in touch with him but have not received a response.  His progress reports have also not changed.

            As far as overall morale goes, I’d call it moderate.  I’m pleased that we got the integration all done and handled, however I’d still really love to see some more “go get’em” contributions from some of the group members; there’s still a fairly large gap in the sizes of some of the members’ contributions .  Hopefully now that we have a more “fun”-looking overall framework up & running this project will be more enjoyable to work on & things will start picking up J

            In order to get us workin earlier in the week, I’ve added “half-week” checkpoints, so everyone can make sure they’re on target for the following week’s meetings.


Week 6 Summary – 5/3/04

            This week was a bit of wash for the group.  Andy was out of town 5 of the 7 days, Justin had a midterm to prepare for, and Jeff blew a head gasket on his truck.

During the first part of the week, I (Andy) worked on expanding the client / server messages and overall server structure.  The server now broadcasts the game state to clients at a more regular interval and this interval is read in from an ini file.   To support player identification on the client, the CharacterInfo struct was expanded a little, and a new network message was added.  Also, the network traffic was GREATLY reduced by sending state change messages—StartedMovingForward—instead of state messages—MoveFoward.

Justin modified the client to reflect the changes to the server mentioned above.  He also polished the particle engine and added the ability to switch input devices (keyboard to game pad).  The input device is now read in from an ini file.  The sound portion of the game is a lot more robust and the menu system allows changing the volume for music and sounds, and stores the settings in an ini file.  An in-game sound was added (had only a menu sound).  Single player was removed from the client as it was too time consuming to continue to update.  Justin finished Bezier curves and wrote a camera class to script view changes.

Nakul finished up a first draft of the enemy AI which needs to be integrated.  Nakul has a midterm this week and wants to spend time integrating the AI later this week (Wednesday or Thursday).

Chris modified the player motion to work with the client / server model we now have.  He added control points for two more Bezier curves.  He still needs to write curves for room changes, but can do this as soon as Jeff gets the world model into an acceptable format.  Collision detection needs to be modified to use the Player array on the server.  The first thing Chris will work on is Player-Player collisions.

 Jeff has finished models for the world, several viruses, and the ship.  He has completed animated models, but needs to successfully export them all into MD2 format, which he can only do in the lab.

John has again not gotten in touch with the group or updated his progress report.

All in all, we made progress this week…..just not a ton.  The goal for next week is to have the AI, collision detection, and ALL models integrated into the game.


Week 7 Summary – 5/10/04

In my opinion, this was our best week yet – It’s actually starting to look like a game!

Justin & Andy finished the client/server interaction by splitting up the gamestate into 6 messages that are reassembled to render the world by the client, as well as solved about 1358710325 bugs that were causing some weird behavior over the network (flickering ships, huge lags, etc).  We also worked together to setup a framework for rendering enemies and projectiles on the client side, and managing their positions/physics on the server-side.  We set up the network messages and events needed for broadcasting sounds to any connected clients.  Andy did a major overhaul/cleanup of the server-side code, while Justin imported the world model (in it’s own, non-MD2 format) and the rest of the enemy models into the game, as well as fixed some annoying crashes with our file logging, model loading, joining pre-existing games, server timeouts, and directInput.

Nakul successfully got his first-draft AI integrated into the game, and has reached a point where we have enemies moving around, firing, and ramming the players.

Chris has made some revisions to improve the quality of his collision detection, has implemented accelerated turning (previously, turns were jerky and too fast to accurately control the ship in first-person mode, but now the ship’s turn rate increases as the user holds the left or right buttons) which will later be used to “bank” the ships during turns.  He has also added physics to make the bullets move after being fired, and to collision-detect them with the enemies, although enemies and players do not yet have health that’s reduced by bullet impact.

Jeff has completed the final draft of the world-model which has been loaded into the game, has collected a set of sound effects (which have not yet been integrated), and is working on a texture that we’ll use for a HUD.  He is still trying to get the model animations working and into the game.


Week 8 Summary – 5/17/04

This week we made much less progress than the MAJOR progress we had last week, but we still got a fair amount done.  This lack of progress was mainly due to the fact that Justin, Andy, and Jeff were at E3 for more than half of the week, Jeff had to work, Andy got sick, Chris had a midterm, and Justin was tied up with 108.  Andy was able to fix some bugs with the server and networking as well as expanding the network message types.  Justin modified the server to use a pointer swap on one game state that is written to from the network and one game state that is rendered.  He also modified the render order to draw the shields better and reduced the number of state transitions.  Nakul expanded the AI so that it is different for each of the 5 types of enemies, and integrated it into the server.  Jeff thinks he has solved the MD2 conversion issue, but will not get to try it until tomorrow.  Chris finished shields, fixed Bezier curves, implemented rotational deceleration for banking, implemented world collision, and implemented Bezier curve room changes.


Week 9 Summary – 5/25/04

            Pretty substantial progress this week…Although we’ve recently discovered some pretty major bugs that we’re a bit worried about, hopefully we can fix them before sunrise J

           This week Justin implemented multi-layered backgrounds, ship headlights, materials for everything (shiny ship), radar, rendering the ship tilt, network double-buffering (animation is really smooth now), frustum culling (drastic framerate improvement), added a single-player mode (where the client spawns a server thread and connects to itself), death animations for enemies, and integrated animated models.

            Nakul had a huge AI project to do this week, so wasn’t able to work too much up until today – he has, however, revised the AI and spent a significant amount of time with Justin and Andy trying to resolve our “major” bugs…

            Jeff has designed the elements for the HUD (radar, lifebars, etc) but they’ve not yet been added to the game.

            Chris finished up the Bezier curves for transferring between rooms and overhauled the motion…we’ve decided to drastically change how the control works.  He also solved a problem where your own bullets would damage you (by adding an “owner” to each projectile).

            Andy spent a significant amount of time with Justin integrating new additions between the client and server, including Game Over events, Win events, Room Change events, fixing rapid fire mode, player hitpoints/death, limited amount of shields, multiple weapons and ammo, and server-side tilt issues.

            All in all it was a good week, but we’re starting to get concerned about the approaching deadline, considering how much work lies ahead of us…


Week 10 Summary – 6/1/04

            We rule. Every bug has been fixed, and we’re working on the final boss!

            Justin (with the generous help of John Rapp) fixed the network lag bug,  bugs with the spotlights, bugs with installing windows font resources, added flame explosions for deaths, player overlays (name and life bar), setup rendering for powerups, implemented the HUD and new radar, added sparks for collisions, added a stats screen, added the ability to render menu/load screen backgrounds, added a second viewport (targeting computer), helped chris overhaul the player motion, redid EVERTHING in ortho mode so it’s resolution independent, implemented full 3D sound, added sounds for a TON of events, fully implemented the ship exploding into chunks animation, implemented different colored ships for different players, updated the radar to work in other rooms, updated the particleEngine to work under lighting, added code to render different inner spheres in different rooms, fixed several bugs with late-joining players, combined chris’ Bezier curve points to finish scripting room transition animations, display YOU WON or YOU LOST screen at the end of a game, added “junk” layer floating below the playfield, setup culling for powerups, junk, and particles, setup rendering for A-Bomb explosions, and started scripting events for the final boss battle!  Phew…intense week.

            Andy was in Vegas for most of the weekend, but since then he has implemented the server-side changes necessary for spawning powerups, collecting powerups, handling spread-fire weapons, A-Bomb weapons, lightning guns, and machine guns.  He setup the numbers that are used on the scoreboard, setup the events for collisions/bullet hits, setup a projectile INI file to specify damage, range, type, rapidFire, spreadFire, etc, setup YOU WIN and YOU LOSE messages, setup boss battle once room 4 is cleared, fixed a bug when multiple clients change rooms (they all get dropped on the same spot), add ability for projectiles to go through enemies (for lightning gun/railgun), fixed erroneous network messages by adding mutex to server’s send, and fixed bug where you’d infinitely shoot (if you were holding fire and you beat the game).

            Chris fixed a bug where your own bullets could hurt you (by implementing bullet owners), worked with Justin to overhaul the motion, fixed camera and ship collision detection in other rooms, revised Bezier curve control points for room-to-room transitions, setup control points for boss animation intro, implemented physics for Railgun, fixed a major bug in collision detection, and corrected collision responses.

            Nakul fixed a bug where enemy AI wasn’t correctly responding to collisions, added AI for the new Ebola virus and Boss, revised the AI so enemies roam more randomly when they’re not near you, fixed a bug where you couldn’t die from ramming damage, fixed a bug where enemies spawned outside the world, helped Andy with the powerup handler, setup .INI files that specify how much damage enemies do, and worked out some of the logic for spawning enemies in other rooms.

            Jeff generated an Ebola virus, models for ship explosion chunks, a pre-rendered title screen, and a pre-rendered load screen.

            All in all it was a really productive week – lots of progress – but still plenty to do before Friday’s demo!