Motivation

As for the previous events broadcasted on Twitch.tv ( US DNC Convention 2016 , EVO Championship 2016 ), I looked at some Twitch.tv data during the launch of ROI, to have an idea of the game popularity.

Using Twitch.tv API, we can get some informations about the number of viewers (as the sum of the number of viewers pers treamer) for a given game, the number of people actually streaming the game, the rank of the game (= most popular) in the Twitch.tv directory. Per streamer, we can get the number of viewer, his name, his title/status.

Especially, I was interesting in:

What I was expecting :

Some important dates :

Results

My script ran from Monday,19th (afternoon) until Monday,26th (noon). For some critical days/hours (launch, Raid), the script was run every minute in order to capture the granularity of the data. Othersise it ran every 5 minutes. I also tracked the data of other games for comparison. I choose the games because they were at the top of the Twitch directory at that time :

Number of viewers vs time

## Using date as id variables
## Using date as id variables

Comments

For Destiny :

  • we clearly seek the 2 peaks representing the launch day as well as the Raid day
  • the mean number of viewers between these 2 dates is ~ 18k viewers
  • the rise/increase is faster for the launch day
  • during these 2 events and for a certain amount of time (details later), Destiny was on top of the Twitch directory, meaning it was the game the most viewed

Compared with the other games:

  • There is a strong seasonality in LOL (daily) but the trend remains constant during that week
  • Overwatch is roughly at the same numbr of viewers as Destiny

A closer look at these 2 particular days show indeed a fast increase in the number of viewers that stays few hours, then a slowly decreasing curve. The launch day is interesting because Destiny remained close to 50k viewers for a large amount a time. There is a sharp decrease around 5:30pm which is due to streamer KingGothalion stopping his broadcast

Comparison with streamers data

I also tracked the 100 top streamers from the Destiny channels and plotted the related curves for the 2 most popular : KingGothalion and ProfessorBroman. Plots are below.

For launch day, KingGothalion topped at ~33k viewers and as mentioned before, the sharp decrease in the number of viewers at 5:30pm is due to him stopping his broadcast. One thing interesting also is to see the shift of KG’s viewers to ProfessorBroman broadcast. This shift helped to maintain Destiny on top of the Twitch directory.

We also notice some structure for KG around 5 to 6:00am. I knew later that there was some issues and that you (Bungie) introduced a queue system because of the servers overload. This may explain why the number of viewers of KG decrease then re-increase ; people either stopped watching Twitch or either moved to another streamer.

The same conclusion can be done during the Raid day : KingGothalion drived a lot of the Destiny viewers.

Ranking vs time

To illustrate the ranking, an example of the Twitch webpage is below

In this example, Counter-Strike : GO is on top of the Twitch directory because of its higher number of viewers, hence having rank 1.

To calculate the rank, I just loop over the JSON file that gives the top games streamed ; the rank is the index of the game in that list. Below is a code snippet of the python script I used :

myUrl = 'https://api.twitch.tv/kraken/games/top?limit=30'
allChan = requests.get(myUrl,headers = headers)  
allList = allChan.json()
count=0
channels=['World%20of%20Warcraft','Destiny','Overwatch','League%20of%20Legends','Dota%202']
for chan in channels :
    tempoUrl= 'https://api.twitch.tv/kraken/streams/summary?game='+ str(chan)
    ++count
    timeFormat = '%Y-%m-%d %H:%M:%S'
    response = requests.get(tempoUrl,headers = headers)
    tempo = response.json()
    if(chan == 'Destiny'):
        destiny_viewers = tempo['viewers']
        destiny_channels = tempo['channels']
        #print allList['top'][i]['game']['name']
        for i in range(0,30):
            if(allList['top'][i]['game']['name'] == 'Destiny'):
                destiny_rank = i+1

The ranking plot for the full week as well as the plots for the launch and Raid days are below.

Summary plots

These plots show the mean and sum of the number of viewers during the week.

As for the plots of the number of viewers in real time, the summary plots show also that :

  • the mean number of viewers of the Destiny channel is around 20k/day
  • there was 2 large increases during the launch of ROI and the raid day

App.

Using the R-shiny package, I wrote an application to show these data. It is available on the R-shiny server