The Mad Skills ProgrammersDigiPen Institute Of Technology
Starfall TDD v1.1
[ DigiPen Institute Of Technology ]
The Mad Skills Programmers
of
GAM300 – Winter 2003
(row 1)
present their project…
Starfall
Technical Design Document
Dragons are awesome!
Written by
Justin LaLone
Jeffery Lindsey
Adam Brennecke
Clark Morse
Christian Crowser
1-15-2003
Version 1.1
Table of Contents
Table of Contents
About This Document
Purpose of This Document
Change Log
Project Overview
Game Concept
Technical Goals
Target Platform / System Requirements
Minimum
Recommended
Development Platform
Development Team
Development Time
Manpower Allocation
Development Risks
External Tools
3D Studio Max
The GIMP v2.1
Adobe Photoshop
Ogg Drop
Reason 2
Settings editor
Mission editor
Menu editor
InstallShield
Interim Milestone – Feb 28th
Individual Milestones
Engine Proof – Mar. 21st
Individual Milestones
Interim Milestone – April 8th
Individual Milestones
First Deliverable – April 18th
Individual Milestones
Alpha Deliverable
Individual Milestones
Beta Deliverable
Individual Milestones
Final Deliverable
Individual Milestones
Gameplay Overview
Overview
Multiplayer Coop Aspects
Levels of Difficulty
Development Ideology
Coding Standards
Naming Conventions
Functions
Classes and Structs
Variables
Member Variables
Function Parameters
Global Variables
Constants and Enum Types
Enumerations (Enums)
Aliases
Commenting
Class Requirements
Leak Checking
Graphics Engine
Rendering Information
Hidden Surface Removal
Models/Meshes
Skyboxes
Particle Systems
Shaders
Artificial Intelligence
List of AIs
Collective Radio Memory (CRM)
Physics
Object Collision
Code Objects
Class Hierarchy for game objects
Object Storage
Octrees
object
Public methods
Implementation Overview
renderobject
family
Purpose
Public Methods
particlesystem
family
Purpose
screenobject
family
Purpose
skybox
family
Purpose
physicalobject
family
Purpose
Public Methods
Implementation Overview
particle
family
Purpose
spatialobject
family
Purpose
projectile
family
Purpose
ship
family
Purpose
playership
family
Purpose
capship
family
Purpose
missile
family
Purpose
component
family
Purpose
turret
family
Purpose
capweapon
family
Purpose
weapon
Purpose
public Methods
Sound
Purpose
Input / Interface
Purpose
Lists
Purpose
Threads
Purpose
Settings
Purpose
Logger
Purpose
Time
Purpose
Memory Manager
Purpose
Camera Controller
Purpose
Camera
Purpose
Public Methods
Console
Purpose
particlecontroller
Purpose
Multiplayer / Networking
Network Layout
Network Protocol
Packet Structure
Network Messages
Game Control
Pre-mission
Mission Handler
Game Specific File Formats
Mission File Format
Settings File Format
Model File Format
Log File Format
Resource File Naming Conventions
Models
Sound Effects
Skybox Textures
Art and Video
Models
Other Graphics
Memory Usage
Sound and Music
Sound Effects
Music
User Interface
Menu System
Heads Up Display (HUD)
Console Commands
About This Document
Purpose of This Document
This Technical Design Document exists to provide some semblance of guidelines and general overview on how we (the Mad Skills Programmers) are technically going to complete this project currently known as StarFall. (Not to mention getting a good grade in game projects class.)
Change Log
- 2/14/03 – Version 1.0 – Initial Version
- 2/24/03 – Version 1.0.5 – Large updates to all design sections.
- 2/26/03 – Version 1.0.6 – Proofreading and error correction, as well as updates to collision detection, the art and video section, tools, and coding standards.
- 2/27/03 – Version 1.1 – Merged in AI and pre-game control from Jeff, graphics engine from Adam, Octrees from Clark, menu system from Christian, and added mission handler and console command sections.
Project Overview
Game Concept
Starfall is a PC space shooter where you are a single pilot in massive space war.
Technical Goals
Technically, Starfall will have realistic collision physics, high-quality visual effects, and up to one hundred individual AI-controlled ships running smoothly on the recommended system listed below.
Target Platform / System Requirements
Minimum
700 MHz Pentium III
256 MB RAM
3D accelerated graphics card approximately equivalent to the GeForce2, with at least 32 MB of video RAM
100 MB of hard drive space
Windows 2000
Recommended
1GHz Processor
256 MB RAM
3D accelerated graphics card approximately equivalent to the GeForce3, with at least 32 MB of video RAM
100 MB of hard drive space
Windows 2000
Development Platform
We intend to develop this game on Windows 2000 machine that doesn’t nearly meet the minimum system requirements, and code using Microsoft Visual C++ version 6.0 Professional Edition.
Development Team
A total of five (5) people are on the development team:
Clark Morse – Producer
Jeffrey Lindsey – Designer
Justin LaLone – Technical Director
Adam Brennecke – Lead Tester, Sound Director, Art Director
Christian Crowser – Product Manager
Development Time
Five months are allocated for the completion of this project.
Manpower Allocation
All team members, with the exception of Justin Lalone, are scheduled to work 16 hours per week on the project. Justin is scheduled to work only 12 hours per week due to the fact that we works elsewhere some of the time.
Development Risks
Our main worry for this semester is that we will be flooded with so much homework that we might not be able to spend enough time working on the game. Additionally, both the 3D engine and the AI are major obstacles that must be overcome.
External Tools
3D Studio Max
3DSMax will be used for creating all 3D models within the game.
The GIMP v2.1
GIMP will be used for creating and modifying miscellaneous 2D graphics. This tool is also free, and is available for download at Only one team member really knows how to use this tool, but all team members have access to it and may learn.
Adobe Photoshop
Photoshop may also be used for the creation and modification of graphics, but is only available to team members who can use it at home.
Ogg Drop
Ogg Drop will be used to convert and compress wave (.wav) files into the Ogg Vorbis (.ogg) file format. This is yet another free program that is available at
Reason 2
Reason may be used for the creation of music tracks, but again is only available to team members who can use it at home. It can generate .wav files and a number of other formats.
Settings editor
The settings editor we are currently developing to edit settings files for Starfall. All settings will be stored in binary format, in a hierarchy with pages containing subsections with multiple data fields of type int, float, or string. The editor will also generate a c++ header file that maps these fields to enumerations within nested namespaces that mirror the settings file for easy access.
Mission editor
A mission editor will be created to allow us to position ships and other objects for missions and flag them for mission objectives.
Menu editor
A menu editor will be used to create all of the in-game menus, by laying out buttons, fields, graphics, etc. It will not define behavior for these objects, that will be done in code.
InstallShield
We will use InstallShield to install Starfall on our target machines, giving our users a simple, familiar installation interface to get them through it quickly.
Interim Milestone – Feb 28th
The input wrapper will be complete on this date. The user will be able to view basic models of ships and also move the camera around in the world using key presses. You can see the background stars in space. Ships will move around slightly. Joystick, mouse, and keyboard support will be implemented, but not all may be assigned to in game controls yet. AI design will be more fully fleshed out as well.
Individual Milestones
Input wrapper 100% completeChristian Crowser
Menu Editor 50% completeClark Morse
Object Class 100% completeJustin LaLone
Skybox 100% completeAdam Brennecke
Camera Class 100% completeAdam Brennecke
Binary File Editor 100% completeClark Morse
Lighting/Basic Textures 100% completeAdam Brennecke
Menu Classes 50% completeJeff Lindsey & Christian Crowser
FMod Sound Wrapper 100% completeClark Morse
Direct3D Wrapper 60% completeAdam Brennecke
Additional Accomplishments:
-Cancelled Menu Editor Development
-Basic Camera Movement (Free look)
-Console 20% Complete
Engine Proof – Mar. 21st
Ship selection will be partially created but will be buggy. A few basic weapons will be available in game. The user will be able to control a single ship at least and pilot it around. They will also be able to fire any basic weapons that have been implemented at this time. Collision detection will be in early development and may not work yet. The opponent AI will continue to be worked on and the basics of it will be working on the opponent ships. One or two projectiles will also be in the game and will be able to be fired or used in some manner. The menu editor will be near completion. The ship will be able to be switched from first to third person views by key press.
Individual Milestones
Direct3D Wrapper 100% completeAdam Brennecke
Screen Object Class 100% completeAdam Brennecke
Projectile Class 100% completeClark Morse
Weapon Class 100% completeJustin LaLone
Basic Ship Selection/Switching 100% completeJeffrey Lindsey
Implementation of Basic Ship classes 60%Jeffrey Lindsey
Menu Creation 100%Christian Crowser
Collision Detection 50% completeJustin LaLone
Mission Editor 50% completeClark Morse
HUD 20% completeJeffrey Lindsey
Interim Milestone – April 8th
The networking framework will be started, but nothing will be implemented in game yet. All in-game menus will be created using the menu editor. Collision detection will be complete and put into the game. Collision response will also partially be done which will allow for basic ship-to-ship deflection. A HUD will be visible to the user, but will not be fully complete. The mission editor will also be completed at this time and mission creation will be started. All of the specifics of networking will now be designed and the networking kernel may be running, but it will have little or no visible effect on the game.
Individual Milestones
Networking 20% completeChristian Crowser
Implementation of Basic Ship classes 100%Jeffrey Lindsey
Collision Detection 100% completeJustin LaLone
Mission Editor 100% completeClark Morse
HUD 60% completeJeffrey Lindsey
Collision Physics 50% completeJustin LaLone
First Mission 10% completeAll members
First Deliverable – April 18th
The basic components of the first mission will be completed. Collision between objects will be completed. Opponent ships will be able to fight each other and their AI will be improved to allow some strategic thinking such as avoiding being shot. At this point, it will be possible to run a server and have users connect to it, but not all network messages will be handled and there will likely be synchronization problems.
Individual Milestones
HUD 100% completeJeffrey Lindsey
Collision Physics 70% completeJustin LaLone
Networking 40% completeChristian Crowser
First Mission 30% completeAll members
Alpha Deliverable
The user will be able to go through the menus and start a single or multiplayer game. They will be able to select the ship they wish to fly and begin their mission. At this point, the user will be able to complete a mission both by destroying all of the opponents or achieving the appropriate goals for that mission. At least 3 missions will be completed by this time and the fourth will be well on its way to completion if not completed already. The user will be able to switch between ships in combat and the AI will take over for the player when they leave a ship. Radio commands will be implemented as well and the AI will react to the voice commands that the player gives them as well as commands from other AI units. All networking will be complete, although some tweaking may still be done to improve client-server synchronization.
Individual Milestones
First Mission 100% CompleteAll members
Second Mission 100% CompleteAll members
Third Mission 100% CompleteAll members
Fourth Mission 70% CompleteAll members
Networking 100% CompleteChristian Crowser & Jeff Lindsey
Sound Effects 100% CompleteAdam Brennecke
Graphical Effects 40% CompleteAdam Brennecke & Clark Morse
Collision Physics 100% CompleteJustin LaLone
AI 70% CompleteJeffrey Lindsey
Beta Deliverable
The user will be able to play the missions cooperatively through multiplayer with at least 7 of their friends. All of the missions will be completed, but may contain minor issues/bugs that need to be attended to. The user will have all of the functionality that they would have at alpha, but by this point all of the new textures and models will be in the game as well as finalized soundtracks and sound effects. The game will also be able to be installed using InstallShield.
Individual Milestones
Background Soundtrack 100% CompleteAdam Brennecke
Fourth Mission 100% CompleteAll members
Voice Commands 100% CompleteAdam Brennecke
Finalized Art 50% CompleteAll members
AI 90% completeJeffrey Lindsey
Installer 100% CompleteClark Morse
Final Deliverable
By this point, the game will be finished and all functionality will be in. The box art will be completed as well as the manual. All known bugs will be fixed and the game should be able to be completed in it’s entirety along with multiplayer being finalized as well. For the meaning of finalized, see “Gameplay Overview.”
Individual Milestones
Finalized Art 100% CompleteAll members
Box Art 100% CompleteChristian Crowser
Manual 100% CompleteAdam Brennecke
AI 100% CompleteJeffrey Lindsey
Gameplay Overview
Overview
Two armies are at battle. All human players are always fighters on the good side (Calenalph). Each side will start with no less than 20 fighters, and about 60 fighters on average. Each player will only be able to control one ship at a time, so AIs will control all other ships. There will always be at least two mission objectives available to the players. One possible objective will always be to destroy the enemy fighters. Secondary objectives may include defending a ship or space station, disabling a large enemy ship, gathering stranded objects, or preventing a moon from crashing into a planet. Ideally, a simulation with the same number and types of ships on each side, no secondary objective, and no human intervention, should result in a 50-50 chance of either side winning. In the real game, the enemy should always start out with a larger force so that the players are required to show superior skill, and turn the tides of the battle. With this system, the levels of difficulty can be translated into the difference between the starting forces on each side.
Players can switch between ships at any time. Upon switching out of a ship, the original AI pilot will retake control. If a player’s ship is destroyed, they will automatically be switched to another ship. Switching ships should take time and this will be filled with the player’s camera smoothly and automatically moving to the next ship the player will take control of. There will be some sort of smart decision programmed to choose the next best ship for the player, however the player will also be able to choose which ship to take control of. Players will only be able to take control of friendly fighters that aren’t being controlled by another human.
If a player, or group of players fail a mission, they will all lose a large amount of points, but will still be able to proceed to the next mission.
Multiplayer Coop Aspects
The main multiplayer aspect of the game will be cooperative play. All human players will be working together on the good side (Calenalph). Players will have all their same preference choices as in single player. The only difference between single player and multiplayer coop is that there are multiple human players on the good side, and that the game is played over the network.
Levels of Difficulty
The single player missions will progress in an increasing level of difficulty. Three different levels of difficulty will also be available for each mission. These levels of difficulty will simply alter the number of enemy fighters. The “Normal” difficulty level will not alter the enemy fighter count. The “Medium” difficulty level will have 120% the normal amount of enemy fighters, and “Hard” will have 150%.
Development Ideology
Computer programs are complex. Computer games – doubly so. As the complexity of a program increases, the harder it becomes to manage it. If not properly managed from the beginning, a program can quickly turn into a horrid creature that perhaps only one person knows what is going on, and that one person knows that they would be better off if they just dump everything and start over. In the effort to avoid this situation, all developers of this project should agree to the following ideologies so that this project may grow into a well-structured piece of art.
The game should be composed of several small and easily modified modules. Code that has been written rarely stays static. It often times needs to be fine tuned, altered, or completely redone. If some component is too large it may become difficult to maintain. Such components should be broken down into smaller and easier to maintain sub-components.
Modules should be more self-contained than dependent, or depended upon. If one module depends too much upon another, then it could easily be severely impaired in the event that the other module would be changed or deleted. Should that happen, it would then require approximately twice as much work to fix. The same applies if too many modules all rely on one central module.
The connections between modules should be simple and flexible. If some part of the program needs to be altered, the bonds between the effected modules should be able to bend to conform to the new structure. The connections between modules should also be simple enough to be altered or remade if such case may arise.
Start simple, and expand from there. Often our minds become clouded with wonderfully amazing ideas, technical advances, or other such delusions of grandeur. However, if one focuses solely on such a goal, they will undoubtedly create something that is inflexible and poorly built. A better approach is to determine the simplest form of the idea and build from that toward your goal with a solid base.