Notes On System Specification
Notes On System Specification
Introduction
GameForge is a graphical tool used to aid programmers in the design and creation
of video games. A game designer with little or no experience with Microsoft DirectX
and/or Visual C++ programming can use GameForge to construct his or her own 2D-
arcade games. GameForge also assists experienced programmers by generating the
Microsoft DirectX code and Microsoft Windows9x overhead necessary for basic game
construction, allowing them to concentrate on more detailed game design issues and
implementation. The idea is to limit the amount of actual code written by the game
designer, while providing an interface that is easy to use yet complete enough to remain
functional.
GameForge is a graphical tool used to aid in the design and creation of video
games. A user with limited Microsoft DirectX and/or Visual C++ programming
knowledge will be able to construct a basic 2D-arcade game. The idea is to limit the
amount of actual code written by the user. It will also assist experienced programmers in
generating the Microsoft DirectX and Microsoft Windows9x overhead necessary for
basic game construction, allowing them to concentrate on more detailed game design
issues and implementation.
The software will consist of a number of inputs, graphically assisting the user in
creating on-screen objects including the following:
1
• Defining/Editing Objects (including characteristics)
• Object Positioning
• Opening/Closing/Saving Game Project Files
• Exporting Game Projects to compilable C++ Files
Outputs include:
System Context
GameForge will be available free for educational use. It will be distributed for use
in CIS 587, Computer Game Design and Implementation, at the University of
Michigan-Dearborn.
Major Constraints
Performance/Behavior Issues
GameForge also requires Microsoft DirectX 7.0 or above. Users may also
want to obtain the DirectX 7.0 SDK if they plan on expanding the
GameForge library files beyond their original scope.
2
GameForge also requires the Microsoft Visual C++ 6.0 compiler.
GameForge’s VC++ code may be compilable using Borland or some other
VC++ compiler, but functionality is not guaranteed.
3
Functional and Data Description
System Architecture
Architecture Model
Subsystem Overview
• Input wizards –
There are a number of wizards provided to guide the novice
user through the necessary steps for game development.
4
This wizard allows the user to begin creating a new
world. General settings (like screen resolution and
transparent color) are set here.
• Level Editor –
The main interface displays the level/game the user is
designing. A tree-view of all objects is also represented. All
other interface options are accessed from this screen.
• Help/Tutorial Files –
These files contain FAQ’s, Tutorial, descriptions of objects
and VC++ code, and a search engine to find the
information.
Input Processing
5
sprites, as well as input device information and sound
information. All necessary files such as .wav files and .bmp
files are moved to the project directory. This subsystem
contains the screen representing the game and a list of all
sprites and their attributes.
Output Processing
Data Description
Sprites:
Sprites consist of the following attributes:
6
Name (Primary Key) – Name of the sprite.
Image – Name of the Image file displayed representing the sprite.
Width – The width of the sprite in pixels.
Height – The height of the sprite in pixels.
DestinationX – The X coordinate for the destination of the
placement of the sprite.
DestinationY – The Y coordinate for the destination of the
placement of the sprite.
Framerate – The framerate of the sprite.
NumOfDir – The number of directions the sprite has.
NumOfFrames – The number of frames per direction.
Solid – Whether or not the sprite is a solid object.
KillsPlayer – Whether or not the sprite kills the player.
PlayerCanKill – Whether or not the player can kill this sprite.
OtherCanKill – Whether or not other sprites (other than the
player) can kill this sprite.
Obtainable – Whether or not the sprite can be picked up.
Visible – Whether or not the sprite is visible on the screen.
AffectsScore – Whether or not the sprite has an effect on the
score.
SoundAttached - Index of the sound is attached to this sprite.
ReactsToGravity – Whether or not the sprite is affected by
gravity.
ReactsToFriction – Whether or not the sprite is affected by
Friction.
ReactionToPlayer - Index determining how the sprite reacts to the
player’s position.
Bounces – Whether or not the sprite changes direction when
contacting another sprite.
Random – Whether or not the sprite has random movement.
Surfaces:
Surface consist of the following attributes:
7
DestY – The Y coordinate for the destination of where the string
will be placed.
ForeRGB – The RGB value of the foreground color of the text.
BackRGB – The RGB value of the background color of the text.
Transparent – The background of the text can be made
transparent.
Visible – Whether or not the text is visible on the screen.
Sounds:
Sounds consist of the following attributes:
Levels:
Levels consist of the following attributes:
8
Relationships
Image Library
Project File
Sound Library
Header Files
Interface Description
User Interface
The interface will have on the left side of the screen, a treeview control,
which displays elements in a directory tree structure. Placed in this
treeview will be categories with which the sprites that user has input will
9
be categorized. The user will be able to click on these categories and see
the expanded list of the sprites that are under that particular category. In
addition the user will be able to click on a particular sprite and bring up all
of that sprite’s properties. When the sprite wizard is up, the right side of
the screen will be the sprite’s image, and an area where that image can be
placed on the screen, onto any of the particular backgrounds that the user
has chosen. There will be a standard menu bar that is present on nearly
every Microsoft Windows application, along with a toolbar for quicker
access to the commands embedded under the various menu options.
10
Subsystem Description
Subsystem Scope
There are three databases used by GameForge, one for sprites, one
for images, and one for sounds. Each database contains the locations of
files, either data files describing the sprite, bitmap files for images, or
sound files in .wav format.
Locations of
referenced files
Locations of
new files
11
Sound Database Description (Processing Narrative)
The sound database contains the locations of sound files in
.wav format. These files can be supplied by the system, or created
by the user. The sounds are tied to events in the game.
Performance Issues
The C++ engine must access the database. Any problems
encountered in this interface must be minimized.
Design Constraints
The databases contain only the locations of the files. Problems
could occur if the files are moved. Special note should be included in the
manual instructing the user to not delete files from the libraries.
Subsystem Scope
The user interface must present the user with an easy to use way to
implement game design. It is a GUI that shows the user where things are,
and what they do in the game. It gives the novice user a better
understanding of what happens in the game. Wizards are supplied to guide
the user through all necessary steps in game construction. Game design is
not a primary function of GameForge, preliminary design should be
completed before construction.
12
Subsystem Flow Diagram
Project Files
C++ Engine
13
Performance Issues
The primary performance requirement is a screen refresh rate of 30
frames per second.
Design Constraints
No special design constraints impact the user interface subsystem.
Subsystem Scope
The C++ engine is the meat of the system. It is designed to be as
modular as possible. A majority of the DirectX code is contained in header
files to limit what has to be written by the engine. It gathers information
from the data files, and uses it to create the balance of the code needed for
the user’s game.
Header Files
14
The necessary code for window creation will be contained
in a header file. Any additional information will be extracted from
the data file created by the user interface.
Performance Issues
The refresh rate of 30 frames per second must be maintained to
have a playable game.
Design Constraints
The code created by the C++ Engine must be compatible with
Microsoft’s Visual C++ compiler, and DirectX 7.
15
Allocation for C++ Engine
The engine will be created using Microsoft Visual C++.
16
System Modeling and Simulation Results
GameForge Prototype
List of Revisions List of Revisions
Requirements System
Deliver
GameForge
Simulation Results
No simulations were used.
Prototyping Requirements
The interface prototype will be created using Microsoft Visual Basic. The
C++ portion will be developed in modules that will be individually tested.
17
Project Issues
Reference FP calculations:
Demon Tree FP: 121.03
Demon Tree Person Months: 2.5
Project Schedule
18
Appendices
Product Strategies
GameForge may be distributed freely or as low-cost shareware. This
decision will be made nearer to the project’s completion. If GameForge is
distributed as low-cost shareware, Professor Bruce Maxim will receive a free
educational copy for use with CIS 587 at University of Michigan – Dearborn.
The software will also be posted on PA Software’s web site. There will be no
additional commercial distribution of the system.
Supplementary Information
None at this time.
19