Visão Geral

GitHub: adsoncostanzifilho/CSGo

O pacote CSGo é um cliente R para acessar a API REST da Steam, especificamente para dados do jogo Counter-Strike Global Offensive (CS Go). Confira o site de documentação da Steam e a página do pacote para mais informações.

Instalação

Para obter a versão atual publicada no CRAN:

install.packages("CSGo")

Para obter a versão de desenvolvimento atual do GitHub:

# install.packages("devtools")
devtools::install_github("adsoncostanzifilho/CSGo")

Exemplo

O primeiro passo para usar o pacote CSGo é ter suas próprias credenciais (API key) para puxar os dados do CSGo da API da Steam. Para mais informações sobre como obter sua própria API Key, execute no seu R vignette("auth", package = "CSGo") ou clique aqui.

Agora que você já tem sua API Key, você deve conseguir coletar seus próprios dados do CSGo, bem como os dados dos seus amigos. Espero que meu amigo Rodrigo não se importe de brincarmos com os dados dele (ele é o ‘76561198263364899’)!

Primeiro, vamos coletar as estatísticas de CSGo dele:

library(CSGo)

# to get the statistics of the user 76561198263364899
rodrigo_stats <- get_stats_user(api_key = 'your_key', user_id = '76561198263364899')

Vamos filtrar o data frame obtido por “kills” e “weapon” para criar uma análise de kills por tipo de arma.

library(dplyr)
library(stringr)

rodrigo_weapon_kill <- rodrigo_stats %>%
  filter(
    str_detect(name, 'kill'),
    type == ' weapon info'
  ) %>%
  arrange(desc(value))

Agora vamos dar uma olhada no gráfico!

PS: Para deixar o gráfico ainda mais bonito, recomendo obter a fonte “Quantico” do Google fonts usando o pacote showtext!

library(ggplot2)
library(showtext)

## Loading Google fonts (https://fonts.google.com/)
font_add_google("Quantico", "quantico")

rodrigo_weapon_kill %>%
  top_n(n = 10, wt = value) %>%
  ggplot(aes(x = name_match, y = value, fill = name_match)) +
  geom_col() +
  ggtitle("KILLS BY WEAPON") +
  ylab("Number of Kills") +
  xlab("") +
  labs(fill = "Weapon Name") +
  theme_csgo(text = element_text(family = "quantico")) +
  scale_fill_csgo()

Então, essas são as 10 armas com mais kills, mas… e a eficiência? Será que a ak47 é a arma mais eficiente do Rodrigo? Primeiro, vamos definir “eficiência”:

  • kills_efficiency significa quantos disparos ele precisou para matar (ex.: 32% dos disparos matam)

  • hits_efficiency significa quantos disparos acertam o alvo; isso está mais relacionado à habilidade do Rodrigo com cada arma (ex.: 35% dos disparos acertam).

  • hits_to_kill significa quantos acertos são necessários para matar; isso está mais relacionado ao poder/eficiência da arma (ex.: 91% dos acertos matam).

rodrigo_efficiency <- rodrigo_stats %>%
  filter(
    name_match %in% c("ak47", "aug", "awp", "fiveseven",
                      "hkp2000", "m4a1", "mp7", "p90",
                      "sg556", "xm1014")
  ) %>%
  mutate(
    stat_type = case_when(
      str_detect(name, "shots") ~ "shots",
      str_detect(name, "hits") ~ "hits",
      str_detect(name, "kills") ~ "kills"
    )
  ) %>% 
  pivot_wider(
    names_from = stat_type, 
    id_cols = name_match, 
    values_from = value
  ) %>%
  mutate(
    kills_efficiency = kills/shots*100,
    hits_efficiency = hits/shots*100,
    hits_to_kill = kills/hits*100
  )

kbl(rodrigo_efficiency) %>%
  kable_styling()
name_match kills shots hits kills_efficiency hits_efficiency hits_to_kill
fiveseven 1288 28187 5558 4.569482 19.71831 23.17380
xm1014 5611 205982 42541 2.724024 20.65278 13.18963
p90 3469 133273 20245 2.602928 15.19062 17.13510
awp 2051 6260 2235 32.763578 35.70288 91.76734
ak47 6969 154852 24823 4.500426 16.03014 28.07477
aug 2120 37949 8487 5.586445 22.36423 24.97938
hkp2000 1401 36975 6737 3.789047 18.22042 20.79561
sg556 1243 25091 4567 4.953968 18.20175 27.21699
mp7 1788 52657 10186 3.395560 19.34406 17.55350
m4a1 3526 81126 14687 4.346325 18.10394 24.00763
rodrigo_efficiency %>%
  top_n(n = 10, wt = kills) %>%
  ggplot(aes(x = name_match, size = shots)) +
  geom_point(aes(y = kills_efficiency, color = "Kills Efficiency")) +
  geom_point(aes(y = hits_efficiency, color = "Hits Efficiency")) +
  geom_point(aes(y = hits_to_kill, color = "Hits to Kill")) +
  ggtitle("WEAPON EFFICIENCY") +
  ylab("Efficiency (%)") +
  xlab("") +
  labs(color = "Efficiency Type", size = "Shots") +
  theme_csgo(
    text = element_text(family = "quantico"),
    panel.grid.major.x = element_line(size = .1, color = "black",linetype = 2)
  ) +
  scale_color_csgo()
Em conclusão, eu aconselharia o Rodrigo a usar a **awp** nos próximos jogos dele, porque essa arma apresentou a melhor eficiência em termos de **shots to kill**, **shots to hit** e **hits to kill**. Mas definitivamente precisamos de mais disparos com essa arma para ver se essa eficiência se mantém... hahahaha