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 |