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