Requirements

Introduction

This document outlines the requirements for my Extra-Life Twitch plug-in and stretch-goal game project. Requirements are placed into functional and non-functional groupings.

Functional requirements are first presented in their epic format and have been prioritized by the client. Each epic then has a list of requirements to fulfill its deliverables. The combination of these epics and requirements will inform individual tasks that are broken out on a per-sprint basis.

For this initial requirement gathering activity, I met with the client and discussed the high-level features she would like to see in the extension and game. From these features, we created epics and prioritized them. Epics with a priority of 1 or 2 are considered must-have. The listed requirements are to be treated as deliverables required for successful completion of each epic. If a must-have epic cannot be completed, or the requirements for a given epic cannot all be met, a discussion will need to be had with the client about next steps.

The tracer code prototype mentioned in the development model document will implement the first iteration of priority 1 and 2 epics. Given this, there is a likelihood that this document will evolve significantly at the end of the prototyping phase.

Plug-in Functional Requirements

The following lists detail the requirements for the Twitch donation tracker plug-in.

Epics

This list represents the high-level feature backlog, prioritized by the client.

Epic Epic Priority
Stream countdown timer 1
Donation timer impacts 1
Donations config 1
Donation stats tracker 2
Donation announcements 2
Basic donation effects 4

Requirements

This list represents the requirements per epic, to be treated as the epic deliverables.

Requirement ID Requirement
1 Stream countdown timer
1.1 On-screen widget that is hide-able by viewers
1.2 Displays Hours, minutes, seconds left in stream
1.3 Updatable in real-time (see donation timer impacts)
1.4 Timer is pause-able by streamer
2 Donation timer impacts
2.1 Donations to twitch in the form of subscriptions, bits, follows increase   remaining time of stream
2.2 Donations to extra-life site increase remaining time of stream
2.3 Timer is updated within 1 minute of donation being processed
3 Donations config
3.1 Streamer can access configuration window outside of stream
3.2 Streamer can set stream time increases by donation type
– Dollars for extra-life donations
– Per Subscription
– Per bit
– Per follow
3.3 Donation configs are entered in minutes
3.4 Streamer can enter time remaining manually
4 Donation stats tracker
4.1 Displays as a dropdown within timer widget (hidden by default)
4.2 Viewers can press show/hide button within widget to hide stats while   still displaying timer
4.3 Displays the most recent donation, who donated, the amount (and type) of   donation, and time added
4.4 Displays the top 3 donations since streamer-defined date
5 Donation Announcements
5.1 Post chat message when donations occur (who, type, amount, time added)
5.2 Streamer can configure custom message to follow the above information in   chat
6 Basic donation effects
6.1 Display an on-screen video using ‘Pingu Mozart meme’
– Displays amount donated in ‘happy’ part of video
– Displays amount of time added in ‘terror’ part of video

Game Functional Requirements

The following lists detail the requirements for the Twitch-integrated stream game.

Epics

Epic Epic Priority
Foundation 3
Game Boot 4
Gameplay- Boss 4
Gameplay- Player Actions 3
Gameplay- Prompts 4
Game Exit 5

Requirements

This list represents the requirements per epic, to be treated as the epic deliverables.

Requirement   ID Requirement
1 Foundation
1.1 Twitch   full-screen plug-in or desktop app that can be shared in OBS (depending on   twitch constraints)
1.2 Integrated with donation tracker   plug-in so that the game is aware of incoming donations
1.3 Has a random (r) chance of triggering when x number of donations occur within y minutes
– r, x, and y need to be configurable by the streamer
1.4 Integrated with twitch chat to take viewer commands and to post messages
2 Game Boot
2.1 Chat message will fire, warning chat that something approaches
– default non-configurable message
2.2 Music   should play on game launch
2.3 Boss’ image should fade in to   screen over the course of ~5 seconds
2.4 An   event timer of 2 minutes will display and begin counting down once boss image   is fully on screen
2.5 Game ends when boss health   reaches zero, or timer fully counts down, or all players have died (see boss   requirements)
3 Gameplay – Boss
3.1 Boss will have a health bar that   appears overhead
3.2 Boss will move in and out of 3 phases throughout   fight
– Each phase is 20 seconds in length
– Strong phase
– Focused phase
– Attack phase
3.3 When in attack phase, all   players not defending by the end of this phase (see player actions) will die   and be removed from this fight
3.4 After   each boss attack, a chat message will display how many players died from the   attack
3.5 When in strong phase, takes 2x   damage from magic attacks (see player actions)
3.6 When   in focused phase, takes 2x damage from melee attacks (see player actions)
4 Gameplay – Player Actions
4.1 Players can take actions in chat that reduce the boss’   health
– attack melee
– attack magic
4.2 Players can take the defend   action in order to not die during boss attack
4.3 Donations (Extra-Life, bits, subscriptions, or follows)   will do additional damage
– this will be configurable by the streamer
5 Gameplay – Prompts
5.1 Text will display in the middle of the screen, notifying   players of the current boss phase
– “Defend yourself! It attacks!”
– “He is strong! Use magic attacks!”
– “He is focused! Use melee attacks!”
5.2 Text will display when time is   running out (<30 seconds remain)
5.3 Text   will display upon defeat or victory over the boss
6 Game Exit
6.1 In   either defeat or victory, music will stop playing
6.2 In either defeat or victory,   boss image will fade out of screen
6.3 In   the case of a defeat, a sound of the boss laughing will play
6.4 In the case of victory, a chat   message will note that time has been added to the stream (configurable by the   streamer)

General Non-Functional Requirements

Requirement ID Requirement
1 Technology
1.1 Must abide by allowed Twitch technologies
– HTML, CSS, JS for extension code
– Provided twitch API
1.2 Must abide by API limits put in place by Extra-Life and Twitch(ie. Num calls/minute)
1.3 Must abide by Twitch extension policies listed here https://dev.twitch.tv/docs/extensions/guidelines-and-policies/
2 Security
2.1 Must not expose any sensitive information of streamer within extensions (IP address, name, etc)
3 Timeline
3.1 Must be delivered no later than the beginning of October, but preferably by beginning of September