library(tidyverse)
library(here)
library(gridExtra)
library(grid)
library(dplyr)
theme_set(theme_bw())

Configuração Inicial

# SEMPRE read_csv NUNCA read.csv
jogos = read_csv(
    here("data/jogos.csv"),
    col_types = cols(
      .default = col_integer(),
      title = col_character(),
      esrb_rating = col_character()
   )
)

jogos$esrb_rating_num <- plyr::mapvalues(jogos$esrb_rating, 
          from=c("E", "ET", "T", "M"), 
          to=c(1, 2, 3, 4))

jogos$esrb_rating_num <- as.numeric(jogos$esrb_rating_num)
glimpse(jogos)
## Rows: 1,895
## Columns: 35
## $ title                    <chr> "Monster Jam Steel Titans 2", "Subnautica: Be…
## $ console                  <int> 1, 1, 1, 0, 0, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, …
## $ alcohol_reference        <int> 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, …
## $ animated_blood           <int> 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, …
## $ blood                    <int> 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, …
## $ blood_and_gore           <int> 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, …
## $ cartoon_violence         <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, …
## $ crude_humor              <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, …
## $ drug_reference           <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, …
## $ fantasy_violence         <int> 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, …
## $ intense_violence         <int> 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, …
## $ language                 <int> 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, …
## $ lyrics                   <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, …
## $ mature_humor             <int> 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, …
## $ mild_blood               <int> 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, …
## $ mild_cartoon_violence    <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, …
## $ mild_fantasy_violence    <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, …
## $ mild_language            <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, …
## $ mild_lyrics              <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, …
## $ mild_suggestive_themes   <int> 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, …
## $ mild_violence            <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, …
## $ no_descriptors           <int> 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, …
## $ nudity                   <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, …
## $ partial_nudity           <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, …
## $ sexual_content           <int> 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, …
## $ sexual_themes            <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, …
## $ simulated_gambling       <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, …
## $ strong_janguage          <int> 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, …
## $ strong_sexual_content    <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, …
## $ suggestive_themes        <int> 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, …
## $ use_of_alcohol           <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, …
## $ use_of_drugs_and_alcohol <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, …
## $ violence                 <int> 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, …
## $ esrb_rating              <chr> "E", "ET", "M", "ET", "T", "E", "T", "T", "ET…
## $ esrb_rating_num          <dbl> 1, 2, 4, 2, 3, 1, 3, 3, 2, 3, 1, 4, 2, 4, 4, …

Dados utilizados

Foram obtidos dados de 819 jogos que serão utilizados na nossa análise. Os dados foram utilizados anteriormente na disciplina de Ciência de dados preditiva, onde tentamos prever a faixa etária de novos jogos.

Alguns dados extraídos que iremos referenciar durante a análise são:

Faixa etária dos Jogos

A ESRB (Entertainment Software Rating Board) é uma organização independente do governo, que possui o sistema de classificação utilizado pelos games vendidos nos EUA, Canadá e América Latina. As classificações do ESRB estão divididas em:

Com base nisso, e observando o cenário de jogos e suas classificação, vamos tentar analisar certas caracteristicas que podem influenciar essas faixas que podem influeciar a suas vendas em lojas e até paises.

Uso de drogas recreativas nos jogos

Assim como em todo o planeta, em nosso país, a maconha, o tabaco e as bebidas alcoólicas são as drogas recreativas mais usadas e são utilizadas como fonte de divertimento entre pessoas de todas idades. Ainda que sejam consumidas também por adultos, a maioria dos usuários tem entre 18 e 25 anos de idade. Com base nisso, podemos fazer uma análise de como essas drogas afetam a faixa etária dos jogos? Como ponto de partida podemos verificar a relação da presença de álcool nos jogos através do gráfico:

pres_alcool = jogos %>%
  select(use_of_alcohol, alcohol_reference, esrb_rating) %>%
    pivot_longer(c(use_of_alcohol, alcohol_reference), names_to = "alcool", values_to = "value") %>%
    filter(value == 1)
  
pres_alcool %>% 
    ggplot(aes(x = esrb_rating, fill = alcool)) +
    geom_bar(binwidth = .5, color = "black", position = "dodge") +
    scale_fill_manual(values = c("#53B0EC", "#A3FAF3")) +
    labs(y = "Quantidade de jogos", x = "Faixa Etária", title ="Álcool nos jogos", fill = "Presença de Álcool")
## Warning: Ignoring unknown parameters: binwidth

Ao analisar o gráfico, podemos observar que a referência ao álcool não interfere na faixa etária dos jogos, porém o uso de álcool pode influenciar na decisão nas faixa etárias iniciais, colocando um jogo com faixa E (todos os públicos) para a faixa ET (todos acima de 10 anos).

A partir disso, vamos adicionar ao gráfico a presença de outras drogas, para que assim possamos ver a interferência dela na aplicação da faixa etária:

pres_drogas = jogos %>%
    mutate(drugs_and_alcohol_reference = (alcohol_reference | drug_reference)) %>%
      select(use_of_drugs_and_alcohol, drugs_and_alcohol_reference, esrb_rating) %>%
        pivot_longer(c(use_of_drugs_and_alcohol, drugs_and_alcohol_reference), names_to = "drogas", values_to = "value") %>%
        filter(value == 1)
  
pres_drogas %>% 
    ggplot(aes(x = esrb_rating, fill = drogas)) +
    geom_bar(binwidth = .5, color = "black", position = "dodge") +
    scale_fill_manual(values = c("#FA7907", "#FCC474")) +
    labs(y = "Quantidade de jogos", x = "Faixa Etária", title ="Drogas recreativas nos jogos", fill = "Drogas Recreativas")
## Warning: Ignoring unknown parameters: binwidth

Após analisar o grafico de álcool e o apresentado agora, percebemos algumas coisas, entre elas:

  • Existe a presença de um jogo com uso de alcool e drogas na faixa para todos os publicos;

  • A presença de jogos com referência a alcool e drogas aumenta na faixa M (Adultos).

    Verificando o jogo presente na faixa E(Todos os públicos) temos o Shovel Knight: Treasure Trove, que utiliza de álcool e drogas de forma lúdica como um item para dar uma melhoria ao seu personagem. Como ultimo ponto, temos que a referência a alcool e drogas tem um leve aumento na faixa etária M (adultos), mas ainda sim é uma porcentagem minima de jogos, sendo menos de 2% da amostra.

    Por fim, concluimos que o uso de drogas recreativas nos jogos não influência na faixa etária dos jogos, porém o uso de drogas e álcool de forma não ludica tende a elevar sua faixa quando analisado jogos para públicos mais jovens.

Violência cartunesca

Agora, vamos analisar se o desenho/animação/cartoon é um modo de atenuar a violência e diminuir a classificação indicativa dos jogos. Os dados que temos sobre violência lúdica são: - cartoon_violence - mild_cartoon_violence

Vamos criar uma nova métrica que é a soma das duas métricas acima. Essa nova métrica vai indicar qualquer tipo de violência cartunesca no jogo. Vamos ver como ela se comporta para cada faixa indicativa.

jogos %>%
  group_by(esrb_rating_num) %>%
  mutate(cartoon = sum(cartoon_violence) + sum(mild_cartoon_violence)) %>%
  mutate(esrb_rating = factor(esrb_rating, levels=c("E", "ET", "T", "M"))) %>%
  ggplot(aes(x=esrb_rating, y=cartoon)) +
  theme(legend.position="none") + 
  labs(x = "Faixa etária", y = "Número de jogos com violência cartunesca") +
  geom_line(aes(group=1, color=c("#FCC474")))

Como podemos ver, a quantidade de jogos com violência cartunesca está concentrada na faixa etária ET (acima de 10 anos), e diminui bruscamente na última faixa etária. Isso é um bom indício de jogos com violência cartum são raramente classificados como maduros. Se compararmos com o mesmo gráfico para violência não-cartunesca, mostrado abaixo, vemos que a violência realista move a distribuição para classificações etárias mais maduras.

jogos %>%
  group_by(esrb_rating_num) %>%
  mutate(violence = sum(violence) + sum(mild_violence)) %>%
  mutate(esrb_rating = factor(esrb_rating, levels=c("E", "ET", "T", "M"))) %>%
  ggplot(aes(x=esrb_rating, y=violence)) +
  theme(legend.position="none") + 
  labs(x = "Faixa etária", y = "Número de jogos com violência") +
  geom_line(aes(group=1, color=c("#FCC474")))

Presença de Sangue nos Jogos

Quando se fala em jogos e filmes, a presença de sangue é sempre algo a ser analisado pelos paises ao fazer sua classificação, paises como a china pedem a censura de sangue alterando sua cor para que tal jogo ou filme seja utilizado pela população. Como o objetivo da análise são o jogos, vamos falar apenas sobre eles. primeiramente queremos ver quantos jogos possuem sangue:

jogos %>%
  group_by(esrb_rating) %>%
  summarise(jogos_com_sangue=sum(blood), media=mean(blood))
## # A tibble: 4 x 3
##   esrb_rating jogos_com_sangue media
##   <chr>                  <int> <dbl>
## 1 E                          0 0    
## 2 ET                         0 0    
## 3 M                        165 0.426
## 4 T                        267 0.388
  #summarise(correlacao=cor(blood, esrb_rating_num, method="pearson"))

Analisando a média e os jogos com sangue podemos ver claramente que na amostra utilizada jogo que apresentam sangue não estão presentes na faixa etária E (todos os públicos) e na ET (publicos acima de 10 anos). Além disso, jogos com conteúdo adulto (M) possuem uma quantidade significativa de jogos com presença de sangue, ultrapassando os 40%. Adicionando outras variaveis mais simples, como a presença animações descoloridas ou não-realistas de sangue e até se o jogo possui alguma representação de sangue, podemos ainda analisar outras coisas:

pres_drogas = jogos %>%
    mutate(drugs_and_alcohol_reference = (blood | mild_blood | animated_blood)) %>%
      select(blood, mild_blood, animated_blood, esrb_rating) %>%
        pivot_longer(c(blood, mild_blood, animated_blood), names_to = "sangue", values_to = "value") %>%
        filter(value == 1)
  
pres_drogas %>% 
    ggplot(aes(x = esrb_rating, fill = sangue)) +
    geom_bar(binwidth = .5, color = "black", position = "dodge") +
    scale_fill_manual(values = c("#C74841", "#FF0C00", "#F36E67")) +
    labs(y = "Quantidade de jogos", x = "Faixa Etária", title ="Drogas recreativas nos jogos", fill = "Drogas Recreativas")
## Warning: Ignoring unknown parameters: binwidth

Observando o gráfico, vemos que a presença explicita de sangue influência a faixa etária, diferente de outros tipos de representações. onde podemos ver uma presença consideravel nas faixas adulta e adolescente. A partir disso, podemos analisar uma correlação entre as faixas e a presença de sangue no jogo e teremos:

jogos %>%
  summarise(correlacao=cor(blood, esrb_rating_num, method="spearman"))
## # A tibble: 1 x 1
##   correlacao
##        <dbl>
## 1      0.436

Com o calculo da correlação, podemos ver uma influência da presença do sangue na faixa etária dos jogos, onde obtemos uma correlação de 0,43. Com esses dados podemos concluir que a exposição de sangue no jogo pode coloca-lo em classificações mais altas o que pode interferir as vendas em lojas e em paises com classificações mais rigorosas.

Conclusão

Ao analisarmos essas 3 caracteristicas:

  • Presença de sangue nos jogos;
  • Presença de drogas recreativas nos jogos;
  • Presença de violência cartunesca em relação a violência realista no jogos;

Podemos observar que enquanto a presença de sangue influência a classificação a elevar as faixa para T (adolescente) e M (adultos), a presença de violência em cartoon influência a classificação para públicos mais jovens na faixa de E (todos os publicos) e ET (acima de 10 anos). Por fim, vemos que por mais que exista uma presença de drogas recreativas em sua maior parte nas faixas acima do E (todos os públicos), ele não aparenta ser um parâmetro crítico que pode influenciar a classificação do jogo.

José Amândio e Gabriel Tavares.