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.