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 |