Important Documents
Milestone 1 Update (April 6, 2004)
Alot of organization has been done and the first steps have been taken to actually realizing this project.
The following pieces of the project have been completed
- Menu Flow
- Networking infrastructure
- Heirarchical Classes for the Player and Enemy data with Rendering
- Organizational Stubs
Among these pieces, I am using the following libraries
- SDL, SDL_net, SDL_image
- DFontGL - a texture bitmapped font library
- Model_3DS - a simple 3d studio max file loader
At the current state of the project, the code is organized into a state that I can easily build up and work off of it to develop the
complexity of the game that is necessary. With the mish-mash of completed pieces, the run flow of the game only goes through the
main menu screen and the connection screen. Images of these are here and here. On top
of this, I created a simple modelviewer on the side in order to test the rendering of the heirarchical classes that store the players and enemies.
Take a look at this simple render for an example. The blue are legs, the red is the torso, green are the arms and yellow
are the weapons.
A basic synopsis of the game flow goes as follows: The client runs and through the main menu, you go to the connection menu. This menu then connects
to the inputted server, which then accepts or declines the login. If accepted, the server will dump state initialization information to the client,
which transitions to HQ. At HQ, the players will decide on a level to play, as well as make any equipment purchases, added spoils acquiring, and
configure their machines. When they all commit to being ready, the server will initialize the world state and send initialization information to each
player involved in the mission. The level will load and the players will play through. The players then play through the mission to accomplish a
goal (generaly meaning, to destroy all the enemies). Through the mission, they acquire resource points by performing tasks. When enemies are destroyed
there is a chance that they will leave behind components that are put into the mission spoils pot. At the end of the mission, the players choose from
the spoils in resource point order from most to least. Remaining spoils are put into a stash at the HQ which can be purchased with resource points.
The player can control their character with the following behaviors:
- Move (Left, Right, Back, Forward)
- Burst (Left, Right, Back, Forward)
- Shoot left weapon
- Shoot right weapon
- Turn (Left, Right)
Movement and bursting, which is a rapid short-lived movement in a direction, is controlled by the keyboard. The left mouse button fires the left weapon.
The right mouse button fires the right weapon and moving the mouse left or right will turn the character. Now for the weapons, there will be many
variations on these, but 4 basic types: Melee, rapid fire guns, long guns, short guns and shields. The guns will fire 3 basic types of projectiles:
bullets, beams and blasts.
A character will be able to equip the following types of components. torso, legs, right weapon, left weapon, right arm, left arm. Each component has a
weight which will have an effect on the speed of the character's movement and rotation, as well as a value to indicate the resource cost. The torso
determines the elemental type of the character as well as being the primary source of body armor. The legs determine speed, burst speed and have body
armor. The arms also possess armor, but play a more important role in determining how heavy of a weapon can be equipped. The weapons determine what kind
of attacks are done when activated.
All of these functions are currently blocked out and organized, it would be easier to tell generally what still needs to be done in order to complete
the project, so here we go:
- Initializing Game States via Server information
- Sound
- File saving/loading functions for players and config options
- In-Mission Behaviors
- Animations
- Model/Texture/Image Creation
- Advanced Player behaviors (co-operative maneuvers between players/enemies)
- AI for enemies
I'm currently bottlenecking at how to go about initializing game states over the server as I'd like it be a clean process such that I won't have to
perform any funny messages and thus reduce the amount of network traffic, while minimizing the number of different message types I have. If I can get
past that, the In-Mission Behaviors and Advanced Players Behaviors should come easily. Sound should also not be terribly difficult, although I do plan
on placing it into a separate thread run only on the client, so that it won't stutter while various loading phases are going underway. Another
bottleneck I will have to face is the animations. I'd like to be able to use keyframe animations that I create in my 3ds model files, but am having
difficulty learning how to load this information. I may resort to simple hand-writing key frames that control a rotation at each piece of the
Player/Enemy hierarchy, but it would much simpler and of higher quality if I could use .3ds animations. This may involve switching to a simpler or
better documented model format such as .md2.
And now here is the remaining timeline:
- April 11: Intializing Game States via Server
- April 18: File saving/loading functions for players and config options, In-Mission Behaviors, Animations,
Advanced Player behaviors, simple AI and some simple levels created.
- April 20: Milestone 2: A functioning multiplayer version.
- April 29: More complicated AI finish. Coding finish.
- May 5: Last minute content added to game.