Use Cases
Release 1
Section titled “Release 1”UC1: Player Movement
Section titled “UC1: Player Movement”ID: UC1
Name: Player Movement
Description: Navigating around the world using the mouse and keyboard
Area: In-Game
Actors: Player
Preconditions:
- Player has loaded a world
Steps:
- Player presses
Wor⬆on the keyboard - System moves the camera forwards
- Player presses
Aor⬅on the keyboard - System moves the camera to the left
- Player presses
Sor⬇on the keyboard - System moves the camera backwards
- Player presses
Dor⮕on the keyboard - System moves the camera to the right
- Player presses
SPACEon the keyboard while on the ground - System moves the camera up
- Player moves the mouse
- System moves the camera angle
Post-conditions: n/a
UC2: Spectator Mode
Section titled “UC2: Spectator Mode”ID: UC2
Name: Spectator Mode
Description: Disabling player-block collisions and gravity, allowing the player to move freely in the world
Area: In-Game
Actors: Player
Preconditions:
- Player has loaded a world
Steps:
- Player presses
Gon the keyboard - System enables spectator mode
- Player moves around (→ UC1)
- System does not enforce player-block collisions and gravity
- Player presses
SPACEon the keyboard - System moves camera up
- Player presses
LEFT SHIFTon the keyboard - System moves camera down
- Player presses
Gon the keyboard again - System disables spectator mode
Post-conditions: n/a
UC3: Selecting a Block Type
Section titled “UC3: Selecting a Block Type”ID: UC3
Name: Selecting a Block Type
Description: Selecting a block type to place in the world (→ UC4)
Area: In-Game
Actors: Player
Preconditions:
- Player has loaded a world
Steps:
- Player presses one of
1,2,3,4,5,6,7,8,9on the keyboard - System selects the block type corresponding to the pressed key
1selects the block type “Grass”2selects the block type “Dirt”3selects the block type “Cobblestone”4selects the block type “Oak Log”5selects the block type “Spruce Log”6selects the block type “Birch Log”7selects the block type “Oak Leaves”8selects the block type “Spruce Leaves”9selects the block type “Birch Leaves”
Post-conditions:
- The block type corresponding to the pressed key is selected
UC4: Placing Blocks
Section titled “UC4: Placing Blocks”ID: UC4
Name: Placing Blocks
Description: Placing a block at the position the camera is pointing at
Area: In-Game
Actors: Player
Preconditions:
- Player has loaded a world
Steps:
- Player presses the right mouse button
- System places a block of the type selected by the player (→ UC3) or a default of “Grass” at the position the camera is
pointing at
- Exception Flow: The camera does not point at an existing block or the block is more than 5 blocks from the
camera away
- Do nothing
- Exception Flow: The camera does not point at an existing block or the block is more than 5 blocks from the
camera away
Post-conditions: n/a
UC5: Destroying Blocks
Section titled “UC5: Destroying Blocks”ID: UC5
Name: Destroying Blocks
Description: Destroying the block at the position the camera is pointing at
Area: In-Game
Actors: Player
Preconditions:
- Player has loaded a world
Steps:
- Player presses the left mouse button
- System destroys the block at the position the camera is pointing at
- Exception Flow: The camera does not point at an existing block or the block is more than 5 blocks from the
camera away
- Do nothing
- Exception Flow: The camera does not point at an existing block or the block is more than 5 blocks from the
camera away
Post-conditions: n/a
UC6v1: Starting the Game
Section titled “UC6v1: Starting the Game”ID: UC6 (v1)
Name: Starting the Game
Description: Creates a new world with procedurally generated blocks with a fixed size of 16 × 16 chunks (256 × 256
blocks)
Area: In-Game
Actors: Player
Preconditions: n/a
Steps:
- Player starts the game
- System generates a new world with a fixed size of 16 × 16 chunks (256 × 256 blocks)
- System shows the game
Post-conditions:
- Player has loaded a world
Release 2
Section titled “Release 2”UC6v2: Creating a New World
Section titled “UC6v2: Creating a New World”ID: UC6 (v2)
Name: Creating a New World
Description: Creates a new world with procedurally generated blocks with a fixed size of 16 × 16 chunks (256 × 256
blocks)
Area: Game UI
Actors: Player
Preconditions: n/a
Steps:
- Player starts the game
- System shows main menu
- Player presses “Singleplayer” button
- System shows singleplayer world selection menu
- Player presses “Create New World” button
- System shows world creation form
- Player enters a world name
- Player optionally enters a seed
- Player presses “Create World” button
- System generates a new world with a fixed size of 16 × 16 chunks (256 × 256 blocks)
- Exception Flow: Name input field is empty
- System shows an error message
- Continue with “Player enters a world name”
- Exception Flow: There exists already a world with the entered name
- System shows an error message
- Continue with “Player enters a world name”
- Exception Flow: Seed input field is empty
- A randomly generated number is used as the seed
- Continue with “System generates a new world…”
- Exception Flow: Name input field is empty
- System shows the game
Post-conditions:
- Player has at least one saved world
- Player has loaded a world
UC7: Loading a Saved World
Section titled “UC7: Loading a Saved World”ID: UC7
Name: Loading a Saved World
Description: Loads a world previously saved to disk
Area: Game UI
Actors: Player
Preconditions:
- Player has at least one saved world
Steps:
- Player starts the game
- System shows main menu
- Player presses “Singleplayer” button
- System shows singleplayer world selection menu
- Player selects a world from the list
- System highlights the selected world
- Player presses “Play Selected World” button
- System loads the selected world from disk
- System shows the game
Post-conditions:
- Player has loaded a world
UC8: Saving and Quitting the Loaded World
Section titled “UC8: Saving and Quitting the Loaded World”ID: UC8
Name: Saving and Quitting the Loaded World
Description: Saves the world that is currently played to disk and quits to the main menu
Area: Game UI
Actors: Player
Preconditions:
- Player has loaded a world
Steps:
- Player presses
ESCon the keyboard - System shows pause menu
- Player presses “Save and Quit to Menu”
- Systems saves world data to disk
- System shows main menu
Post-conditions: n/a
UC9: Exiting the Pause Menu
Section titled “UC9: Exiting the Pause Menu”ID: UC9
Name: Exiting the Pause Menu
Description: Going back from the pause menu to the game
Area: Game UI
Actors: Player
Preconditions:
- Player has loaded a world
- Player is in the pause menu
Steps:
- Player presses
ESCon the keyboard or presses the “Back to Game” button - System shows the game
Post-conditions: n/a
UC10: Quitting the Game
Section titled “UC10: Quitting the Game”ID: UC10
Name: Quitting the Game
Description: Quitting the game from the main menu
Area: Game UI
Actors: Player
Preconditions:
- Player is in the main menu
Steps:
- Player presses
ESCon the keyboard or presses the “Quit Game” button - System exits
Post-conditions: n/a
UC11: Aiming with the Crosshair
Section titled “UC11: Aiming with the Crosshair”ID: UC11
Name: Aiming with the Crosshair
Description: A crosshair is shown at the center of the screen to indicate where the player is aiming at
Area: In-game
Actors: Player
Preconditions:
- Player has loaded a world
Steps:
- System displays a crosshair at the center of the screen
- Player moves the camera to look around the world (→ UC1)
Post-conditions: n/a
NFR1: Performance
Section titled “NFR1: Performance”ID: NFR1
Goal: The system should run with high performance
Area: In-Game
Questions / Metrics:
- How fast is the rendering process?
- Average frames per second on the deployment server
- Minimum: 20 FPS
- Target: 60 FPS
- Max frame time (no frames slower than) on the deployment server
- Minimum: 60 ms
- Target: 20 ms
- Average frames per second on the deployment server
- How many invisible blocks are rendered?
- Percent of blocks rendered outside the FOV from all rendered blocks
- Minimum: 30 %
- Target: 15 %
- Percent of blocks rendered outside the FOV from all rendered blocks
- How much memory does the game allocate?
- Amount of allocated RAM after 15 minutes of playing
- Minimum: 1 GB
- Target: 600 MB
- Amount of allocated VRAM after 15 minutes of playing
- Minimum: 300 MB
- Target: 150 MB
- Amount of allocated RAM after 15 minutes of playing
- How responsive is the system?
- Input latency
- Minimum: 40 ms
- Target: 20 ms
- Input latency
NFR2: Graphics Quality
Section titled “NFR2: Graphics Quality”ID: NFR2
Goal: The graphics quality should be good
Area: In-Game
Questions / Metrics:
- How do players rate the visual quality of distant textures?
- Mean Opinion Score from 5 testers comparing mipmapped vs. non-mipmapped clips on a scale from 1 to 5
- Minimum: 3.5
- Target: 4.0
- A/B preference: Preference of testers preferring the version with mipmapping
- Minimum: 80 %
- Target: 90 %
- Mean Opinion Score from 5 testers comparing mipmapped vs. non-mipmapped clips on a scale from 1 to 5
Release 3
Section titled “Release 3”UC6v3: Creating a New World
Section titled “UC6v3: Creating a New World”ID: UC6 (v3)
Name: Creating a New World
Description: Creates a new world and generates an initial area of 16 × 16 chunks (256 × 256 blocks)
Area: Game UI
Actors: Player
Preconditions:
- Player is logged in
- Player is in the main menu
Steps:
- Player presses “Singleplayer” button
- System shows singleplayer world selection menu
- Player presses “Create New World” button
- System shows world creation form
- Player enters a world name and optionally a seed
- Player presses “Create World” button
- System creates a new world and generates an initial area of 16 × 16 chunks (256 × 256 blocks)
- Exception Flow: Name input field is empty
- System shows an error message
- Continue with “Player enters a world name”
- Exception Flow: There exists already a world with the entered name
- System shows an error message
- Continue with “Player enters a world name”
- Exception Flow: Seed input field is empty
- A randomly generated number is used as the seed
- Continue with “System generates a new world”
- Exception Flow: Name input field is empty
Post-conditions:
- Player has at least one saved world
- Player has loaded a world
UC11: Infinite Procedural Generation
Section titled “UC11: Infinite Procedural Generation”ID: UC11
Name: Infinite Procedural Generation
Description: While moving around the world, new chunks are generated
Area: In-Game
Actors: Player
Preconditions:
- Player has loaded a world
Steps:
- Player moves around in the world (→ UC1)
- System generates new chunks with the same seed used for the initial generation
Post-conditions: n/a
UC12: Coordinate Overlay
Section titled “UC12: Coordinate Overlay”ID: UC12
Name: Coordinate Overlay
Description: Show an overlay with the coordinates of the camera in the top left corner
Area: In-Game
Actors: Player
Preconditions:
- Player has loaded a world
Steps:
- System shows an overlay with the coordinates of the camera in the top left corner
- Player moves around in the world (→ UC1)
- System updates the overlay with the new coordinates of the camera
Post-conditions: n/a
UC13: Deleting a Saved World
Section titled “UC13: Deleting a Saved World”ID: UC13
Name: Deleting a Saved World
Description: Deletes a world previously saved to disk
Area: Game UI
Actors: Player
Preconditions:
- Player is in the main menu
- Player has at least one saved world
Steps:
- Player presses “Singleplayer” button
- System shows singleplayer world selection menu
- Player selects a world from the list
- System highlights the selected world
- Player presses “Delete Selected World” button
- System deletes the selected world from disk
- System shows the game
Post-conditions: n/a
Further Development
Section titled “Further Development”UC14: Signing up for a Player Account
Section titled “UC14: Signing up for a Player Account”ID: UC13
Name: Signing up for a Player Account
Description: Allowing the player to create an account with a unique player name
Area: Game UI
Actors: Player
Preconditions: n/a
Steps:
- Player starts the game
- System shows login screen
- Player presses “I don’t have an account” link
- System shows signup screen
- Player enters a player name
- Player enters a password
- Misuse Flow: Another person sees the entered password and memorizes it
- Capture Point: The password is hidden
- Capture Point: Data is transmitted over an encrypted channel
- Misuse Flow: Another person sees the entered password and memorizes it
- Player presses “Create Account” button
- System creates account
- Exception Flow: Name input field is empty or too long
- System shows an error message
- Continue with “Player enters a player name”
- Exception Flow: A player with the specified name already exists
- System show an error message
- Continue with “Player enters a player name”
- Exception Flow: Password input field is empty or too short
- System shows an error message
- Continue with “Player enters a password”
- Exception Flow: Name input field is empty or too long
- System shows main menu screen
Post-conditions:
- Player has an account
- Player is logged in
- Player is in the main menu
UC15: Logging in to a Player Account
Section titled “UC15: Logging in to a Player Account”ID: UC14
Name: Logging in to a Player Account
Description: Allowing the player to log in to their player account
Area: Game UI
Actors: Player
Preconditions:
- Player has an account
Steps:
- Player starts the game
- System shows login screen
- Player enters their player name
- Player enters their password
- Misuse Flow: Another person sees the entered password and memorizes it
- Capture Point: The password is hidden
- Capture Point: Data is transmitted over an encrypted channel
- Misuse Flow: Another person sees the entered password and memorizes it
- Player presses “Log in” button
- System authenticates the player
- Exception Flow: A player with the specified name does not exist or the password was not correct
- System shows an error message
- Continue with “Player enters their player name”
- Exception Flow: A player with the specified name does not exist or the password was not correct
- System shows main menu screen
Post-conditions:
- Player is logged in
- Player is in the main menu
UC16: Changing the Player Name
Section titled “UC16: Changing the Player Name”ID: UC15
Name: Changing the Player Name
Description: Changing the player name
Area: Game UI
Actors: Player
Preconditions:
- Player is logged in
- Player is in the main menu
Steps:
- Player presses “Account” button
- System shows account setting screen
- Player presses “Change Player Name” button
- System shows change player name screen
- Player enters a player name
- Player presses “Change Player Name” button
- System updates the name of the player
- Exception Flow: Name input field is empty or too long
- System shows an error message
- Continue with “Player enters a player name”
- Exception Flow: A player with the specified name already exists
- System show an error message
- Continue with “Player enters a player name”
- Exception Flow: Name input field is empty or too long
- System shows main menu screen
Post-conditions: n/a
UC17: Changing the Password
Section titled “UC17: Changing the Password”ID: UC17
Name: Changing the Password
Description: Changing the password
Area: Game UI
Actors: Player
Preconditions:
- Player is logged in
- Player is in the main menu
Steps:
- Player presses “Account” button
- System shows account setting screen
- Player presses “Change Password” button
- System shows change password screen
- Player enters their old password
- Player enters a new password
- Misuse Flow: Another person sees the entered password and memorizes it
- Capture Point: The password is hidden
- Capture Point: Data is transmitted over an encrypted channel
- Misuse Flow: Another person sees the entered password and memorizes it
- Player presses “Change Password” button
- System updates the password of the player
- Exception Flow: Password input field is empty or too short
- System shows an error message
- Continue with “Player enters a password”
- Exception Flow: The old password was not correct
- System shows an error message
- Continue with “Player enters their old password”
- Exception Flow: Password input field is empty or too short
- System shows main menu screen
Post-conditions: n/a
UC18: Deleting the Player Account
Section titled “UC18: Deleting the Player Account”ID: UC18
Name: Deleting the Player Account
Description: Deleting the player account
Area: Game UI
Actors: Player
Preconditions:
- Player is logged in
- Player is in the main menu
Steps:
- Player presses “Account” button
- System shows account setting screen
- Player presses “Delete this Account” button
- System shows delete account screen
- Player enters their old password
- Player presses “Yes”
- System deletes the account of the player
- Exception Flow: The old password was not correct
- System shows an error message
- Continue with “Player enters their old password”
- Exception Flow: The old password was not correct
- System shows login screen
Post-conditions:
- Player is not logged in
UC19: Enabling Multiplayer for a World
Section titled “UC19: Enabling Multiplayer for a World”ID: UC19
Name: Enabling Multiplayer for a World
Description: Opening the world for other players to join until the host player quits the world
or disables multiplayer
Area: Game UI
Actors: Player
Preconditions:
- Player has loaded a world
- Multiplayer is not enabled for the world
Steps:
- Player presses
ESCon the keyboard - System shows pause menu
- Player presses “Enable Multiplayer” button
- System shows multiplayer options screen with default configuration (random port, empty blocklist)
- (optional) Player enters a port
- (optional) Player manages access list (includes UC21)
- Player presses “Enable Multiplayer for this World” button
- System enables multiplayer for the world
- Exception Flow: Port input is not a valid port
- System shows an error message
- Continue with step “Player enters a port”
- Exception Flow: Port is already in use
- System shows an error message
- Continue with step “Player enters a port”
- Exception Flow: Port input is not a valid port
- System shows the game
Post-conditions:
- Multiplayer is enabled for the world
UC20: Changing Multiplayer Options
Section titled “UC20: Changing Multiplayer Options”ID: UC20
Name: Changing Multiplayer Options
Description: Changing options for a world with multiplayer enabled
Area: Game UI
Actors: Player
Preconditions:
- Player has loaded a world
- Multiplayer is enabled for the world
- Player is the host of the multiplayer world
Steps:
- Player presses
ESCon the keyboard - System shows pause menu
- Player presses “Multiplayer Options” button
- System shows multiplayer options screen
- (optional) Player manages access list (includes UC21)
- Player presses “Apply & Back to Game” button
- System applies changed options
- Exception Flow: A Player who was denied access has already joined the world
- System removes player from the world
- Continue with step “System shows the game”
- Exception Flow: A Player who was denied access has already joined the world
- System shows the game
Post-conditions: n/a
UC21: Managing Multiplayer Access List
Section titled “UC21: Managing Multiplayer Access List”ID: UC21
Name: Managing Multiplayer Access List
Description: Changing the multiplayer to allowlist / blocklist mode and
adding / removing players from the access list
Area: Game UI
Actors: Player
Preconditions:
- Player is in the multiplayer options screen
Steps:
- Player presses “Allowlist” or “Blocklist” button
- System changes the multiplayer access mode
- Player enters a player name to add to the list
- Player presses “Allow to join this world” / “Block from joining this world” button (depending on the selected access mode)
- System adds the player with the specified name to the list
- Exception Flow: The specified name is the name of the player hosting the multiplayer world
- System shows an error message
- Continue with step “Player enters a player name to add to the list”
- Exception Flow: A player with the specified name does not exist
- System shows an error message
- Continue with step “Player enters a player name to add to the list”
- Exception Flow: The specified name is the name of the player hosting the multiplayer world
- Player selects a name from the list
- System highlights the selected player
- Player presses “Remove from list” button
- System removes the player from the list
Post-conditions: n/a
UC22: Joining a Multiplayer World
Section titled “UC22: Joining a Multiplayer World”ID: UC22
Name: Joining a Multiplayer World
Description: Joining a multiplayer world opened by another player
Area: Game UI
Actors: Player
Preconditions:
- Player is in the main menu
Steps:
- Player presses “Multiplayer” button
- System shows multiplayer selection screen
- Player enters the address of the multiplayer world
- Player presses “Join Multiplayer” button
- System joins the multiplayer world
- Exception Flow: The address is invalid or there is no world hosted on the address
- System shows an error message
- Continue with “Player enters the address of the multiplayer world”
- Exception Flow: The player’s access was denied by the player hosting the multiplayer world
- System show an error message
- Continue with “Player enters the address of the multiplayer world”
- Exception Flow: The address is invalid or there is no world hosted on the address
- System shows the game
Post-conditions:
- Player has loaded a world