Functional Requirements

1. The system shall be able to display and manipulate orthogonal graphics.

  • The system shall be able to display graphics of a resolution independent of the actual hardware resolution.
  • The system shall allow the user to display and manipulate sprites on screen.
  • The system shall allow the user to display compound sprites formed from the interaction of more than one individual sprite.
  • The system shall allow the user to animate sprites.
  • The system shall allow the user to display background images.
  • The system shall allow the user to display background images formed from smaller tiled images.
  • The system shall allow the user to animate background images.

2. The system shall be able to display and manipulate text.

  • The system shall be able to load, save and display fonts created from bitmap images.

3. The system shall be able to play and manipulate audio.

  • The system shall allow the user to play background music.
  • The system shall allow the user to play static (not dependent on perceived sound location) sound effects.
  • The system shall allow the user to play dynamic (dependent on perceived sound location) sound effects.
  • The system shall have multiple channels so that multiple audio sources can play concurrently.

4. The system shall be able to accept input from the user.

  • The system shall be able to accept keyboard input from the user.
  • The system shall be able to accept mouse input from the user.
  • The system shall be able to accept joystick input from the user.
  • The system shall allow the user to specify whether or not to buffer received input.

5. The system shall be able to load and store information to and from files.

  • The system shall allow the user to load, store and manipulate image files.

    1. The system shall allow the user to load, store and manipulate PNG format files.

      2. The system shall allow the user to load, store and manipulate BMP format files.

      • The system shall allow the user to load, store and manipulate audio files.

      1. The system shall allow the user to load, store and manipulate WAV format files.

      2. The system shall allow the user to load, store and manipulate OGG format files.

        • The system shall allow the user to load, store and manipulate video files

        1. The system shall allow the user to load, store and manipulate Theora format files.

        2. The system shall allow the user to load, store and manipulate MKV format files.

          • The system shall provide file formats for storing information specifically related to the system.

          1. The system shall provide a file format for storing system save states.

          2. The system shall provide a file format for storing complete levels.

          3. The system shall provide a file format for storing system assets.

          4. The system shall provide a file format for storing system scripts.

              • The system shall be able to load, store and manipulate standard files.

              1. The system shall be able to load, store and manipulate text files.

              2. The system shall be able to load, store and manipulate binary files.

              3. The system shall be able to load, store and manipulate XML files.

              6. The system shall allow the user to specify how and when the system will interact with the user’s code.

              7. The system shall provide a consistent means for declaring, reporting and tracking errors within the system.