If you've never heard about Awesome Games Done Quick (AGDQ), it's a charity stream that broadcasts 24/7 on Twitch for a whole week in January every year. They showcase different speedruns where they try and finish various games as quickly as possible, while also raising money for charity.
It's a fantastic event that I always make sure to catch when it's on. But this years got me thinking about the innovation that they do in order to satisfy the hundreds of thousands of people watching, and raise as much money as possible, breaking new records in total amount raised, every single event. So I decided I wanted to dig down on a couple things that they did this year and dive into the tech stuff!
At first glance, this is not your typical twitch stream. The graphical layout has been engineered to perfection over the past 10 years, to make sure the viewer gets enough information and still have a beautiful design that puts focus on the right things.
These assets and underlying tech is made by a small team known as Support Class. Christopher Hanel and Jasmine Hruschak are the masterminds behind everything you see on the broadcast. The tech behind it is your standard web kit with a Node.JS backend that keeps track on current donation total, timer for the speedrun in action, donation incentives and more. This data is then fed into the broadcasting system like OBS or Xsplit.
Their code is available on Christophers github for their previous events, and also has showcases for their 2017 edition on youtube if you're interested in learning more about their design philosophy and underlying system you should check it out!
One of the games this year was The Legend of Zelda: A Link to the Past. A game from early 90's when no one had a broadband connection, and live broadcasting from your home computer was unimaginable. It's a classic game and it often makes an entry at every GDQ event.
To make the game more interesting, different modifications has been added to the game, partly to add complexity and also to add more fun. Previous years we've seen a mod called randomizer, where the player gets random items when they open chests in game. This requires more planning for the runner of the game and they need to act accordingly when items does not drop where they're hoped to.
New for this years speedrun, not only is there an item randomizer, they also have something called Crowd Control.
Crowd Control enables for all viewers to take part in the speedrun as it happens. Using Bits, a currency that Twitch use in exchange for real money, you can pay for effects to be added into the game in real time. Example of this is to change the character sprite, give the player lifes, weapons, items and also remove them. Both to either assist or hinder the players success in the run. And it turned crazy really fast! Making it one of the funniest runs of the event.
The maker of the software is a company called Warp World, their software is open for anyone to use at crowdcontrol.live. They take 20% of the income a streamer gets when using their system, they also have a premium service.
How they are able to manipulate the game in real time was really baffling to me.
On the tech side it's one part a twitch extension to make interaction with the viewer possible and one part desktop app. Taken from their website:
"The Crowd Control Desktop Application is the connection between the Twitch Extension and the game you’re playing (either through an emulator, or hardware)."
Their code is not open but it's still one of the coolest engineering tricks in the whole AGDQ this year, and really inspires me with the possibilities you can do to make an almost 30 year old game really come to life again.
Also the runner Andy and the couch of commentators really brought on a show. Make sure to catch the VoD when it comes available on GDQs Youtube Channel!
Lastly I have to bring up TASbot (Tool-Assisted Speedrun roBot) that's made an entry in every GDQ since 2014. TASbot is a computer that has a built-in custom circuit board that can exactly mimic the behavior of a video game controller. This lets you control a game using multiple inputs than designed in order to manipulate the game in fashions not doable by humans.
TASBot was showcased first time on AGDQ 2014 and the developers walks through how it works in detail while showing off what the Bot can do. Not only tied to running games at ridiculous levels, but also to manipulate the memory itself to do some cool stuff. I highly recommend a watch!
The TAS community is a subgenre of speedrun where people build their own TAS, either physically to manipulate game consoles such as TASBot, or just by scripting using an emulator that runs games on a local PC. There is a community driven software known as BizHawk that lets you use lua scripts in order to manipulate input, and also memory, towards a game. The code for Bizhawk is also available on github and is written in C#.
It's hard to find a better way to mix my two biggest interests, video games and programming, I'm always in awe with what they make possible using these tools every year, so this really makes me want to try it myself!
I always struggle to come up with ideas for projects, that I feel excited about, so that I can work on my programming skills. AGDQ this year really opened up my mind and made me curious on what's going on under the hood. I hope you find this as interesting and inspiring as I do!
And let me know if you also follow GDQ, what was your favourite run this year?