There seems to be quite a demand for it.

I initially wanted to increase viewer interaction on my Dungeons & Dragons stream by implementing a feature that I've seen on some of the larger TTRPG channels. I noticed a few providing viewers the ability to boon players with inspiration points or ability enhancements via bits or external donations.

After investigating how those channels were making this happen, I realized why I was only seeing it on the larger productions: it was a huge pain in the backend. Without a fair amount of programming knowledge and/or an off-camera live production team, having more than one bit or donation goal simply wasn't an option. Add to that the fact that most who were doing it were using third party donation systems as the entry point (and making the minimum donation sometimes as much as $25), and you've got an awesome functionality that's completely unavailable to small or average-sized channels.

In my search for a better way (or at least a head start), I found forum after forum of people begging the major streamer tool suites to incorporate multiple goal functionality. Some of these threads go back years to when these external donation widgets first started appearing, with solution being offered.

One donation goal, one bit goal, that's all you get. Weak sauce.

What it does

Not every viewer wants to support the same goal. Some even have competing goals! With Bit Goals, broadcasters can configure up to six overlays, each with up to three separate goal bars, and let viewers decide which one their bits go towards, all without leaving the channel!

Maintaining persistent values mean that even if the goal is set high and takes days, weeks, or even months to achieve, there's nothing for the broadcaster to update or input each time they load up their broadcasting software. Viewers can even add to buckets when you're offline!

Want goals to fill multiple times? Add the optional tally and expend those points in the dashboard.

Not sure which marathon stream to run next? Let your viewers decide.

Thinking of changing your game lineup? Make a group for each candidate and let your audience use bits to lock a game in, or ban it from the channel forever.

Playing a TTRPG? Give each character their own bars for inspiration, ability buffs, or special attacks.

The possibilities are endless!

How we built it

Initial UI prototype was built using Adobe XD, then rebuilt as html in Dreamweaver.

Backend and configuration services were built with React. Overlay updates occur via Lambda function, with persistent values being stored in DynamoDB.

Challenges we ran into

We wanted to allow the viewer to decide how many bits to add to the bucket but the bits in extensions feature only allows for transactions to call specific "products". We had to get creative to allow a more malleable interaction with the high number of endpoints we wanted to create in the broadcaster's overlay.

Accomplishments that we're proud of

The only existing way we've seen to do anything like this involves combining cheers or donations with custom backend chatbot scripting responding to specific commands given by the user when making that transaction. That means a high barrier of entry for streamers, numerous points of potential failure due to user error by either the broadcaster and the viewer, and at least one moderator or off-camera producer monitoring to catch those user errors. We have eliminated all of that and brought the entire interaction to the Twitch platform, making it accessible to any broadcaster capable of accepting bits.

We overcame the challenge of allowing the user to choose the number of bits involved in the transaction. Viewers may now add as few as 5 bits or as many as 100,000 bits to the bucket of their choice, regardless of how many buckets the broadcaster creates.

The application is very lightweight on the backend. Most of the activity occurs on the Twitch platform and neither the viewer, nor the broadcaster, ever has to leave the Twitch site to interact with, or update, the extension. Overlay URLs are provided to the broadcaster from within their dashboard for easy incorporation into OBS or similar broadcasting software.

What we learned

The Twitch Extensions development platform still has a fair amount of limitation. However, Twitch seems to be open to developers iterating within those limitations creatively to accomplish the goals of the extension, so there's a lot more we can do with this. Our intention, of course, is not to circumvent any intended limitations, but simply to work within them to increase functionality, as we did with the variable bit contribution mechanic.

What's next for Twitch Bit Goals

Immediate concern will be optimizing for mobile viewers, which we expect to make available very soon.

We will also be adding additional customization options to the overlays, as well as the panel. Initially, this will come in the form of allowing custom CSS for advanced users but later, we intend to implement options for more granular design configurations available to layman users.

Future expansions will include the ability to let viewers trigger customizable animations and effects on-screen, all using bits and without ever leaving the broadcaster's channel page! We also intend to incorporate an OBS plugin to simplify the broadcaster experience and allow for more features in a single widget source.

Share this project: