Kouriku Snow Requirements Elicitation Document 1. Introduction This document is to demonstrate the process by which I determined all the various aspects of the game Kouriku Snow. Technically, anyone else should be able to follow through the documentation in order to determine the entire process for developping this particular project. The documentation does NOT include UML diagrams of any sort, but will have a description of all potential interactions within the game. The proposed game is designed in order to replace the current GemSlider and to step further into graphics development for the creator of the game. The game is the only thing documented in such careful detail. The mini-games, level-editor, and any other features will be documented separately and only in object detail. 1.2 Scope of the System Kouriku Snow is intended to be a single-player puzzle game with no dependency on anything other than a basic stand-alone computer running Windows 9x, 2000, XP. The game will feature: -A game with four controls given to the player. -Living tiles will feature four different profiles when moving in all four different directions. -Joystick and Mouse Support. -Music and Sound. -24-bit 2D graphics. -Saved games for returning later. -Built in mini-games (with their own separate documentation) and a level-editor. -Tiles will be 40x40 pixels in size and therefore be displayed on a 15x15 level grid at maximum. Game will feature scrolling for larger level sizes. The game will not feature: -Real time motions of any objects or enemies on the screen. -Any 3D graphics whatsoever. -Music and Sound more complex beyond simple midi/wav formats. -Any resolution support higher or lower than 800 x 600. -Any interactions with other stand-alone software. 1.3 Objectives and Success Criteria of the Project The game will meet it's primary objectives if: -It is fully functional within the hardware constraints. -It is robust enough to pull apart and customize any part of the project on it's own. The system will meet it's secondary objectives if: -The level-editor is intuitive for users. 1.4 References Other source code projects on the Spectral Magic website. DJGPP Allegro Library Homepage. 2. Current System The current system features high-end ASCII and keyboard support. There are only a handful of tiles available and the game is fairly static. The rest of the current system's documentation is available here. 3. Proposed System 3.1 Introduction This system will feature several enhancements to graphics, sound, peripheral support, and level design. There is planned support for a level-editor and a few built-in games (each with their own documentation). 3.2 Functional Requirements Following is a list of every single tile available during gameplay. Their interactions are documented in the Use Cases. A few things to keep in mind when reading this: A tile capable of motion means that it has the ability to MOVE around on the screen. Just because it is capable, does not mean that it WILL. The feature of motion for each instance of the tile can be set by the level design. Any tile capable of motion will move in the same direction as Pid chooses, until it has to stop due to an interaction with another tile. A tile capable of colour means that it can be shut off and on by the appropriate colour switch and anti-colour switch respectively. This document will refer to them as Red and Yellow Switches. A Red Switch can activate all objects with a Red colour and de-activate all those of a Yellow colour. The vice-versa goes for the Yellow Switch. Pid - This is the main character. He is a penguin. He is the only one that may collect Crystals. He is one of two tiles that is allowed to use an Open Exit. He is incapable of colour. He is capable of motion. There may be only one per level. Fury - This is an enemy. He is made of fire. Touch him with Pid and die. Many can be within a level. He is incapable of colour. He is capable of motion. Golem - This helps out Pid by taking traps and blocking enemies. He is made of ice. Many can be within a level. He is incapable of colour. He is capable of motion. Crystal - This is a crystal. All must be collected for a Closed Exit to become an Open Exit. It looks like a diamond. It is capable of colour. It is capable of motion. There is a maximum of 3 per level and a minimum of 0. Trap - This is a trap. It looks like a crevice. There may be many within a level. It will take out any living creature. It is capable of colour. It is capable of motion. Closed Exit - This is a closed exit. The exit will become an Open Exit when there are zero Crystals remaining in the level. Both exits are capable of colour. Both exits are capable of motion. Open Exit - This is an open exit. Touching this with Pid will finish the level. The level will result in failure if there are still Allies remaining in the level. Touching this with an Ally will remove the Ally from the level. Ally - This is an ally. It looks like a penguin. It is like Pid, but may not collect crystals. It is capable of motion. It is incapable of colour. Flame - Another enemy. It appears as a red doughnut. It will move in the opposite direction as Pid chooses. Otherwise it is like a Fury. It is incapable of colour. It is capable of motion. Arrow - This arrow on the ground will change the direction of any tile that happens to touch it. It is capable of motion. It is capable of colour. Rotator - This arrow on the ground will change the direction of any moving tile that happens to touch it. Once touched, the arrow will rotate clockwise and face another direction. Wall - This wall blocks the motion of any tile that touches it, as long as the wall extends in that direction. It is incapable of motion. It is capable of colour. It is incapable of motion. Yellow Switch - Will make the current active colour Yellow. It is incapable of motion. It is incapable of colour. Red Switch - Will make the current active colour Red. It is incapable of motion. It is incapable of colour. Note that it will only activate if a living creature touches it. Dirt - This tile will stop something from moving, without using a wall. It is incapable of motion. It is capable of colour. 4-Way Block - It is capable of colour. It is incapable of motion. This block may only be moved if pushed by Pid or a Golem. 2-Way Block - It is capable of colour. It is incapable of motion. This block may only be moved if pushed by Pid or a Golem in an appropriate direction (either a vertical or horizontal direction). Death Block - It is capable of colour. It is capable of motion. This block will destroy any living being it touches. Hole - It will destroy any moving tile that touches it. It is incapable of motion. It is incapable of colour. 3.3 Nonfunctional Requirements 3.3.1 User Interface and Human Requirements The system should feature a menu-driven selection in order to choose between options. The basic menu structure will look like this: NEW GAME -ENTER NAME MENU CONTINUE -SELECT NAME FROM LIST Once a savefile has been created or chosen, it moves to this menu: WORLDMAP -World Map is displayed. BONUSES -List of features available are displayed. Locked features are displayed, but gray. OPTIONS -Brings to an option menu featuring Music, Sound, Controls. QUIT -Exits the program. It should be simple enough for children to understand. 3.3.2 Documentation The RED is this particular document. It describes the outline of how exactly the game works in conceptual terms. The RAD is an extension of this document. It will describe all game activities as class interactions. The SDD is a document that will outline the basic architecture and design problems faced with the gameplay implementation. The ODD is the Source Code documentation and contracts before actual implementation. This will be written using OCL standard. The designer (Michael Vendittelli) will create and maintain all documentation pertaining to this project. All documentation and source code will be made available to the general public. UML diagrams will not be included in these documents. A helpfile manual will be provided to the casual users for this game in HTML format. 3.3.3 Hardware Considerations This game must run on a Pentium 350MHz with 96MB of RAM. It must work across all Windows platforms. The game requires a windows-compatible soundcard and a monitor capable of 800x600 resolution at 24-bit colour. 3.3.4 Performance Characteristics The game should always run at least 60 frames per second, assuming less than 100 moveable objects on the screen at once. The game should never flicker, stall, or destroy any savefiles. 3.3.5 Error Handling and Extreme Conditions Users will be restricted in their input by a handler within the program. They will not be allowed to enter any incorrect inputs (with the exception of windows-specific keyboard calls, such as CTRL-ALT-DEL). The game should never corrupt any of it's own datafiles. 3.3.6 System Modifications Any modifications will be announced and maintained within the Versions section. If there are significant changes, it may call for another sequel with separate documentation. 3.3.7 Security Issues The game will make no attempt to verify users when accessing savefiles. There are no security precautions taken at all. 3.4 Psuedo Requirements Using Allegro graphics library. C Programming Language. Windows platform with the gcc compiler. 3.5 System Models 3.5.1 System Context There is only one player allowed to play the game at any given time (with exception to the mini-games). 3.5.2 Use Case Model Pid - This is the main character. He is a penguin. He is the only one that may collect Crystals. He is one of two tiles that is allowed to use an Open Exit. He is incapable of colour. He is capable of motion. There may be only one per level. OBJECT COLOUR MOTION Pid X Fury X Golem X Crystal X X Trap X X Closed Exit X X Open Exit X X Ally X Flame X Red Hot X Arrow X X Wall X Yellow Switch Red Switch Dirt X 4-Way Block X 2-Way Block X Death Block X X Hole Instead of using a diagram or a Use Case description, it would do better to simply describe the interactions between various tiles. When Tile1 runs into Tile2, what is the outcome? This will now be documented. Only Moveable objects can "touch" another tile (whether that tile is moveable or not). One rule to be aware of is this: Tile1: One Colour Tile2: AnotherColour Interaction: None. Only one could be active. There are no interactions for inactive objects. Also, if an inactive object is set to moveable, it will NOT move while inactive. It will move while active. Tile1: Fury, Golem, Crystal, Flame, Red Hot Tile2: Fury, Golem, Crystal, Flame, Red Hot Interaction: There is no interaction. They stay beside eachother and do not go ontop of one another at all. Tile1: Pid, Fury, Golem, Ally, Flame, Red Hot, Block(any type) Tile2: Trap Interaction: Both tile1 and tile2 cancel out. Level ends in failure if Pid or Ally dies. Tile1: Moveable object. Tile2: Wall Interaction: If wall blocks direction currently traveled by Tile1, stop Tile1 ontop of Tile2. Tile1: Pid, Ally Tile2: Golem Interaction: There is no interaction. They stay beside eachother and do not go ontop of one another at all. Tile1: Anything Moveable Tile2: Arrow Interaction: Tile1 is on top of the arrow. Tile1 changes and moves in the direction of the arrow. The arrow changes direction. Tile1: Pid, Ally Tile2: Fury, Flame, Red Hot Interaction: Pid dies and the level ends in failure. Both cancel eachother out. Tile1: Pid, Fury, Flame, Golem, Red Hot, Ally Tile2: Death Block Interaction: Tile1 dies and the level ends in failure if Pid or Ally. Tile2 remains afterwards. NOTE: This interaction only works if Tile2 *touches* Tile1. It is not reversible. Tile1: Anything. Tile2: Hole Interaction: Tile1 is gone (and possibly dies, ending the level in failure if Ally, Pid, Crystal, or Exit). Hole remains. Tile1: Pid, Ally Tile2: Golem Interaction: None, they simply move together. Reverse: Same Tile1: Pid Tile2: Crystal Interaction: Crystal disappears and Pid scores one. Reverse: Same Tile1: Pid, Ally Tile2: Closed Exit Interaction: Pid is on top of the exit, but does not finish the level. Reverse: Same Tile1: Pid, Ally Tile2: Open Exit Interaction: Pid is on top of the exit and finishes the level. If there are Allies left behind, it ends in failure. Reverse: Same Tile1: Pid, Golem Tile2: Block Interaction: Tile1 moves Tile2 if pressed from an appropriate direction. Tile1 and Tile2 move together in that direction. Tile1: Block (any type) Tile2: Pid, Golem, Ally, Crystal, Red Hot, Flame, Wall Interaction: The block will stop moving and subsequently stop anything following it. If the block is a Death Block, it will NOT stop moving, but instead kill whatever it runs into (except Crystals and Walls). Tile1: Block (any type) Tile2: Block (any type) Interaction: Tile2 moves with Tile1. Tile1: Pid, Fury, Golem, Ally, Flame, Red Hot Tile2: Dirt Interaction: Tile1 stops on top of Tile 2. Tile1: Pid, Fury, Golem, Ally, Flame, Red Hot Tile2: Switch Interaction: The switch colour becomes active and the other becomes inactive. Any object not mentioned in Tile1 will simply rest on top of the switch. I believe I have mentioned all the important interactions. Please mention any to me that I have failed to mention. 3.6 User Interface 4. Glossary Active - The object is currently being displayed because it's colour is currently turned on by a switch. Inactive - The object is invisible and does not move or interact with the level. See Active. Pid - The main character of the game. Crystal - Must collect these to open an exit. Exit - Once open, go here to finish the level. All Allies need to be rescued first! Ally - Just like Pid, but can't pick up Crystals. Get him to the exit before you! Golem - Will protect Pid from harm and move blocks around as well. Fury - These enemies move with Pid to kill him. Flames - These enemies move side to side either horizontally or vertically. Red Hot - Will move in the opposite direction as Pid. Hole - Will suck down anything that touches it. Switch - This switch will change the active and inactive colour based on it's own colour. Dirt - Anything moving and living will stick to this dirt. Wall - Moveable objects stop when they hit a wall. Trap - A trap will suck down any living thing or block and become cancelled. Arrow - Anything moving will change direction when touching this arrow. The arrow will also rotate to a new direction. 4-Way/2-Way Block - Pid and Golems can move these blocks around just by touching them in the right place. Death Block - If you touch a death block, you're okay....but if the death block touches you...! Moveable - Means the object is capable of motion when the player presses a direction. Kouriku - The name of the Gods that give Pid his power. Kouriku Snow - The name of this game. RED - Requirements Elicitation Document. RAD - Requirementes Analysis Document. SDD - System Design Document. ODD - Object Design Document. gcc - The compiler used to create the executable of the game. Allegro - The graphics library used to manipulate datafiles, show graphics, and play sounds. Paint Shop Pro 7 - The program used to create the graphics. Session 2 Plus - The program used to create music. Any music or sound outsourced will be referenced.