Starfighter

Artifact [31722baac6]
Login

Artifact 31722baac606a659fb3b9b9d0138c4fee5795304:

Wiki page [Design] by Donny 2012-11-01 03:28:06.
D 2012-11-01T03:28:06.635
L Design
U Donny
W 2940
<h1>Starfighter (working title)</h1>

<h2>Technical Document</h2>

<b><u>Requirements: </u></b>

The game should be able to run on any computer that has Java and suitable hardware, starting with Windows, then Linux, then Mac.

The program must not require any additional files/dependencies, and it needs to be compact.

It should be controlled by a variety of inputs, from keyboard/mouse, to gamepad, to joystick. 
The game should have online play.

<b><u>Overview Of Design: </u></b>

The game will be written using Java. Lightweight Java Game Library (LWJGL) will be implemented to allow implementation of OpenGL, OpenAL, and OpenCL (if required). It will be Object Oriented in design as Java is an Object Oriented language. The game will be implemented using threads, for a smoother gameplay experience. The game takes place in outer space, so ideally the map has infinite boundaries.

The game is inherently multiplayer with support for four teams. Each team will represent a faction in the game. Ships from each faction will be unique, but balanced, like the factions in StarCraft and WarCraft III.

<b>Drawing: </b>

The game will be drawn using various OpenGL rendering techniques. Most objects, such as ships, will be rendered from models created externally (in a 3D program such as Maya). The game scene is a void with a distant skybox illustrating the stars. Special effects will be incrementally implemented in OpenGL as the game is polished.

<b>Input: </b>

The keyboard and mouse will be used as a standard method of input. Additional inputs will be implemented afterwards. Game menus can be controlled with the mouse.

<b>Logic: </b>

Game managing classes, such as the renderer, and the resource manager, will be implemented as singletons.


<b><u>Project Break Down: </u></b>

The project has a total of four files. Two header files and two source files. One set will contain all game related code, and the other will contain all window specific code (although the drawing and sound code will be encapsulated to some degree in the game code.) 

<b><u>Resource Module: </u></b>

<b>Class Resource</b>

<b>Properties:</b>

Holds all information of a resource
Utilize reference counting

<b><u>Game Module: </u></b>

<b>Class GameState</b>

<b>Properties: </b>

Current state of the game 

<b>Methods: </b>
  *  <i>getGameState</i> – Returns an instance of the current game state. 
  *  <i>setNextState</i> – sends a request for what the game state should transition to during the next update.
Draw – orders the renderer to render a frame

<b><u>Window Module: </u></b>
(Same format as above…)
<i>Note: Usually, each function would have a description of everything it does, but I'm assured as an experienced programmer you can do that yourself ;-()</i>

<b><u>Future Considerations: </u></b>
In the future, the game might be able to make good use of AI. 
Z f47c5c4ba92eababd335dae7904a70e5