Introduction

Starting back in 2017, I started recording my time spent gaming each day and which game. This will be a brief breakdown of time spent gaming using R and packages dplyr, ggplot2, and directlabels. Using dplyr for data manipulation, ggplot2 and directlabels for plotting.

Game Time

We have already loaded the data, so lets start taking a look.

dat.sum <- dat %>% group_by(Game) %>% summarise(tot.time.minutes=sum(Time..minutes.)) %>% arrange(desc(tot.time.minutes))

ggplot(dat.sum, aes(Game, tot.time.minutes)) + geom_col() + theme(axis.text.x = element_text(angle = 90, hjust = 1, vjust=0.5)) + ylab("2018 Total Time (minutes)") + xlab("")

knitr::kable(dat.sum, align="c")
Game tot.time.minutes
League of Legends 5756
Call of Duty: Black Ops 4 3835
PlayerUnknown’s Battlegrounds 3494
Quake Champions 1070
Rise of the Tomb Raider 986
Nier: Automata 774
Wolfenstein II: The New Colossus 722
Hellblade: Senua’s Sacrifice 388
Call of Duty: Black Ops 4 beta 235
Cuphead 142
Keep Talking and Nobdy Explodes 140
A Hat In Time 117
Overcooked 2 115
Yooka Laylee 110
Dragon Ball FighterZ 97
Team Fortress 2 64
Super Mario Party 62
Lovers in a Dangerous Spacetime 59
Super Smash Bros. Ultimate 43
Hearthstone 39
Destiny 2 34
TableTop Simulator 11

Games like League of Legends, Call of Duty: Black Ops 4, and PlayerUnknown’s Battlegrounds stand out as games played the most. This is entirely due to the multiplayer aspect. Other games, like Team Fortress 2 and Hearthstone I played a lot in 2017 and earlier but have since stopped playing. The Switch games, I only recently started playing at end of the year, so very low. The same is for TableTop Simulator.

Removing the low played, say less than 3 hours, we will plot up the cumulative time played through the year.

dat.filt <- dat[dat$Game %in% dat.sum$Game[dat.sum$tot.time.minutes >= 180],]
# Get cumulative sum
dat.cumsum <- dat.filt %>% group_by(Game) %>% mutate(cv=cumsum(Time..minutes.))

ggplot(dat.cumsum, aes(x=Date, y=cv, colour=factor(Game))) + 
  geom_line(size=1) +
  geom_point() +
  geom_dl(aes(label=Game), method=list(dl.trans(x=x-0.5,y=y+0.2), "last.points", cex=0.8)) + 
  scale_colour_discrete(guide='none') +
  ggtitle("2018 Cumulative Gaming Time") +
  ylab("Cumulative Game Time (Minutes)")

From this, even though League of Legends has my highest play time from 2018, I stopped playing around October and Call of Duty: Black Ops 4 takes over.

Looking back at total time played, lets take a look at my monthly gaming time.

# Total game time per month
monthly.sum <- dat %>% mutate(month=format(Date, "%m")) %>% group_by(month) %>% summarise(total.minutes=sum(Time..minutes.))
ggplot(monthly.sum, aes(month,total.minutes)) + 
  geom_col() + 
  ggtitle("Month vs Gaming Time (minutes)") + 
  xlab("Month") + 
  ylab("Total Gaming Time (minutes)")

Winter months here are cold, mostly relating to the time played being higher. I also know that July, August, and September I had spent almost all my free time cycling, running, or just being outside while it was nice. The month of June is larger as I had my wisdom teeth out during this time and could not get out as much during the healing.

Lets take a look at the monthly time based on game:

monthly.game <- dat %>% 
  mutate(month=format(Date, "%m")) %>% 
  group_by(month, Game) %>% 
  summarise(total.minutes=sum(Time..minutes.)) %>% 
  arrange(month, desc(total.minutes), Game)
knitr::kable(monthly.game, align="c")
month Game total.minutes
01 League of Legends 1233
01 PlayerUnknown’s Battlegrounds 776
01 Wolfenstein II: The New Colossus 722
01 Cuphead 142
01 Hearthstone 22
02 PlayerUnknown’s Battlegrounds 1394
02 League of Legends 1014
02 Dragon Ball FighterZ 97
02 Hearthstone 17
03 Rise of the Tomb Raider 986
03 League of Legends 958
03 PlayerUnknown’s Battlegrounds 408
03 Team Fortress 2 48
04 PlayerUnknown’s Battlegrounds 723
04 League of Legends 695
04 Keep Talking and Nobdy Explodes 140
04 Lovers in a Dangerous Spacetime 59
04 Team Fortress 2 16
05 League of Legends 370
05 Hellblade: Senua’s Sacrifice 274
05 PlayerUnknown’s Battlegrounds 179
05 Quake Champions 129
06 Nier: Automata 774
06 League of Legends 684
06 Hellblade: Senua’s Sacrifice 114
06 Yooka Laylee 110
06 PlayerUnknown’s Battlegrounds 14
07 League of Legends 316
07 Quake Champions 110
07 A Hat In Time 76
08 Quake Champions 422
08 League of Legends 102
09 Quake Champions 382
09 Call of Duty: Black Ops 4 beta 235
09 League of Legends 190
09 A Hat In Time 41
10 Call of Duty: Black Ops 4 1235
10 League of Legends 194
10 Quake Champions 27
11 Call of Duty: Black Ops 4 1316
11 Destiny 2 34
11 TableTop Simulator 11
12 Call of Duty: Black Ops 4 1284
12 Overcooked 2 115
12 Super Mario Party 62
12 Super Smash Bros. Ultimate 43

One last thing, looking at the day of the total playtime for each day of the week:

daily.sum <- dat %>% 
  group_by(weekdays(Date)) %>% 
  summarise(tot.time.minutes=sum(Time..minutes.))
daily.sum$`weekdays(Date)` <- factor(daily.sum$`weekdays(Date)`, ordered=T, levels=c("Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"))
daily.sum <- daily.sum[order(daily.sum$`weekdays(Date)`),]
names(daily.sum) <- c("Weekday", "Total.Time.Minutes")
knitr::kable(daily.sum, align="c")
Weekday Total.Time.Minutes
Monday 1982
Tuesday 1533
Wednesday 1548
Thursday 995
Friday 4277
Saturday 5164
Sunday 2794