
Version: 1.0
CS 4500, University of Utah, Spring 2008
This document outlines the various components, component relations and interfaces of the Sonic Boxmo project.
Team Foo Sharks will create a puzzle game entitled Sonic Boxmo. It will consist of novel and innovative features including a multi-cursor multi-player user interface and fast-paced music based puzzles, which will immerse the players into a unique musical environment. Each player in the game is going to have their own cursor and speaker, and will play in a shared 3D hardware-accelerated environment.
- HID: Human Interface Device
- OpenAL: Open Audio Library
- OpenGL: Open Graphics Library
- SRS: Software Requirements Specification
OpenGL Primer, 3rd Edition - Angel, Edward
Software Project Survival Guide - Steve McConnell
2.1 Overview of modules / components
This project will be broken into 3 primary functional subsystems:
- Graphics
- Manages graphics resources
- handle 'pick' operations
- Sound
- Manages audio resources
- provides a functional base for other components to play sounds in a simple manner
- User Input
- gathers and maintains state of input devices
- abstraction for mouse and Wii Remote hardware to be accessed via the same interface
The game itself will be be built on top of this framework and will include the following components:
- Player
- holds player info (name, score, etc)
- holds player-specific input data (cursor position, button states, etc)
- maps hardware input events to player actions (static)
- manages player-specific graphics elements (cursor, icons, etc)
- holds chain of notes (completed puzzle elements)
- MusicTrack
- holds/manages/outputs information about the current music track such as event timing, sound samples, etc
- MusicBar
- creates a bar which will show information about the current song (similar to the guitar-hero fret-board thing)
- puzzle field
- holds puzzle elements and handles puzzle-rules
2.2 Structure and relationships
The 3 primary functional subsystems above will be entirely orthogonal and have no dependence or use of the other components.
The game-play components will be organized as follows:
- Game
- PuzzleField
- Players(1-4)
- MusicBar
- MusicTrack
A primary Game component will contain, initialize, manage, and clean-up all gameplay related components.
A Menu object will manage all functions related to the options menu and will be responsible for instantiation of the Game object.
2.3 User interface issues
The Main Menu will be a simple hierarchical menu with game settings, etc.
The main game interface will be appear as follows:
![]()
NOTE: This section is the main focus in version 2.0 of the SDS, the detailed design. This section will provide most of the basis for implementing the product.
This section is not part of your design. It is the pattern you will use to describe the components given in subsections 3.2 - 3.n. Each part of the template will be identified by a label. Here in 3.1, you must briefly explain the purpose of each point. To make the presentation clear, use a table or bullet list. You may adapt the template suggested below to your particular needs (although deviations from the suggested template should be minimal and well motivated).
Use exactly the template you define in 3.2. If a part of the template is not applicable, then mark it N/A rather than omitting it.
For teams doing enhancement work, reuse is an important issue. Most enhancement work should focus on extending, rather than replacing, the design and product development from earlier semesters.
For teams doing new development, reuse can also be an important strategy. In some cases, there is freeware that could be incorporated. In other cases, there are existing modules or classes that could be adapted. Another possibility is the use of special tools that produce open source results and thus permissible under the terms of this course.
This section should include the following subsections as appropriate:
Use this section to motivate any decisions that will help the reader understand the design that your team is using. This section can also capture good ideas that were abandoned and the reasons for leaving them out of the design.
The template given below suggests a reasonable structure for giving a thorough description of each component described in Part 3 of the SDS. The specific information depends in part on the design approach. Your team must adapt this template to your needs and describe it in section 3.1 of your SDS.
| Identification | The unique name for the component and the location of the component in the system. |
| Type | A module, a subprogram, a data file, a control procedure, a class, etc |
| Purpose | Function and performance requirements implemented by the design component, including derived requirements. Derived requirements are not explicitly stated in the SRS, but are implied or adjunct to formally stated SDS requirements. |
| Function | What the component does, the transformation process, the specific inputs that are processed, the algorithms that are used, the outputs that are produced, where the data items are stored, and which data items are modified. |
| Subordinates | The internal structure of the component, the constituents of the component, and the functional requirements satisfied by each part. |
| Dependencies | How the component's function and performance relate to other components. How this component is used by other components. The other components that use this component. Interaction details such as timing, interaction conditions (such as order of execution and data sharing), and responsibility for creation, duplication, use, storage, and elimination of components. |
| Interfaces | Detailed descriptions of all external and internal interfaces as well as of any mechanisms for communicating through messages, parameters, or common data areas. All error messages and error codes should be identified. All screen formats, interactive messages, and other user interface components (originally defined in the SRS) should be given here. |
| Resources | A complete description of all resources (hardware or software) external to the component but required to carry out its functions. Some examples are CPU execution time, memory (primary, secondary, or archival), buffers, I/O channels, plotters, printers, math libraries, hardware registers, interrupt structures, and system services. |
| Processing | The full description of the functions presented in the Function subsection. Pseudocode can be used to document algorithms, equations, and logic. |
| Data | For the data internal to the component, describes the representation method, initial values, use, semantics, and format. This information will probably be recorded in the data dictionary. |