Introducing the New CS:GO Directory, It’s So Meta
by: Ben Swartz and Josh Tabak
As some of you have already noticed, we’ve been experimenting with new ways to discover Counter-Strike: Global Offensive broadcasters. We’ve wanted to try using game metadata — organized information that describes what’s happening inside of a broadcast — to augment the standard Twitch experience for some time. With the cooperation and help of Valve, we’re excited to bring you the first version of an advanced directory, one which we hope will make it easier to find interesting content.
Walkthrough
When we embarked on this project, one of the challenges was deciding which game details viewers found the most important. We had a number of options, but were aware that more data is not always better. Too many search and filter options on a page bloats the interface, detracting from important information. We evaluated our options by looking for data which would help viewers find content, yet wouldn’t create contradictory incentives for broadcasters. For example, we considered using Kill:Death ratio, but decided against it because it might have encouraged broadcasters to game the statistic by playing against weaker opponents.
In the end, we chose the Map and Skill metrics. Map is useful for players interested in learning specific map strategies (or for the casual fan who simply prefers to watch Dust II games). Skill, on the other hand, helps surface newer but highly skilled CS:GO broadcasters who have just begun to build their Twitch audience.
To have your metadata included when broadcasting CS:GO, connect your Steam account to your Twitch account in your Connections settings:
Technical Details
Heading into working on the CS:GO project, our existing metadata system (called Jax) only cached information already stored elsewhere, such as game being played, video format, and concurrent viewers. Our site infrastructure team recently extended Jax to allow the insertion of arbitrary metadata, which lasts for the duration of a broadcast. We were excited to take the new functionality of Jax to the next level by integrating metadata directly from the live CS:GO games of our broadcasters.
Last July, we added the ability for you to connect your Steam and Twitch accounts. Originally, this feature gave Dota fans eligibility for in-game item drops when watching certain Dota 2 tournaments on Twitch. This was later expanded to CS:GO tournaments; as a result, we already have a number of CS:GO broadcasters with Steam connected accounts. Thanks to a Steam API, these broadcasters can now share share information about what is happening in their CS:GO games to their Twitch stream.
Harnessing the new technologies, we created a program which constructs a list of Twitch users who are streaming CS:GO and are Steam connected. We then match users on the list with their information from Steam’s API about their game, namely Map and Skill. Finally, our program inserts the information into Jax.
Twitch’s architecture is API-driven. Each of our platforms — iOS, Android, Xbox — use the same core APIs to fetch data necessary to drive our experiences. While it’s tempting to treat the website differently, our website consumes the same APIs that our other platforms do. The majority of the frontend of our website is written in a JavaScript framework called Ember, which knows which APIs to call to get the data needed to render a given page. We extended our APIs to expose the CS:GO metadata from Jax. Our awesome designers created a beautiful directory page to take advantage of the new data and render the page as you see it today.
Testing
To measure success and validate our assumptions about new features, we run A/B tests, which are controlled experiments that split a population into two groups. One group, the control group, interacts with the current version of the feature. The other group, the treatment group, interacts with the new version of the feature. If behaviors in the two groups diverge, it is possible to make causal inferences about the new feature.
We understand it can be frustrating to not get immediate access to new features. However, A/B testing helps us ensure the changes we make have a positive effect on the Twitch experience. The test we ran gave a percentage of users access to the new directory page, while showing the old directory to everyone else. We then tracked key metrics between the two groups of users to measure the effect of the changes. Our Science team has created a fantastic testing framework that makes it easy for us to make and analyze such studies.
Our test for this new directory was successful, so today, we are rolling it out to all users. We hope this is only the first of many integrations in which metadata makes the Twitch experience better.
Let us know what you think of the new directory in the comments. If you’re interested in working on features like this, we’re hiring!