Ankh Software Requirements Specification Version 2.0 Prepared by John Flynt John Rose Carlos Villar Ben Vinson Ankh Software Requirements Specification Contents Description .......................................................................................................................... 8 Perspective ...................................................................................................................... 8 Product Functions System Decomposition View ........................................................... 8 User Characteristics ........................................................................................................ 9 Constraints ...................................................................................................................... 9 Assumptions and Dependencies ..................................................................................... 9 External Resource Requirements ........................................................................................ 9 User Interface ................................................................................................................ 10 Hardware Interface........................................................................................................ 10 Software Interface ......................................................................................................... 10 Communications Interface ............................................................................................ 10 Functional Requirements Views ....................................................................................... 10 Primary List of Functional Requirements ......................................................................... 10 <Req_1>................................................................................................................ 10 <Req_2>................................................................................................................ 10 <Req_3>................................................................................................................ 10 <Req_4>................................................................................................................ 11 <Req_5>................................................................................................................ 11 <Req_6>................................................................................................................ 11 <Req_7>................................................................................................................ 11 <Req_8>................................................................................................................ 11 <Req_9>................................................................................................................ 11 <Req_10>.............................................................................................................. 11 <Req_11>.............................................................................................................. 11 <Req_12>.............................................................................................................. 11 <Req_13>.............................................................................................................. 11 <Req_14>.............................................................................................................. 11 <Req_15>.............................................................................................................. 11 <Req_16>.............................................................................................................. 11 <Req_17>.............................................................................................................. 11 <Req_18>.............................................................................................................. 12 <Req_19>.............................................................................................................. 12 <Req_20>.............................................................................................................. 12 <Req_22>.............................................................................................................. 12 <Req_23>.............................................................................................................. 12 <Req_24>.............................................................................................................. 12 <Req_25>.............................................................................................................. 12 <Req_26>.............................................................................................................. 12 <Req_27>.............................................................................................................. 12 <Req_28>.............................................................................................................. 12 <Req_29>.............................................................................................................. 12 <Req_30>.............................................................................................................. 12 <Req_31>.............................................................................................................. 12 <Req_32>.............................................................................................................. 13 106752703 2 3/7/2016 Ankh Software Requirements Specification <Req_33>.............................................................................................................. 13 <Req_34>.............................................................................................................. 13 <Req_35>.............................................................................................................. 13 <Req_36>.............................................................................................................. 13 <Req_37>.............................................................................................................. 13 <Req_38>.............................................................................................................. 13 <Req_39>.............................................................................................................. 13 <Req_40>.............................................................................................................. 13 <Req_41>.............................................................................................................. 14 <Req_42>.............................................................................................................. 14 <Req_43>.............................................................................................................. 14 <Req_44>.............................................................................................................. 14 <Req_45>.............................................................................................................. 14 <Req_46>.............................................................................................................. 14 <Req_47>.............................................................................................................. 14 <Req_48>.............................................................................................................. 14 <Req_49>.............................................................................................................. 14 <Req_50>.............................................................................................................. 14 <Req_51>.............................................................................................................. 14 <Req_52>.............................................................................................................. 14 <Req_53>.............................................................................................................. 14 <Req_54>.............................................................................................................. 15 <Req_55>.............................................................................................................. 15 <Req_56>.............................................................................................................. 15 <Req_57>.............................................................................................................. 15 <Req_58>.............................................................................................................. 15 <Req_59>.............................................................................................................. 15 <Req_60>.............................................................................................................. 15 <Req_61>.............................................................................................................. 15 <Req_62>.............................................................................................................. 15 <Req_63>.............................................................................................................. 15 <Req 64>............................................................................................................... 15 Functional Requirements Component View ..................................................................... 16 Stripe 1—Opening ........................................................................................................ 16 Stripe 2.1—GUI Objects ............................................................................................... 16 Stripe 2.2—Floor Tiling................................................................................................ 16 Stripe 2.3—Mesh Placement ........................................................................................ 16 Stripe 2.4—Save and Load ........................................................................................... 16 Stripe 3.1—Navigate Alexandria .................................................................................. 16 Stripe 3.2—Sound ......................................................................................................... 16 Stripe 4—Character Editor ........................................................................................... 16 Stripe 5—Unit Physics .................................................................................................. 16 Stripe 6—Inventory Items............................................................................................. 16 Stripe 7—Combat ......................................................................................................... 17 Stripe 8—Acquire Skills ............................................................................................... 17 Stripe 9—Acquire Weapon ........................................................................................... 17 106752703 3 3/7/2016 Ankh Software Requirements Specification Stripe 10—View Statistics ............................................................................................ 17 Stripe 11—AI ................................................................................................................ 17 Stripe 12—Remaining Level ........................................................................................ 17 Stripe 13—Saving and Loading .................................................................................... 17 Stripe 14—Options ....................................................................................................... 17 Nonfunctional Requirements ........................................................................................ 17 Use Case View of the Requirements ................................................................................ 17 Design Constraints ............................................................................................................ 18 Availability ................................................................................................................... 18 Security ......................................................................................................................... 18 Maintainability .............................................................................................................. 18 Other Requirements ...................................................................................................... 18 Appendix A Use Cases ..................................................................................................... 19 Use Case Name: Player saves game state ................................................................. 19 Requirement(s) Explored: #1,#4 ........................................................................... 19 Use Case Name: User loads a file ............................................................................. 20 Requirement(s) Explored: #2 ................................................................................ 20 Use Case Name: User associates profiles ................................................................. 21 Requirement(s) Explored: #3,#9 ........................................................................... 21 Use Case Name: Player chooses filenames .............................................................. 22 Requirement(s) Explored: #4 ................................................................................ 22 Use Case Name: Players observes automatic save ................................................... 23 Requirement(s) Explored: #5,#6 ........................................................................... 23 Use Case Name: Player sees save ............................................................................. 24 Use Case Name: Player replays after battle .............................................................. 25 Requirement(s) Explored: #7 ................................................................................ 25 Use Case Name: Player selects replay ...................................................................... 26 Requirement(s) Explored: #8 ................................................................................ 26 Use Case Name: Player saves profile ....................................................................... 27 Requirement(s) Explored: #10 .............................................................................. 27 Use Case Name: Player uses playback ..................................................................... 28 Requirement(s) Explored: #11 .............................................................................. 28 Use Case Name: Player uses Resume playback ....................................................... 29 Requirement(s) Explored: #12 .............................................................................. 29 Use Case Name: Player obverses full screen ............................................................ 30 Requirement(s) Explored: #14 .............................................................................. 30 Use Case Name: Player loads replay ........................................................................ 31 Requirement(s) Explored: #15 .............................................................................. 31 Use Case Name: Player observes alpha effects ........................................................ 32 Requirement(s) Explored: #17 .............................................................................. 32 Use Case Name: Player uses mouse ......................................................................... 33 Requirement(s) Explored: #16 .............................................................................. 33 Use Case Name: Player interacts with GUI .............................................................. 34 Requirement(s) Explored: #18 .............................................................................. 34 Use Case Name: Player selects menu items ............................................................. 35 Requirement(s) Explored: #36 .............................................................................. 35 106752703 4 3/7/2016 Ankh Software Requirements Specification Use Case Name: Player observes load ..................................................................... 36 Requirement(s) Explored: #46 .............................................................................. 36 Use Case Name: Player moves to new level ............................................................ 37 Requirement(s) Explored: #27 .............................................................................. 37 Use Case Name: Player plays using mouse ............................................................. 38 Requirement(s) Explored: #28 .............................................................................. 38 Use Case Name: Player plays music ........................................................................ 39 Requirement(s) Explored: #29 .............................................................................. 39 Use Case Name: Player replaces music ................................................................... 40 Requirement(s) Explored: #30 .............................................................................. 40 Use Case Name: Player listens to music .................................................................. 41 Requirement(s) Explored: # 31 ............................................................................. 41 Use Case Name: Player hears sound ........................................................................ 42 Requirement(s) Explored: #32 .............................................................................. 42 Use Case Name: Player hears different channels ..................................................... 43 Requirement(s) Explored: #33 .............................................................................. 43 Use Case Name: Player disables sounds .................................................................. 44 Requirement(s) Explored: #65 .............................................................................. 44 Use Case Name: Player observes special effects ..................................................... 45 Requirement(s) Explored: #34 .............................................................................. 45 Use Case Name: Player observes mesh ................................................................... 46 Requirement(s) Explored: #35 .............................................................................. 46 Use Case Name: Player manipulates units................................................................ 47 Requirement(s) Explored: #36 .............................................................................. 47 Use Case Name: Player watches game play itself ................................................... 48 Requirement(s) Explored: #37 .............................................................................. 48 Use Case Name: Player selects options .................................................................. 49 Requirement(s) Explored: #38 .............................................................................. 49 Requirement(s) Explored: #39 .............................................................................. 50 Use Case Name: Player select armor ....................................................................... 51 Requirement(s) Explored: #40 .............................................................................. 51 Use Case Name: Player uses CD ............................................................................. 52 Requirement(s) Explored: #58 .............................................................................. 52 Use Case Name: Player selects install options ........................................................ 53 Requirement(s) Explored: #59 .............................................................................. 53 Use Case Name: Player uses game on a .................................................................. 54 Requirement(s) Explored: #61 .............................................................................. 54 Use Case Name: Player observes terrain ................................................................. 55 Requirement(s) Explored: #41 .............................................................................. 55 Use Case Name: ........................................................................................................ 56 Requirement(s) Explored: ......................................................................................... 56 Appendix B Task-Object-Remarks Table ......................................................................... 57 Req_ 1 ................................................................................................................... 57 Req_ 2 ................................................................................................................... 57 Req_ 64 ................................................................................................................. 57 Req_ 3 ................................................................................................................... 57 106752703 5 3/7/2016 Ankh Software Requirements Specification Req_ 4 ................................................................................................................... 58 Req_ 5 ................................................................................................................... 58 Req_ 6 ................................................................................................................... 58 Req_ 7 ................................................................................................................... 58 Req_ 8 ................................................................................................................... 58 Req_ 9 ................................................................................................................... 58 Req_ 10 ................................................................................................................. 58 Req_ 11 ................................................................................................................. 58 Req_ 12 ................................................................................................................. 58 Req_ 13 ................................................................................................................. 58 Req_ 14 ................................................................................................................. 58 Req_ 15 ................................................................................................................. 58 Req_ 16 ................................................................................................................. 58 Req_ 17 ................................................................................................................. 59 Req_ 18 ................................................................................................................. 59 Req_ 19 ................................................................................................................. 59 Req_ 20 ................................................................................................................. 59 Req_ 21 ................................................................................................................. 59 Req_ 22 ................................................................................................................. 59 Req_ 23 ................................................................................................................. 59 Req_ 24 ................................................................................................................. 59 Req_ 25 ................................................................................................................. 59 Req_ 26 ................................................................................................................. 59 Req_ 27 ................................................................................................................. 59 Req_ 28 ................................................................................................................. 59 Req_ 29 ................................................................................................................. 59 Req_ 30 ................................................................................................................. 60 Req_ 31 ................................................................................................................. 60 Req_ 32 ................................................................................................................. 60 Req_ 33 ................................................................................................................. 60 Req_ 34 ................................................................................................................. 60 Req_ 35 ................................................................................................................. 60 Req_ 36 ................................................................................................................. 60 Req_ 37 ................................................................................................................. 60 Req_ 38 ................................................................................................................. 61 Req_ 39 ................................................................................................................. 61 Req_ 40 ................................................................................................................. 61 Req_ 41 ................................................................................................................. 61 Req_ 42 ................................................................................................................. 61 Req_ 43 ................................................................................................................. 61 Req_ 44 ................................................................................................................. 61 Req_ 45 ................................................................................................................. 61 Req_ 46 ................................................................................................................. 61 Req_ 47 ................................................................................................................. 61 Req_ 48 ................................................................................................................. 62 Req_ 49 ................................................................................................................. 62 106752703 6 3/7/2016 Ankh Software Requirements Specification Req_ 50 ................................................................................................................. 62 Req_ 51 ................................................................................................................. 62 Req_ 52 ................................................................................................................. 62 Req_ 53 ................................................................................................................. 62 Req_ 54 ................................................................................................................. 62 Req_ 55 ................................................................................................................. 62 Req_ 56 ................................................................................................................. 62 Req_ 57 ................................................................................................................. 62 Req_ 58 ................................................................................................................. 62 Req_ 59 ................................................................................................................. 62 Req_ 60 ................................................................................................................. 62 Req_ 61 ................................................................................................................. 62 Req_ 62 ................................................................................................................. 62 Req_ 63 ................................................................................................................. 62 106752703 7 3/7/2016 Ankh Software Requirements Specification Description The Ankh Software Requirements Specification provides a list and description of the functional and non-functional specifications for the software components of Ankh. It is derived in part from the Ankh Game Design Document and is supplemented by the Ankk Software Design Specification, the Ankh Software Test Plan. The Ankh Software Requirement provides the following views of the requirements. A list of the requirements presented numerically. A preliminary component grouping of the requirements. Use case explorations of the requirements. A preliminary mapping of the requirements against proposed objects and their responsibilities. The document is intended to establish the initial scope of the development effort. Perspective This is a single-player turn-based strategy game. It is intended to illustrate the processes and technical items contained by a textbook on software engineering and game development. The game incorporates features that are common to PC games, but it also introduces a variety of innovations that are not usually offered in beginning game books. Among these features are the following: advanced resource management, a state machine, event handling through the binding of member functions, the use of the boost library, the use of map and character editors, and saving and loading of game states. Product Functions System Decomposition View Preliminary functional components of the product are as follows (see the Ankh Software Design Specification for greater detail):: Stripe 1 : Game Opening Stripe 2-a: Tile map Stripe 2-b: GUI Elements Stripe 2-c: Map Editor Stripe 2-d: Save Level Stripe 3: Level Template (modeled on first level Stripe 4: Character editor Stripe 5: Game physics Stripe 6: Inventory 106752703 8 3/7/2016 Ankh Software Requirements Specification Stripe 7: Combat Stripe 8: Skills Stripe 9: Outside World Management Stripe 10: Skills Interface Stripe 11: AI Stripe 12: Remaining levels Stripe 13: Saving and Loading Stripe 14: Options The components mentioned above are more fully explored below, under the heading “Functional Requirements Component View.” User Characteristics This game is designed for players of all ages. However, its features offer points of interest for people who are learning how to develop games using C++ and DirectX. The game offers the ability to save level and character configurations. Other features enable students of the game to see what can be done with a relatively advanced development effort. Constraints The game serves largely to illustrate development activities. While it includes a wide range of interesting features, such as map editing, character editing, and other things, it is not intended to offer a level of complexity that corresponds to a commercial game. Code is intentionally simplified so that readers of the book can make easy use of it. Assumptions and Dependencies An executable will be included on the CD, but users of the text will be able to compile the game at different stripe levels. The user should have an appropriate version of Microsoft Visual C++. An installation package accompanies the software. Care must be taken to package the game so that it can be loaded in stripes by users of the text the game accompanies. External Resource Requirements The issues dealt with in this section of the document pertain to user and system requirements that affect the operation of the game within a given system or within a network context. 106752703 9 3/7/2016 Ankh Software Requirements Specification User Interface The user interface is based on components created using Direct3D and DirectInput. Standard Windows message is used for key events. The game runs on a personal computer. The interface at a minimum should support 16-bit and 32-bit resolution. The primary resolution should be 640-480, but higher resolutions should be supported. Hardware Interface The game executes on a PC equipped with Pentium III or equivalent, a Direct3Dcompatible graphics cards, an appropriate sound card. Software Interface DirectX 9.b (Summer Update 2003) or later is required for the game. Communications Interface The user interacts with the game using the mouse and the keyboard. Functional Requirements Views This section provides the first of three views of the functional requirements for Ankh. The first view provides a primary list of the functional requirements. This list is organized sequentially. The second view provides a list of the functional requirements as grouped according to component. A component is also called a “stripe.” Each stripe represents a coherent groping of functionality. The third view provides a set of use cases that provide proofs-of-concept for the requirements. The use cases serve as a supplement to the master requirements list. See Appendix A for a use-case view of the requirements listed in the this section. Primary List of Functional Requirements <Req_1> Software shall have the capability to save the game state from a menu. <Req_2> Software shall have the capability to return to a saved state by loading a file. <Req_3> Software shall have the ability to associate user profiles with saved game files. 106752703 10 3/7/2016 Ankh Software Requirements Specification <Req_4> Software shall allow the player to choose file names. <Req_5> Software shall have an auto-save feature that automatically saves the game constantly to memory. <Req_6> Software shall have a timer mechanism that will flush memory to disk periodically (every 20 seconds). <Req_7> Software shall provide the player the option to save a Replay after a battle. <Req_8> Software shall have a Main Menu that will have a Load Replay option. <Req_9> Software shall save Replays to a default directory where the profile info is stored. <Req_10> Software shall prompt the user to create a profile that is stored in the “Profiles” directory. <Req_11> Software shall allow the player to play back at variable speeds. <Req_12> Software shall have a Pause/Resume feature to facilitate Replays. <Req_13> Software shall implement terrains, characters, and buildings – any 3-D objects as meshes. <Req_14> Software shall run only in full screen mode. <Req_15> Software shall have the capability to handle Alt+Tab key combination. <Req_16> Software shall support a custom mouse pointer. <Req_17> Software shall have support for Alpha Channels. 106752703 11 3/7/2016 Ankh Software Requirements Specification <Req_18> Software shall support panels, menus, buttons, sliders text boxes and pictures. <Req_19> Characters shall have at a minimum these attributes [strength, health, agility, vitality, intelligence] <Req_20> Characters shall have skills appropriate to their class. <Req_21> Each Characters shall belong to a Social Class that is uniquely identifiable based on unique attributes. <Req_22> Customization shall be based tools rather than be hard coded. <Req_23> Software shall a logging capability that will track errors and log trace statements. <Req_24> Software shall not support multiplayer and should be player against the AI. <Req_25> The AI shall have the capability to use units and play the game. <Req_26> (Modified) The AI shall be able to play in response to the main character. <Req_27> Software shall support at least 5 levels based on a simple story. <Req_28> Software shall the capability to play the game using only a mouse. <Req_29> Software shall support MP3 playback and allow the player to select his or her own music. <Req_30> Software shall include default music that can be replaced by the player. <Req_31> Software shall operate correctly in the absence of music files. 106752703 12 3/7/2016 Ankh Software Requirements Specification <Req_32> Software shall support DirectSound and a variety of sound formats, particularly .wav and .mp3. <Req_33> Software shall support 16 channels and allow the user to disable the sound effects. <Req_34> Software shall support a particle generator for special effects. <Req_35> Software shall support the dot X mesh format. <Req_36> Software shall allow the player to control at least 6 units. <Req_37> Software shall have a game mode where it can play against itself. <Req_38> Software shall support a main menu with these entries: New Game Continue Change Profile Settings Exit Map Editor/Character Editor ---new load game (8/3/03) <Req_39> Software shall support the following options: Change Resolution Sound Volume Mesh detail Particle detail Texture detail Game speed <Req_40> Software shall support the capability for characters to acquire various armor, weapons and inventory. 106752703 13 3/7/2016 Ankh Software Requirements Specification <Req_41> Software shall support different kinds of terrain that will affect the performance of the characters. <Req_42> Software shall support the capability that given two points, it will be able to navigate and find a sensible path. <Req_43> Software shall support a Map Editor. <Req_44> Software shall support a Character Editor that is intuitive. <Req_45> Software shall support the capability for characters to move based on speed, terrain and so on. <Req_46> Software shall load in no more than 20 seconds. <Req_47> Software shall allow a player to select units with the mouse and use different button to perform actions. <Req_48> Software shall have a fixed camera angle of ¾. <Req_49> Each Character shall have an inventory. <Req_50> The shareware program InnoSetup shall be used to install all necessary files and the accompanying documentation. <Req_51> Software shall fit on a single disk along with the supporting applications. <Req_52> (Removed) Software shall support a tool tip to provide information to the player of the game. <Req_53> Software shall include a user’s guide. 106752703 14 3/7/2016 Ankh Software Requirements Specification <Req_54> Units that die and are not revived within a specific period never come back. <Req_55> Units can be restored back to health using magic. (and items) 08/02/03 <Req_56> Units gain experience and enhance their skill through combat. <Req_57> when a user starts the game, he will be provided with configuration options, such as playing a previous game. (Game starts with profile selection screen, followed by main menu screen08/02/03) <Req_58> Software shall support the following software/hardware: · Win98 or higher · 500 MHz CPU · 128 MB · 16 MB 3D Accelerator (TNT2) · CD ROM · DirectX 9 <Req_59> (Removed) During the installation of the product, the user shall have a choice of what applications and stripes to install. <Req_60> Documentation for the editor and tools shall be provided in separate html or .pdf files. <Req_61> Software shall be implemented in C++/Win32. <Req_62> (Modified) Software shall include project files for compiling the program. <Req_63> Software shall support automatic source code documentation. <Req 64> Software shall support a global system clock to synchronize events in the game. (added in this document 9/9/03jf ) 106752703 15 3/7/2016 Ankh Software Requirements Specification Functional Requirements Component View This view of the requirements is dealt with in much greater detail in the Ankh Software Design Description. The Ankh Software Design description provides a componential view of the classes that implement the functionality. The breakdown here is meant only as a preliminary exploration of the scope of the game. Stripe 1—Opening Requirement 8, 16, 18, 38, 46, 14, 15, 17, 23, 28, 46, 57, Stripe 2.1—GUI Objects Requirement 18, 52, Stripe 2.2—Floor Tiling Requirement 43. Stripe 2.3—Mesh Placement Requirements 43, 13 Stripe 2.4—Save and Load Requirement 4. Stripe 3.1—Navigate Alexandria Requirement 13, 14, 15 , 16, 17, 36, 61, Stripe 3.2—Sound Requirements 29,30,31,32,33 Stripe 4—Character Editor Requirements 18, 19, 20, 21, 22, 35, 44 Stripe 5—Unit Physics Requirements 13, 14, 15, 16, 17, 35, (41), 47, 48, 42, 45, 64 Stripe 6—Inventory Items Requirements 40, 49, 55 106752703 16 3/7/2016 Ankh Software Requirements Specification Stripe 7—Combat Requirements 54, 56 Stripe 8—Acquire Skills Requirements 20, 34, 47, 55, 56 Stripe 9—Acquire Weapon Requirements 14, 15, 16, 17, 40, 49 Stripe 10—View Statistics Requirements 14, 15, 16, 17, 18, 19, 20, 21 Stripe 11—AI Requirements 24, 25, 26, 37 Stripe 12—Remaining Level Requirements 27 Stripe 13—Saving and Loading Requirements 1 ,2,3,4,5,6,7,8,9,10,11,12 Stripe 14—Options Requirements 39 Nonfunctional Requirements Requirements 50, 51, 53, 58, (59), 60, 61, 62, 63 Use Case View of the Requirements Appendix A presents a full set of use cases for the functional requirements of Anhk. Each use case serves to both test the validity of a requirement or set of requirements and to collect information useful in the development of a test plan. The use cases also provide a start on the design work. See the Ankh Software Test Plan for a specific information on testing. See the Ankh Software Design Specification on the generalized design scenarios for Ankh. 106752703 17 3/7/2016 Ankh Software Requirements Specification Design Constraints This section lists design constraints. Design constraints pertain to any development factors that relate to the scope of the project or that can impact the development schedule for the product. Availability The game is available for play after installation. A single installation package allows the user to install the game. Care is to be taken to develop “stripes” of the game so that readers of the text the game accompanies can view it at different stages of construction. Security There are no security issues. Maintainability The game can be modified using the map and character editors. If a patch or expansion is issued, the executable can be overwritten. The maintenance elements will be available for download from the website. Users must be informed that the editors create data files, and these must not be overwritten during updates. Other Requirements Some non-functional requirements, enumerated above in both the component decomposition and the consecutive, apply to the game. These requirements are as follows: 50, 51, 53, 58, (59), 60, 61, 62, 63. 106752703 18 3/7/2016 Ankh Software Requirements Specification Appendix A Use Cases This appendix contains use case scenarios that explore the requirements listed in section three of the SRS. Use Case Name: Player saves game state Requirement(s) Explored: #1,#4 Player (Actor) Context (Role): Player Preconditions: Game is in progress, player has brought up menu Trigger(s): Player chooses “Save Game” from menu Main Course of Action: 1.) A file dialog is presented so the player can choose the filename for the save. 2.) The player chooses a location and filename for their savegame and clicks OK. 3.) The system dumps out the current game to the chosen location. 4.) The dialog closes and the player is brought back to the menu. Alternate Course(s) of Action: 2a.) The player clicks cancel 2a1.) The dialog closes and the player is brought back to the menu. 2b.) The file already exists and the player is asked to confirm overwriting it. Exceptional Course(s) of Action: 3a.) There is an error trying to save the game (disk space, read only, etc…) 3a1.) An error message is displayed and the player is taken back to step 1 106752703 19 3/7/2016 Ankh Software Requirements Specification Use Case Name: User loads a file Requirement(s) Explored: #2 Player (Actor) Context (Role): Player Preconditions: A saved game must exist. Trigger(s): Player chooses to load the game from the menu and chooses a valid save file. Main Course of Action: 1.) The system loads the initial game state from the save file 2.) The system goes through the saved game and performs all the actions listed in it without updating the screen so it appears instantaneous to the player. 3.) Control of the game is given back to the player once the end of the file is reached. Alternate Course(s) of Action: Exceptional Course(s) of Action: 1a.) The saved game is an older format which is no longer supported. 1b.) The saved game appears to be corrupted and the system can not parse it. 106752703 20 3/7/2016 Ankh Software Requirements Specification Use Case Name: User associates profiles Requirement(s) Explored: #3,#9 Player (Actor) Context (Role): Player Preconditions: The player must have created at least one profile. Trigger(s): The player brings up a file dialog up which is asking them where to save or load either a replay or save game. Main Course of Action: 1.) The system will choose the player’s default directory for saving/loading based on their current profile. Alternate Course(s) of Action: Exceptional Course(s) of Action: 1a.) The player deleted their profile mid-game. 106752703 21 3/7/2016 Ankh Software Requirements Specification Use Case Name: Player chooses filenames Requirement(s) Explored: #4 Player (Actor) Context (Role): Player Preconditions: The player wants to save or load a file (save game, replay, etc…) Trigger(s): The player performs an action which requires them to choose a filename before continuing. Main Course of Action: 1.) The system will bring up a FileDialog GUI object to allow the player to browse through directories and type in a file name. 2.) The player clicks on the OK button to accept their choice. Alternate Course(s) of Action: 2a.) The player double clicks on an existing file to confirm their choice 2b.) The player clicks cancel or hits escape to cancel the action of selecting a file. Exceptional Course(s) of Action: 2a.) The player tries to save to a location where they are not allowed. 106752703 22 3/7/2016 Ankh Software Requirements Specification Use Case Name: Players observes automatic save Requirement(s) Explored: #5,#6 Player (Actor) Context (Role): System Preconditions: The player is playing the game and currently in a battle. Trigger(s): An action is performed during a battle. Main Course of Action: 1.) The system adds the action to the gamestate’s stack along with a timestamp. Alternate Course(s) of Action: None Exceptional Course(s) of Action: 1a.) The system runs out of memory for the stack. 106752703 23 3/7/2016 Ankh Software Requirements Specification Use Case Name: Player sees save Requirement(s) Explored: #5,#6 Player (Actor) Context (Role): System Preconditions: The player is playing the game and currently in a battle. Trigger(s): A timer which fires every 20 seconds or so. Main Course of Action: 1.) The game state is dumped to a file in the player’s profile directory. Alternate Course(s) of Action: 1a.) Autosave is disabled. Exceptional Course(s) of Action: 1a.) The system runs out of disk space 1b.) The user does not have permission to write to their profile directory. 1c.) The user erased their profile directory while the game was running. 106752703 24 3/7/2016 Ankh Software Requirements Specification Use Case Name: Player replays after battle Requirement(s) Explored: #7 Player (Actor) Context (Role): Player Preconditions: The player has finished a complete battle. Trigger(s): The player has completed the victory condition and ended the battle. Main Course of Action: 1.) A “Save Replay” button is drawn on the end-battle dialog screen Alternate Course(s) of Action: 1a.) The player clicks on the save replay button 1a1.) The player is presented with a save file dialog 1a2.) The player chooses to save the file 1a3.) The player chooses to cancel and is brought back to the end-battle dialog. 2a.) The player does not click the save replay button. Exceptional Course(s) of Action: 1a2.) The system runs out of disk space 1b2.) The user does not have permission to write to their profile directory. 106752703 25 3/7/2016 Ankh Software Requirements Specification Use Case Name: Player selects replay Requirement(s) Explored: #8 Player (Actor) Context (Role): Player Preconditions: Main menu is visible Trigger(s): Player starts the game or chooses to go to the menu Main Course of Action: 1.) Player sees a main menu and one of the options is to load a replay. Alternate Course(s) of Action: Exceptional Course(s) of Action: 1a.) Graphics for menu are missing 106752703 26 3/7/2016 Ankh Software Requirements Specification Use Case Name: Player saves profile Requirement(s) Explored: #10 Player (Actor) Context (Role): Player Preconditions: Game has started Trigger(s): User starts the game and there are no preexisting directories inside the “Profiles” directory. Main Course of Action: 1.) The user is told that a profile is required to play 2.) The profile creation dialog is displayed 3.) The user enters their name, and clicks OK. 4.) The main menu is displayed. Alternate Course(s) of Action: 3a.) The user clicks cancel and the game exits Exceptional Course(s) of Action: 3b.) The user has been modifying the profile directory while the game is running and creates the same directory as the name they enter. 106752703 27 3/7/2016 Ankh Software Requirements Specification Use Case Name: Player uses playback Requirement(s) Explored: #11 Player (Actor) Context (Role): Player Preconditions: Replay must exist. Trigger(s): Player loads a replay. Main Course of Action: 1.) System loads list of actions from disk. 2.) System plays actions back. 3.) Player adjusts a slider to personal preference. 4.) System adjusts system clock according to slider setting. Alternate Course(s) of Action: 2a). Player exits replay. 3a). Player exits replay. 4a). Player exits replay. Exceptional Course(s) of Action: 1a). Replay on disk is corrupted and system can not parse it. 1b). Replay is an older unsupported version. 106752703 28 3/7/2016 Ankh Software Requirements Specification Use Case Name: Player uses Resume playback Requirement(s) Explored: #12 Player (Actor) Context (Role): Player Preconditions: Replay exists and is playing. Trigger(s): Player hits Pause/Resume button. Main Course of Action: 1.) System stops the replay. 2.) Player hits resume button. 3.) System resumes playing replay. Alternate Course(s) of Action: 2b). Player hits quit button. Exceptional Course(s) of Action: 106752703 29 3/7/2016 Ankh Software Requirements Specification Use Case Name: Player obverses full screen Requirement(s) Explored: #14 Player (Actor) Context (Role): Player Preconditions: Game is installed Trigger(s): Player starts the game Main Course of Action: 1.) Game loads 2.) Splash screen is displayed 3.) Game sets resolution is such a way to cause the game to take the entire screen regardless of the resolution the game is running in. Alternate Course(s) of Action: Exceptional Course(s) of Action: 1a). Game files do not exist or are corrupted. 1b). Computer does not have a 3d accelerator. 106752703 30 3/7/2016 Ankh Software Requirements Specification Use Case Name: Player loads replay Requirement(s) Explored: #15 Player (Actor) Context (Role): Player Preconditions: Game is running Trigger(s): Player presses Alt-Tab Main Course of Action: 1.) System gives priority to the next newest process running in the backround. 2.) Player presses alt-tab (cycling to Ankh) or clicks on the Ankh box in the task bar. 3.) System reloads textures back into memory and the game resumes. Alternate Course(s) of Action: 2a). Player ends the program from outside the program. Exceptional Course(s) of Action: 2a). User deletes textures while the game is running in the background. 2b). Game crashes when priority is passed back. 106752703 31 3/7/2016 Ankh Software Requirements Specification Use Case Name: Player observes alpha effects Requirement(s) Explored: #17 Player (Actor) Context (Role): Player Preconditions: Main menu is visible Trigger(s): Main Course of Action: Alternate Course(s) of Action: Exceptional Course(s) of Action: 106752703 32 3/7/2016 Ankh Software Requirements Specification Use Case Name: Player uses mouse Requirement(s) Explored: #16 Player (Actor) Context (Role): Player Preconditions: Game has entered fullscreen mode Trigger(s): Mouse pointer becomes visible Main Course of Action: 1.) Player sees a custom mouse pointer that is different from the standard windows pointer. Alternate Course(s) of Action: Exceptional Course(s) of Action: 1a.) Graphics for pointer are missing 106752703 33 3/7/2016 Ankh Software Requirements Specification Use Case Name: Player interacts with GUI Requirement(s) Explored: #18 Player (Actor) Context (Role): Player Preconditions: Game has started Trigger(s): Player views a dialog or GUI object Main Course of Action: 1.) The player views a dialog with several different buttons, sliders, text boxes or menus. Alternate Course(s) of Action: Exceptional Course(s) of Action: 1a.) Graphics for GUI objects are missing 106752703 34 3/7/2016 Ankh Software Requirements Specification Use Case Name: Player selects menu items Requirement(s) Explored: #36 Player (Actor) Context (Role): Player Preconditions: Game has started Trigger(s): Player looks at the main menu Main Course of Action: 1.) The player brings up the main menu and sees a few different options New Game Continue Change Profile Exit Editor Alternate Course(s) of Action: Exceptional Course(s) of Action: 1a.) Graphics for main menu are missing 106752703 35 3/7/2016 Ankh Software Requirements Specification Use Case Name: Player observes load Requirement(s) Explored: #46 Player (Actor) Context (Role): Player Preconditions: Game has been installed Trigger(s): Player double clicks game icon or starts game executable Main Course of Action: 1.) The game splash screen comes up and the progress bar starts out at 0% 2.) As the game loads, the progress bar moves up 3.) The game enters fullscreen mode within 20 seconds Alternate Course(s) of Action: 3a.) The game does not load in 20 seconds Exceptional Course(s) of Action: 3b.) The game crashes upon starting up because some critical files are missing 106752703 36 3/7/2016 Ankh Software Requirements Specification Use Case Name: Player moves to new level Requirement(s) Explored: #27 Player (Actor) Context (Role): Player Preconditions: Game is installed Trigger(s): User finishes the 9th level. Main Course of Action: 1.) System loads 10th level. 2.) Player sees 10th level. Alternate Course(s) of Action: 1a). Player quits. Exceptional Course(s) of Action: 2a). User deletes 10th level files. 2b). System crashes. 106752703 37 3/7/2016 Ankh Software Requirements Specification Use Case Name: Player plays using mouse Requirement(s) Explored: #28 Player (Actor) Context (Role): Player Preconditions: Game is installed Trigger(s): Player wants to play game without keyboard. Main Course of Action: 1.) Player removes keyboard. 2.) Player starts game. 3.) Player beats game. Alternate Course(s) of Action: 2a). Player also removes mouse. 3a). Player is unable to beat game due to lack of skill. Exceptional Course(s) of Action: 2a). Players mouse breaks. 106752703 38 3/7/2016 Ankh Software Requirements Specification Use Case Name: Player plays music Requirement(s) Explored: #29 Player (Actor) Context (Role): Player Preconditions: Game is installed and is running, System has a supported sound card Trigger(s): Player starts game or enables background music. Main Course of Action: 1. Player selects a directory full of MP3 files to play during the game 2. Player hears music in the background during gameplay Alternate Course(s) of Action: 1a.) Player has music disabled 2a.) Player has their system muted Exceptional Course(s) of Action: 2a.) A bad MP3 file causes the game to crash 106752703 39 3/7/2016 Ankh Software Requirements Specification Use Case Name: Player replaces music Requirement(s) Explored: #30 Player (Actor) Context (Role): Player Preconditions: none Trigger(s): Player installs game Main Course of Action: 1.) During installation, default music files will be copied to the players system 2.) The player starts the game 3.) The player changes their options and picks another directory to play music from. Alternate Course(s) of Action: 1a.) The player chooses to not install music during installation 3a.) The player does not change their music directory. Exceptional Course(s) of Action: 1a.) The players system does not have enough disk space for the music files. 106752703 40 3/7/2016 Ankh Software Requirements Specification Use Case Name: Player listens to music Requirement(s) Explored: # 31 Player (Actor) Context (Role): System Preconditions: Game is installed, user has chosen a custom music directory Trigger(s): Player erases music files and then starts the game Main Course of Action: 1.) System detects that the music files are missing 2.) System changes music directory back to the default one. Alternate Course(s) of Action: 2a.) Default music files are not installed 2a1.) System disables background music Exceptional Course(s) of Action: 106752703 41 3/7/2016 Ankh Software Requirements Specification Use Case Name: Player hears sound Requirement(s) Explored: #32 Player (Actor) Context (Role): Player Preconditions: Game is running, DirectX is installed Trigger(s): Sound is played Main Course of Action: 1.) The system uses DirectSound to load a sound effect from a .wav file 2.) The system uses DirectSound to play the sound effect 3.) The player hears the sound Alternate Course(s) of Action: 3a.) Player has sounds disabled 3b.) Player has their system muted Exceptional Course(s) of Action: 1a.) DirectX is not installed 1b.) Players sound card is not supported by DirectX 106752703 42 3/7/2016 Ankh Software Requirements Specification Use Case Name: Player hears different channels Requirement(s) Explored: #33 Player (Actor) Context (Role): Player Preconditions: Game is installed Trigger(s): A sound file is played while another one is being played. Main Course of Action: 1.) The system mixes the sound with up too 16 channels. 2.) The player hears both sounds. Alternate Course(s) of Action: 2a.) The player has his sound disabled 2b.) The player has his system muted. Exceptional Course(s) of Action: 106752703 43 3/7/2016 Ankh Software Requirements Specification Use Case Name: Player disables sounds Requirement(s) Explored: #65 Player (Actor) Context (Role): player Preconditions: game is installed Trigger(s): Player disables sound from the options menu Main Course of Action: 1.) System tries to play sound. 2.) Sound is disabled. 3.) System does not play sound. Alternate Course(s) of Action: 3a.) Player has sound muted and does not know if the game played the sound or not Exceptional Course(s) of Action: 106752703 44 3/7/2016 Ankh Software Requirements Specification Use Case Name: Player observes special effects Requirement(s) Explored: #34 Player (Actor) Context (Role): Player Preconditions: Game is installed and running. Trigger(s): Player casts blind spell. Main Course of Action: 1.) System loads a particle emitter. 2.) Emitter emits glorious particles. 3.) Player is awestruck by particles. Alternate Course(s) of Action: Exceptional Course(s) of Action: 1a.) Particle emitter file is missing. 106752703 45 3/7/2016 Ankh Software Requirements Specification Use Case Name: Player observes mesh Requirement(s) Explored: #35 Player (Actor) Context (Role): System Preconditions: Game is installed and running. Trigger(s): System needs to load a 3d object Main Course of Action: 1.) System loads an object in the .md2 format. 2.) System can read file. 3.) System displays file. Alternate Course(s) of Action: Exceptional Course(s) of Action: 2a.) System cannot read file, because it is the wrong type. 3a.) Video card is broken. 106752703 46 3/7/2016 Ankh Software Requirements Specification Use Case Name: Player manipulates units Requirement(s) Explored: #36 Player (Actor) Context (Role): Player Preconditions: Game is installed and running. Trigger(s): Player enters the pre-battle screen. Main Course of Action: 1.) Player selects up to 6 units for the battle. 2.) Player tries to select more than 6, but is unable too. Alternate Course(s) of Action: 2a.) Player does not try to select more than 6 units. Exceptional Course(s) of Action: 106752703 47 3/7/2016 Ankh Software Requirements Specification Use Case Name: Player watches game play itself Requirement(s) Explored: #37 Player (Actor) Context (Role): Player Preconditions: Game has started Trigger(s): Player waits at main menu for a few minutes until demo mode begins Main Course of Action: 1. A battle starts with two AI teams pitted against each other 2. The AI controls both teams’ units until the end of the battle 3. The player is brought back to the main menu Alternate Course(s) of Action: 2a. Player presses a key or clicks the mouse to end demo mode Exceptional Course(s) of Action: none 106752703 48 3/7/2016 Ankh Software Requirements Specification Use Case Name: Player selects options Requirement(s) Explored: #38 Player (Actor) Context (Role): Player Preconditions: Game has started Trigger(s): Player views the main menu Main Course of Action: 1. The player sees a main menu with options to start a new game, continue the last game, change their profile, change options, exit the game, start the editor, or load a saved game. Alternate Course(s) of Action: 1a. The user refuses to acknowledge the existence of the main menu Exceptional Course(s) of Action: 1a. The main menu graphics are missing and the game does not load 106752703 49 3/7/2016 Ankh Software Requirements Specification Use Case Name: Player selects sound Requirement(s) Explored: #39 Player (Actor) Context (Role): Player Preconditions: Game is running Trigger(s): Player selections ‘Options’ from the main menu Main Course of Action: 1. Player sees a dialog box and can change Resolution, sound, volume, and game speed to his personal preference. Alternate Course(s) of Action: Exceptional Course(s) of Action: 1a. Graphics for the GUI are missing and the dialog box does not load. 106752703 50 3/7/2016 Ankh Software Requirements Specification Use Case Name: Player select armor Requirement(s) Explored: #40 Player (Actor) Context (Role): Player Preconditions: Game has started Trigger(s): Player visits a shop in game. Main Course of Action: 1. Player’s character enters a shop 2. A dialog is brought up with items, armor, and weapons for sale 3. Player selects an item to buy 4. The item is placed in the players inventory Alternate Course(s) of Action: 1a. Player decides to not enter the shop 3a. Player exits the shop Exceptional Course(s) of Action: 2a. GUI Graphics are missing 106752703 51 3/7/2016 Ankh Software Requirements Specification Use Case Name: Player uses CD Requirement(s) Explored: #58 Player (Actor) Context (Role): Player Preconditions: Software is completed Trigger(s): User is thinking about installing and running software Main Course of Action: 1. Player’s system meets requirements 2. Player plays game Alternate Course(s) of Action: 1a. Players system does not meet requirements 1a1. Player is unable to play game. Exceptional Course(s) of Action: 106752703 52 3/7/2016 Ankh Software Requirements Specification Use Case Name: Player selects install options Requirement(s) Explored: #59 Player (Actor) Context (Role): Player Preconditions: User is installing the game Trigger(s): User chooses to install the game Main Course of Action: 1. Player views a dialog which has options for which components of the game they would like to install 2. Player unchecks any components they do not want included in the installation Alternate Course(s) of Action: Exceptional Course(s) of Action: 106752703 53 3/7/2016 Ankh Software Requirements Specification Use Case Name: Player uses game on a Requirement(s) Explored: #61 Player (Actor) Context (Role): Developer Preconditions: Developer is writing code Trigger(s): Code is written Main Course of Action: 1. The code compiles with Visual Studio.NET 2. The code runs under Win32 Alternate Course(s) of Action: 1a. The code does not compile Exceptional Course(s) of Action: 2a. The game runs under linux somehow 106752703 54 3/7/2016 Ankh Software Requirements Specification Use Case Name: Player observes terrain Requirement(s) Explored: #41 Player (Actor) Context (Role): player Preconditions: Game is installed and running Trigger(s): Player moves a unit over very loose sand. Main Course of Action: 1.) The system alters the speed of the unit due to the loose sand. 2.) The unit does not move as far as it would have over packed sand. Alternate Course(s) of Action: 1a.) Player does not move over loose sand, instead going around it. Exceptional Course(s) of Action: 106752703 55 3/7/2016 Ankh Software Requirements Specification Use Case Name: Requirement(s) Explored: Player (Actor) Context (Role): Preconditions: Trigger(s): Main Course of Action: Alternate Course(s) of Action: Exceptional Course(s) of Action: 106752703 56 3/7/2016 Ankh Software Requirements Specification Appendix B Task-Object-Remarks Table The Tasks-Objects-Remarks table provides a preliminary listing of objects that the requirement anticipate. Refer to the Ankh Requirements Specification list of functional requirements for the requirements. Refer to the Ankh Software Design Specification and the CRC for a specific exploration of classes developed for Ankh. <Req_ > Task Saving Game Objects GameState Req_ 1 Replay Action Req_ 2 Restore Game State Game Clock GameState Associate Profile with saved game Player Clock Req_ 64 Req_ 3 106752703 57 Remarks 1. Initial Game State 2. Save changes 1. Uses GameState 2. Plays Slower 3. Returns to Main Menu 1. Track Character interactions 2. Track interaction with Maps 3. Receive action, Update 1. GS->Load(Populate GS) 2. Apply instant changes Start, Stop, Reset, GetTime, Vary Speed 1. Get the saved Directory 2. Generate Directory 3/7/2016 Ankh Software Requirements Specification Req_ 4 Req_ 5 Req_ 6 Req_ 7 Req_ 8 Req_ 9 Req_ 10 Req_ 11 Req_ 12 Req_ 13 Allow choosing of file names Dialogue SaveDialogue FileMgmt OpenDialogue AutoSave feature that saves game constantly Flush to disk periodically <every 20 secs> Save Replay after battle GameState Clock Main menu option for load and replay Save replays to default directory where profile specifies Creation of profiles Variable replay speed Pause/resume with relay 3D objects as DirectX meshes Full screen mode GameState Clock Dialogue SaveDialogue GameState Clock End-of-BattleWindow Replay 1. Bring up a list of files 2. Delete Game 3. List Games 4. Browse Directory 5. Confirm Overwrite 6. Overwrite Game 7. Enter new game Keep track of game state for every clock tick AutoSave State Set Call Back() Stop Call Back() Uses Replay Accessed from GUI Player, Replay, File Manager Button Dialogs, File Mgment, Player Replay, Button Replay, Button, Clock Mesh, Graphics Graphics Req_ 14 Handle Alt-tab Graphics Req_ 15 Req_ 16 106752703 Custom mouse pointer Mouse Sprite Graphics 58 3/7/2016 Ankh Software Requirements Specification Alpha channel Sprite Req_ 17 Req_ 18 Req_ 19 Req_ 20 Req_ 21 Req_ 22 Req_ 23 Req_ 24 Req_ 25 Req_ 26 General GUI features minimum attributes Character skills appropriate for social class a Social Class unique Customization based on tools Logging/debuggi ng Single Player and AI AI uses units to play AI mode can be set for aggression mode, or behavior Support 5 levels Panel, Menu, Button, Slides, Textbox, Picture, Label Entity, Entity, Item Skill Dialog Entity Entity Character Editor Log Totally separate program File Mgmt AI AI World Req_ 27 Req_ 28 Req_ 29 106752703 Play using mouse only MP3 playing, music selection Mouse Music, Sound 59 3/7/2016 Ankh Software Requirements Specification Req_ 30 Req_ 31 Req_ 32 Req_ 33 Req_ 34 Req_ 35 Req_ 36 Default and music that can be replaced operate correctly in the absence of music support DirectSound and a variety of sound(wav, mp3) support 16 channels and allow the user to disable particle Particle, generator Emitter dot X mesh format player to control at least 6 units AI vs AI Mouse Music Sound Sound Graphics Grapics, Mesh Actor AI Req_ 37 106752703 60 3/7/2016 Ankh Software Requirements Specification Req_ 38 Req_ 39 Req_ 40 Req_ 41 Req_ 42 main menu New Game Continue Change Profile Options Exit Editor Change Resolution Sound Volume Game Speed characters to Inventory acquire various armor, weapons and inventory different kinds of terrain that will affect the performance navigate and find a sensible path Map editor GUI, Sound,Graphics, Music Actor World World, Actor Separate editor Req_ 43 Req_ 44 Req_ 45 Req_ 46 Req_ 47 106752703 navigate and find a sensible path movement based on armor, speed, terrain and so on menu loads in 20 Progress Bar seconds player to select units with the mouse and use different button to perform actions 61 Separate editor Actor, Inventory, World Mouse 3/7/2016 Ankh Software Requirements Specification Req_ 48 a fixed camera angle of ¾. inventory Camera Actor, Inventory Req_ 49 INNO Inno Setup Req_ 50 Req_ 51 Req_ 52 shall fit on a single disk shall support a tool tip User’s Guide World, Mouse Req_ 53 Req_ 54 Req_ 55 Req_ 56 Req_ 57 Req_ 58 Req_ 59 Req_ 60 Units that die in a specified period do not come back Unit restoration with magic Experience through combat Profile goes to main menu Actor, Clock, Player Actor, Skill GUI Hardware requirements and software requirements for system Selection of tools during installation Documentation for edit tools Win 32 Intaller Req_ 61 Req_ 62 Req_ 63 106752703 shall include a batch file for compiling the program source code documentation 62 3/7/2016 Ankh Software Requirements Specification 106752703 63 3/7/2016