CS313-Zombiquarium

Introduction

This is the Software Design Description (SDD) for the Zombiquarium mini-game application. Note that this document format is based on the IEEE Standard 1016-2009 recommendation for software design.

Purpose

This document is to serve as the blueprint for the construction of the Zombiquarium application. This design will use UML class diagrams to provide complete detail regarding all packages, classes, instance variables, class variables, and method signatures needed to build the application. In addition, UML Sequence diagrams will be used to specify object interactions post-initialization of the application, meaning in response to user interactions or timed events.

Scope

Zombiquarium will be one mini-game among many to be included in the Plants vs. Zombies application. Tools for its construction should be developed with this in mind such that additional mini-games may avoid duplication of work. As such, a framework called the MiniGame Framework, will be designed and constructed along with the Zombiquarium game such that it may be used to build additional mini-games. So, this design contains design descriptions for the development of both the framework and game. Note that Java is the target language for this software design.

Definitions, acronyms, and abbreviations

Class Diagram - A UML document format that describes classes graphically. Specifically, it describes their instance variables, method headers, and relationships to other classes.

IEEE - Institute of Electrical and Electronics Engineers, the “world’s largest professional association for the advancement of technology”.

Framework - In an object-oriented language, a collection of classes and interfaces that collectively provide a service for building applications or additional frameworks all with a common need.

Java - A high-level programming language that uses a virtual machine layer between the Java application and the hardware to provide program portability.

Mini-Game - A standalone game that is a subset of a larger game application, typically sharing the primary game theme with that parent game application.

Mini Game Framework - The software framework to be developed in tandem with the Zombiquarium game such that additional mini-games can easily be constructed. Note that in the Zombiquarium SRS this was sometimes called the “Mini Zombie Game Framework”, but has been renamed the “Mini Game Framework”, since it’s not Zombie-specific.

Plants vs. Zombies - The PopCap Games game that is the parent application of our Zombiquarium mini-game. Note that Zombiquarium is to be distributed as part of that program.

Sequence Diagram - A UML document format that specifies how object methods interact with one another.

Sprite - a renderable, and sometimes movable or clickable image in the game. Each Sun, Zombie, and Brain will be its own Sprite, as will GUI controls.

SpriteType - a type of Sprite, meaning all the artwork and states corresponding to a category of sprite. We do this because all the suns share artwork, so we will load all their artwork into a common Sprite Type, but each Sprite has its own position and velocity, so each will be its own Sprite that knows what Sprite Type it belongs to.

UML - Unified Modeling Language, a standard set of document formats for designing software graphically.

Zombie - An undead creature, meaning something that has died and then come back to life. These beings are typically slow moving and love to eat brains.

Zombiquarium - The title of the mini-game described by this document. Again, note that this game will be distributed as part of the Plants vs. Zombies application.

Overview

This Software Design Description document provides a working design for the Zombiquarium software application as described in the Zombiquarium Software Requirements Specification. Note that all parties in the implementation stage must agree upon all connections between components before proceeding with the implementation stage. Section 2 of this document will provide the Package-Level Viewpoint, specifying the packages and frameworks to be designed. Section 3 will provide the Class-Level Viewpoint, using UML Class Diagrams to specify how the classes should be constructed. Section 4 will provide the Method-Level System Viewpoint, describing how methods will interact with one another. Section 5 provides deployment information like file structures and formats to use. Section 6 provides a Table of Contents, an Index, and References. Note that all UML Diagrams in this document were created using the VioletUML editor.

Package-Level Design Viewpoint

As mentioned, this design will encompass both the Zombiquarium game application and the Mini-Game Framework to be used in its construction. In building both we will heavily rely on the Java API to provide services. Following are descriptions of the components to be built, as well as how the Java API will be used to build them.

Zombiquarium and Mini Game overview

The Zombiquarium and MiniGame framework will be designed and developed in tandem. Figure 2.1 specifies all the components to be developed and places all classes in home packages.

Java API Usage

Both the framework and the mini-game application will be developed using the Java programming languages. As such, this design will make use of the classes specified in Figure 2.2.

Class-Level Design Viewpoint

As mentioned, this design will encompass both the Zombiquarium game application and the Mini-Game Framework. The following UML Class Diagrams reflect this. Note that due to the complexity of the project, we present the class designs using a series of diagrams going from overview diagrams down to detailed ones.

Method-Level Design Viewpoint

Now that the general architecture of the classes has been determined, it is time to specify how data will flow through the system. The following UML Sequence Diagrams describe the methods called within the code to be developed in order to provide the appropriate event responses.

File Structure and Formats

Note that the Mini Game Framework will be provided inside MiniGameFramework.jar, a Java ARchive file that will encapsulate the entire framework. This should be imported into the necessary project for the Zombiquarium application and will be included in the deployment of a single, executable JAR file titled Zombiquarium.jar. Note that all necessary data and art files must accompany this program. Figure 5.1 specifies the necessary file structure the launched application should use. Note that all necessary images should of course go in the image directory.

The ZombiquariumGameData.txt provides the file and state names for all sprite states in the game. The file is a raw text file that can be used to describe M Sprite Types, each with their own N states as follows:

1
2
3
4
5
6
7
NumSpriteTypes
SpriteType_1|NumStatesFor_1
SpriteType_1STATE_1|SpriteType_1STATE_1_FileNameAndPath
SpriteType_1STATE_N1|SpriteType_1STATE_N1_FileNameAndPath
SpriteType_M|NumStatesFor_M
SpriteType_MSTATE_1|SpriteType_MSTATE_1_FileNameAndPath
SpriteType_MSTATE_N2|SpriteType_MSTATE_N2_FileNameAndPath

Supporting Information

Note that this document should serve as a reference for those implementing the code, so we’ll provide a table of contents to help quickly find important sections.