Release History

Iteration 3 - 3-15-05

USE CASE 11

The user sees a shadow under his ship.

Preconditions

User Stories 1 and 2 have been fulfilled.

Success End Condition

A shadow is successfully drawn.

Fail End Condition

The user's video card does not support stencil buffers.

Trigger

EigenMaze is launched and shadows are enabled.

Description

Stencil buffer shadow volumes are used to create realistic shadows for Entities.

USE CASE 12

Visible thrust is shown when the user is accelerating or deacclerating.

Preconditions

User Story 3 has been fulfilled.

Success End Condition

Visible thrust is drawn that gives the user a indication of what direction the ship is currently going, and what direction it is accelerating towards.

Fail End Condition

No fail end condition has been identified.

Trigger

The user accomplishes a task described by User Story 3

Description

Visible thrust is a useful indicator that helps the user figure out the ship's velocity and interia in a spacelike enviroment in EigenMaze.

USE CASE 13

The user sees shadows that are created by the static geometry in the game (if Lightmaps are enabled).

Preconditions

User Story 1 and 2 have been fulfilled.

Success End Condition

Shadows created by the walls are successfully created and drawn.

Fail End Condition

Possible failure end condition is the JVM running out of memory because creating lightmaps are both a processor and memory intensive task.

Trigger

The user accomplishes User Story 2.

Description

Lightmaps are used to create shadows casted by level geometry. This method precalculates the shadows before the game starts to increase performance during actual play time.

USE CASE 14

The user can see network activity.

Preconditions

User Stories 5 or 6 have been fulfilled.

Success End Condition

User can see activity on the network from other users

Fail End Condition

The user does not see activity on the network from other users

Trigger

Other users interacting with the network.

Description

Game specific data is synched on the network allowing multiple users to participate in the same game.

USE CASE 15

The user sees text messages in the upper left hand corner of the game window.

Preconditions

User Stories 1 and 2 have been fulfilled

Success End Condition

Periodic messages appear in the upper left hand of screen. Old messages scroll up until off the screen.

Fail End Condition

No messages are seen, or are in the wrong position.

Trigger

Preconditions

Description

The Text display is created with the same method as the Shields and FPS display. The use of this new feature will be to provide more information to the user.

USE CASE 16

The user sees scenery outside the maze.

Preconditions

User Story 1 has been fulfilled

Success End Condition

The maze appears to be in the middle of a scene. Currently a mountain range with green plant life around.

Fail End Condition

The maze is surrounded by blackness.

Trigger

Preconditions

Description

The Sky box is created by enclosing the game space in a cube that moves with the camera. unique textures are used for each side to create the effect of a continous scene.

USE CASE 17

The user sets engine-wide preferences.

Preconditions

The engine is up and running.

Success End Condition

The user can set preferences that will take effect the next time the game is loaded, and are written to persistent storage in an XML format.

Fail End Condition

The preferences pane does not appear and preferences cannot be changed - possibly due to read-only access to the preferences file.

Trigger

The user chooses "Preferences" from the main menu.

Description

A new window is created that allows the user to change various engine-wide values. These include windowed resolution, default maze dimensions, and fullscreen mode.

USE CASE 18

A title screen/menu appears while the maze is being generated.

Preconditions

The program has started and OpenGL has initialized.

Success End Condition

An OpenGL-powered title screen with clickable menu appears before the game is playable. The user will be able to enter the game once the maze has been fully generated. The user will also be able to choose to set preferences or quit the program.

Fail End Condition

No failure condition is identified.

Trigger

The user starts the program.

Description

An OpenGL canvas is created to specifically handle the drawing and event-handling of the title menu.

Iteration 2 - 2-17-05

USE CASE 4

The user creates a new maze.

Preconditions

The program is running and the game world has been created.

Success End Condition

A new random maze is generated and applied to the game world.

Fail End Condition

The new maze is not created and the existing maze persists.

Trigger

The user selects "New Maze" from the main menu.

Description

A new Maze3d with the parameters specified by the user is allocated and generated. The current list of triangles is erased from the Octree and this maze's triangles are inserted.

USE CASE 5

The user starts a new network game as server.

Preconditions

The program is running, the game world has been created, and the computer has a network or internet connection.

