Project Name: Trimuxs II Document Author: Daniel Silverman (desilver) 1) Project Description: A 2-d shooter type game in the style of gradius and/or r-type. There will be differect ships, with various weapon configurations and appearences. Levels will consist of hideous numbers of enemies of various types that shoot at the player(s). Players will have a shield that will absorb a number of shots, after which a single shot will kill the player. Powerups will be available to replenish the shield and give weapons. Each level will end with a boss. Sound effects and music will play during the level, and there will be opening and ending sequences. Must play on the machines in the sunlab. 2) System Model Diagram: ------------------------------ | | v | Game ---------------- ------> UserInputs | | v v LevelParser ----> Engine ----> Sound | ^ | v | | GameObjects <-------- ------> Graphics 3) Game: The overall executable that creates the engine and starts it up. Also contains the config screen where options can be selected by the users. UserInputs: Send info to the Game telling it what to do before the game is loaded. Also sends the button presses to the Engine during gameplay. LevelParser: Creates GameObjects and sends them the appropriate info, and sends the objects to the engine before each level is played. GameObjects: Are moved and manipulated by the Engine, and send data about what has happened to them in the meantime to the Engine. Sound: Output to the sound card. Graphics: Output to the graphics card. Engine: Tells the LevelParser to load a level, tells the GameObjects to update, tells the sound to play or stop, tells the graphics to paint given objects, and receive information from everything except the Game and outputs. 4,5) User Interface Diagrams and Descriptions Game Start Screen: Where players choose # of players, options, and can exit ---------------------- | | | TRIMUXS II | | | | >1 Player Start | | 2 Player Start | | Exit | | Options | ---------------------- The > represents the currently selected option. 1 Player: Starts a game with one player 2 Player: Starts a game with two players Exit: Quits the game (can be changed or removed) Options: Goes to Options screen Options Screen: Place to select options for use in game ---------------------- | Trimuxs II Options | | | | Difficulty | | Lives <9> | | Continues <200> | | | | | ---------------------- Currently selected option would be flashing or a different color. Changes would be done by moving left or right. Difficulty: Switches between various difficulties. Lives: Number of lives per continue Continues: Number of continues, probably not going up to 200 Game Screen: The actual game ---------------------- |Player1:3 Player2:2 | | | | => . . . +[] | | + [] | | => ------------- | | | | + + []| ---------------------- Top: Player name(s) and current life totals. Probably would also include continue totals if included and point totals if included. Key: =>: Player ships, obviously distinguished by color and/or appearence. .: Player shots ----: Player laser []: Enemy +: Enemy shots 6) Non-functional requirements: Performance: Must run smoothly (at least 40 fps). Testing: Individual parts must be testable and tested seperately. Reliability: Must not crash (leave program fully). Must not screw around with essential game files so that the game becomes unopenable. Ease of Use: Keys must react in an intuitive way. Portability: Ideally would be playable on a windows PC, must play on any linux machine in the sunlab with minimum trouble to install. Documentation: Must have a complete README that describes adequately how to use the game. Dependencies on Other Systems: Will rely on some graphics library and some sound library and some inputs library (probably SDL for all three). 7) Updated Requirements: Priorities 1-10 (10 highest) Game: 10-Must allow player to choose options and player # and to exit 10-Must create engine and start it running after a game is started 7-Must have an opening sequence before the game starts UserInputs: 10-Must be able to move left, right, up, down, and diagonal 10-Must be able to fire 10-Must have keyboard capability with possibly 6 keys pressed at a time 7-Must have both keyboard and joypad input capability LevelParser: 10-Must, when given a file name, parse the level send all the data necessary to the engine GameObjects: 10-Must update whenever told to by the engine 10-Must shoot if necessary 10-Must disappear when necessary 10-Must paint correctly 10-Must not die if struck a friendly object 10-Must pick up powerups if applicable Sound: 10-Must play sounds when players or enemies die 10-Must play music throughout the game 8-Must play different music for each level Graphics: 10-Must paint all objects 10-Must have a background 10-Must update smoothly 7-Must have flashy explosions 3-Must have animated opening/closing/between level cutscenes Engine: 10-Must tell objects to update 10-Must tell sound to play and stop 10-Must tell graphics to paint all objects 10-Must load levels 9-Must be able to pause 6-Must load levels before the previous level is over to reduce wait time Enemies: 10-At least 3 different types per level 10-Must move in different patterns 10-Must shoot at player, or in a specific direction 10-Must die when shot once 9-Enemies have varying health 8-Enemies have larger weaponry Miscellaneous: 10-Continues, where if a player loses all lives, he loses all points and starts where he is with the full number of lives 10-A boss at the end of each level 10-Some sort of shield (frontal or aura) 10-At least two or three levels 10-Level creation, probably in XML 9-Difficulty settings, which control how fast and how much enemies shoot 9-At least 2 unique ships6 9-At least one laser type weapon, dealing some damage on the full line 8-Points, kept track for both players, giving extra lives at certain totals 8-A unique weapon for each ship 8-Missiles, that seek enemies and fire slowly 7-Some sort of wingman, "option", that hovers around the ship and fires or blocks shots. 7-Some sort of easy to use level creator that allows people who don't have the time to experiment with XML to create levels. 6-A level comprised of only 3-5 bosses, one after another 6-Eight to nine levels 2-Portable to Windows 8) Risks: 1.When integrating, an engine of some sort *must* exist, prototyped or stripped down. 2.Requires the use of an external library, though the SDL is purportedly very reliable. 3.Requires at least one artist to do 2-d modeling. 4.Requires at least one person to do the sound and music. 5.Level creation must be fairly easy, or else one or two people will have to write all of the levels. 6.If not easy to install on a machine (libraries linked easily and such), will be unusable. Still, very small target audience unless ported to Windows.