Success End Condition

A port is opened and the program begins serving a net game on that port (4224 by default).

Fail End Condition

The server does not start and clients cannot connect.

Trigger

The user selects "Create a Net Game" from the main menu.

Description

A new Server object is created which handles network interaction on its own thread.

USE CASE 6

The user joins a network game.

Preconditions

The program is running, the game world has been created, and the computer has a network or internet connection.

Success End Condition

The program will connect remotely to a given IP and port, and begin to send and receive data to participate in a network game.

Fail End Condition

The program throws a ConnectException with the message "Connection refused" or "Connection timed out".

Trigger

The user selects "Join a Net Game" from the main menu.

Description

The EigenEngine's existing NetHandler is told to connect to the user-given IP and port. The NetHandler begins its own thread to handle async I/O.

USE CASE 7

The user quits or exits the program.

Preconditions

The program is running and the user interface has been created.

Success End Condition

The program will exit without error.

Fail End Condition

The program will exit with an error; the OS is left to handle that.

Trigger

The user:

  • Closes the main game window.
  • Selects "Quit" from the main menu.

Description

All user threads are closed properly, loops are exited, and the program closes down.

USE CASE 8

The user looks at the screen before interacting with the program.

Preconditions

User Story 1 is fulfilled.

Success End Condition

The game window renders a fully textured three-dimensional maze and a textured player ovject.

Fail End Condition

The game window does not display the maze or player object, or fails to correctly render textures.

Trigger

The program has been started.

Description

Each triangle that makes up the maze is drawn to the GLCanvas. Each triangle that makes up the player is drawn. All triangles have textures.

USE CASE 9

The user looks at the screen before interacting with the program.

Preconditions

User Story 1 is fulfilled.

Success End Condition

The game window renders a complex textured model as a player object representation.

Fail End Condition

The game window does not display the player object.

Trigger

The program has been started.

Description

A Wavefront OBJ model file, its associated material library, and all associated texture image files are loaded from persistent storage. The triangles of the player object are sorted by texture for efficiency. Each triangle is drawn, textured, and lit.

USE CASE 10

The user uses the weapon keys to interact with the game world.

Preconditions

User Stories 1 and 2 have been fulfilled.

Success End Condition

A projectile (bullet or bomb) is launched from the player object.

Fail End Condition

No failure mode has been identified.

Trigger

The user presses the weapon keys to launch a specific projectile - spacebar to fire a bullet, Z to fire a bomb.

Description

If the user presses the spacebar, a fast-moving Bullet is generated in front of the player object. The bullet will bounce off walls but explode and do damage on contact with a Ship. If the user presses the Z button, a Bomb is generated in front of the player object. The Bomb moves slowly and does a lot of damage, but explodes on any collision.

Iteration 1 - 2-1-05

USE CASE 1

The user launches EigenMaze.

Preconditions

EigenMaze is fully installed.

Success End Condition

The main JFrame with menu bar and game world panel appears, and the 3D maze world renders in that window.

Fail End Condition

The operating system should handle failed program launch.

Trigger

The user launches the EigenMaze program from his file browser of choice.

Description

Opening and initializing the application environment; instrumental to all other user stories.

USE CASE 2

The user looks at the screen before interacting with the program.

Preconditions

User Story 1 is fulfilled.

Success End Condition

The game window renders a colored (perhaps randomly) three-dimensional maze and a similarly colored player object, probably a cube.

Fail End Condition

The game window does not display the maze or player object.

Trigger

The program has been started.

Description

Each triangle that makes up the maze is drawn to the GLCanvas. Each triangle that makes up the player is drawn.

USE CASE 3

The user uses the movement keys to interact with the game world.

Preconditions

User Stories 1 and 2 have been fulfilled.

Success End Condition

The player object moves with predictable inertia in the direction of the movement keys pressed.

Fail End Condition

No failure mode has been identified.

Trigger

The user presses the movement keys to indicate the direction the player object should move - W to accelerate forward, S to accelerate backward, A to turn left, D to turn right.

Description

If the user presses the W or S button: the player is accelerated forward or backward by an amount equal to the time of frame times a constant value. If the user presses the A or D button: the user is rotated to the right or left by an amount equals to the time of frame times a constant value.