![見出し画像](https://assets.st-note.com/production/uploads/images/108547073/rectangle_large_type_2_abfbf136c2e8499d93d1beccd5786e10.jpeg?width=1200)
戦闘回数を重ねても戦績が上がらなかった事例 (データで見るバトオペ2 バウンド・ドック戦績 #2 2023-02-18 ~ 2023-06-18)
概要
バウンド・ドックに乗り続けて戦績を記録していったら、数カ月後には成長が見えるのだろうか? 素朴な疑問に答えるべく、2023年2月〜3月までバウンド・ドックの個人戦績を記録した後、5月頭まで引退し、同月中旬以降に再開した戦績を追加して比較しました。以下の条件のもと、記録しています。
PS5版バトオペ コスト650帯レート戦における戦績 全283戦の記録を取得
レートはA+後半からS-前半を行ったり来たり 2023-06-18現在およそ2,770
カスパ: 初期は格闘プログラム全振りの火力重視、5月以降は強制冷却システム5・2・1および耐ビーム・耐格闘の機動性・防御重視
MAPは機体特性・配信頻度から、廃墟都市・北極基地・補給基地・軍事基地が多い。次いで塹壕、コロニー落下地域、墜落跡地、無人都市、熱帯砂漠など。その他のMAPはほとんど含まれない
味方の厳選はしない。個人的には当然のプレイマナーとは思うが、一旦編成されたら味方編成を問わず出撃し、切断・放置もしない
結果
月単位でのスコアの変遷を追う目的で、日単位で戦績を平均化し、月別に毎日の平均値をplotしてみました。その結果が下図です。
![](https://assets.st-note.com/img/1687066642725-x0KttipXve.png?width=1200)
議論
この4ヶ月の戦績は(復帰したての5月が全体的に低いことを除けば)ほとんど一定を維持している。強いて言えば6月のDeath=被撃破数は他より低い傾向を示しており、今後さらに低下するか注目したい。以前より低い被撃破数で同じ成績を維持しているとも言えるかもしれないが、逆に言えば被撃破数以外何も成長していない。
戦績の内容は与ダメージや撃破数がS-としては低く、一方で被撃破数は高め(平均3を下回ることが上手い人の特徴の一つとされる)であるから、攻撃のチャンスを逃したり、無駄死にをしている頻度が高いと想像でき、工夫の余地がある。
A+帯メインの戦闘になるかS-帯メインの戦闘になるかによって戦績は変動することから、その影響を推し量るため、レートポイント自体の遷移も記録・図示することが望ましい。
2023-03-02にはフライト系の天敵、ゼク・ツヴァイが同650コスト帯に追加された。2023-06-10にはピックアップも実施され、ピック率もそこそこあることから、2月までと3月以降では環境が異なっている。(ただし、環境は移ろうものであり、ゲームシステムやスキル面の変化を除けば、考慮する意味は薄いと思う)
バッジチャレンジを使って戦績を記録する関係上、どうしても(大して強くなくても)バッジがついてしまう。このことで、戦績が悪い際にファンメールや故意FF等の攻撃対象になりやすくなっている気もした。
自分的には上位スコアを出していた戦場でも、味方にいたカンスト系配信者が自分に対してブチ切れながら配信していたりする (バトオペのライブ配信者はだいたい常に他人のプレーに文句を言っている) ので、そういう面からも、まだまだムーブ面には工夫の余地があるのだと考えられる。
結論
漫然と戦っているつもりが無くても、勝利に貢献する気持ちで動いていたはずでも、実際には4ヶ月プレイしてレートも戦績も上がっていなかった。経時的に上達しているはずという思い込みをきちんと否定するために、バッジチャレンジを用いたデータ取得は効果的。
![](https://assets.st-note.com/img/1687066945676-Zq50m74jCN.png?width=1200)
用いたRスクリプト
setwd("path-to-dir")
library("stringr")
library("dplyr")
library("tidyverse")
library("patchwork")
library("scales")
library("ggplot2")
library("ggbeeswarm")
data <- read_tsv("input.tsv", col_names = c("msname", "mslevel", "rule", "winlose", "rival", "zscore", "personalscore", "assistscore", "damage", "mskill", "msdeath", "date"))
winlose <- filter(data, msname == "バウンド・ドック") |>
mutate(yyyymm = gsub("-\\d\\d$", "", date)) |>
group_by(date) |>
summarize(yyyymm, date, wins = sum(winlose == "win"), loses = sum(winlose == "lose")) |>
mutate(winlose = wins/(wins + loses)*100) |> distinct()
winlose2 <- ungroup(winlose) |>
group_by(yyyymm) |>
summarise(mean = mean(winlose), sd = sd(winlose), se = sd/sqrt(n()), ci=1.96*se)
winlosefig <- ggplot(NULL) +
geom_quasirandom(data = winlose, aes(x = factor(yyyymm), y = winlose), width = 0.3, size = 2, alpha = 0.3) +
geom_pointrange(data = winlose2, aes(x = factor(yyyymm), y = mean, ymin = mean-ci, ymax = mean+ci), color = "grey30", size=1, alpha = 0.8) +
# coord_cartesian(xlim=c(0,250), ylim=c(0,100)) +
labs(x = "YYYYMM") +
labs(y = "Game win (%)") +
# scale_y_continuous(
# breaks = c(200, 300, 500),
# labels = c("200", "300", ">500"),
# limits = c(200, 500),
# oob = squish
# ) +
# scale_y_continuous(
# breaks = c(0, 50, 100),
# labels = c("0", "50", "100"),
# limits = c(0, 100),
# oob = squish
# ) +
theme(
plot.margin= unit(c(1, 1, 1, 1), "lines"),
text = element_text(size = 14, family = "Helvetica", color = "black"),
plot.title = element_text(size = 14, family = "Helvetica", color = "black", hjust = 0.5),
axis.text = element_text(size = 14, family = "Helvetica", color = "black"),
axis.text.x = element_text(angle = 45, hjust = 1),
axis.ticks = element_line(size = 0.8),
axis.ticks.length = unit(-1.5, "mm"),
panel.grid = element_blank(),
panel.border = element_rect(linetype = "solid", color = "black", fill = NA, size = 1.5),
panel.background = element_rect(fill = "white")
)
plot(winlosefig)
rival <- filter(data, msname == "バウンド・ドック") |>
mutate(yyyymm = gsub("-\\d\\d$", "", date)) |>
group_by(date) |>
summarize(yyyymm, date, wins = sum(rival == "win"), loses = sum(rival == "lose")) |>
mutate(winlose = wins/(wins + loses)*100) |> distinct()
rival2 <- ungroup(winlose) |>
group_by(yyyymm) |>
summarise(mean = mean(winlose), sd = sd(winlose), se = sd/sqrt(n()), ci=1.96*se)
rivalfig <- ggplot(NULL) +
geom_quasirandom(data = rival, aes(x = factor(yyyymm), y = winlose), width = 0.3, size = 2, alpha = 0.3) +
geom_pointrange(data = rival2, aes(x = factor(yyyymm), y = mean, ymin = mean-ci, ymax = mean+ci), color = "grey30", size=1, alpha = 0.8) +
# coord_cartesian(ylim=c(0,100)) +
labs(x = "YYYYMM") +
labs(y = "Rival win (%)") +
# scale_y_continuous(
# breaks = c(200, 300, 500),
# labels = c("200", "300", ">500"),
# limits = c(200, 500),
# oob = squish
# ) +
scale_y_continuous(
breaks = c(0, 50, 100),
labels = c(" 0", "50", "100"),
limits = c(0, 100),
oob = squish
) +
theme(
plot.margin= unit(c(1, 1, 1, 1), "lines"),
text = element_text(size = 14, family = "Helvetica", color = "black"),
plot.title = element_text(size = 14, family = "Helvetica", color = "black", hjust = 0.5),
axis.text = element_text(size = 14, family = "Helvetica", color = "black"),
axis.text.x = element_text(angle = 45, hjust = 1),
axis.ticks = element_line(size = 0.8),
axis.ticks.length = unit(-1.5, "mm"),
panel.grid = element_blank(),
panel.border = element_rect(linetype = "solid", color = "black", fill = NA, size = 1.5),
panel.background = element_rect(fill = "white")
)
plot(rivalfig)
zscoredata <- filter(data, msname == "バウンド・ドック") |>
mutate(yyyymm = gsub("-\\d\\d$", "", date)) |>
group_by(date) |>
summarize(yyyymm, date, zscore = mean(zscore)) |>
distinct()
zscoredata2 <- ungroup(zscoredata) |>
group_by(yyyymm) |>
summarise(mean = mean(zscore), sd = sd(zscore), se = sd/sqrt(n()), ci=1.96*se)
zscore <- ggplot(NULL) +
geom_quasirandom(data = zscoredata, aes(x = factor(yyyymm), y = zscore), width = 0.3, size = 2, alpha = 0.3) +
geom_pointrange(data = zscoredata2, aes(x = factor(yyyymm), y = mean, ymin = mean-ci, ymax = mean+ci), color = "grey30", size=1, alpha = 0.8) +
# coord_cartesian(xlim=c(0,250), ylim=c(0,100)) +
labs(x = "YYYYMM") +
labs(y = "Z-score") +
scale_y_continuous(
breaks = c(200, 300, 400, 500),
labels = c("200", "300", "400", ">500"),
limits = c(200, 500),
oob = squish
) +
# scale_y_continuous(
# breaks = c(0, 50, 100),
# labels = c("0", "50", "100"),
# limits = c(0, 100),
# oob = squish
# ) +
theme(
plot.margin= unit(c(1, 1, 1, 1), "lines"),
text = element_text(size = 14, family = "Helvetica", color = "black"),
plot.title = element_text(size = 14, family = "Helvetica", color = "black", hjust = 0.5),
axis.text = element_text(size = 14, family = "Helvetica", color = "black"),
axis.text.x = element_text(angle = 45, hjust = 1),
axis.ticks = element_line(size = 0.8),
axis.ticks.length = unit(-1.5, "mm"),
panel.grid = element_blank(),
panel.border = element_rect(linetype = "solid", color = "black", fill = NA, size = 1.5),
panel.background = element_rect(fill = "white")
)
plot(zscore)
personalscoredata <- filter(data, msname == "バウンド・ドック") |>
mutate(yyyymm = gsub("-\\d\\d$", "", date)) |>
group_by(date) |>
summarize(yyyymm, date, personalscore = mean(personalscore)) |>
distinct()
personalscoredata2 <- ungroup(personalscoredata) |>
group_by(yyyymm) |>
summarise(mean = mean(personalscore), sd = sd(personalscore), se = sd/sqrt(n()), ci=1.96*se)
personalscore <- ggplot(NULL) +
geom_quasirandom(data = personalscoredata, aes(x = factor(yyyymm), y = personalscore), width = 0.3, size = 2, alpha = 0.3) +
geom_pointrange(data = personalscoredata2, aes(x = factor(yyyymm), y = mean, ymin = mean-ci, ymax = mean+ci), color = "grey30", size=1, alpha = 0.8) +
# coord_cartesian(xlim=c(0,250), ylim=c(0,100)) +
labs(x = "YYYYMM") +
labs(y = "Personal score") +
scale_y_continuous(
breaks = c(0, 2000, 4000, 6000, 8000),
labels = c("0", "2,000", "4,000", "6,000", ">8,000"),
limits = c(0, 8000),
oob = squish
) +
# scale_y_continuous(
# breaks = c(0, 50, 100),
# labels = c("0", "50", "100"),
# limits = c(0, 100),
# oob = squish
# ) +
theme(
plot.margin= unit(c(1, 1, 1, 1), "lines"),
text = element_text(size = 14, family = "Helvetica", color = "black"),
plot.title = element_text(size = 14, family = "Helvetica", color = "black", hjust = 0.5),
axis.text = element_text(size = 14, family = "Helvetica", color = "black"),
axis.text.x = element_text(angle = 45, hjust = 1),
axis.ticks = element_line(size = 0.8),
axis.ticks.length = unit(-1.5, "mm"),
panel.grid = element_blank(),
panel.border = element_rect(linetype = "solid", color = "black", fill = NA, size = 1.5),
panel.background = element_rect(fill = "white")
)
plot(personalscore)
assistscoredata <- filter(data, msname == "バウンド・ドック") |>
mutate(yyyymm = gsub("-\\d\\d$", "", date)) |>
group_by(date) |>
summarize(yyyymm, date, assistscore = mean(assistscore)) |>
distinct()
assistscoredata2 <- ungroup(assistscoredata) |>
group_by(yyyymm) |>
summarise(mean = mean(assistscore), sd = sd(assistscore), se = sd/sqrt(n()), ci=1.96*se)
assistscore <- ggplot(NULL) +
geom_quasirandom(data = assistscoredata, aes(x = factor(yyyymm), y = assistscore), width = 0.3, size = 2, alpha = 0.3) +
geom_pointrange(data = assistscoredata2, aes(x = factor(yyyymm), y = mean, ymin = mean-ci, ymax = mean+ci), color = "grey30", size=1, alpha = 0.8) +
# coord_cartesian(xlim=c(0,250), ylim=c(0,100)) +
labs(x = "YYYYMM") +
labs(y = "Assist score") +
scale_y_continuous(
breaks = c(0, 500, 1000, 1500),
labels = c("0", "500", "1,000", ">1,500"),
limits = c(0, 1500),
oob = squish
) +
# scale_y_continuous(
# breaks = c(0, 50, 100),
# labels = c("0", "50", "100"),
# limits = c(0, 100),
# oob = squish
# ) +
theme(
plot.margin= unit(c(1, 1, 1, 1), "lines"),
text = element_text(size = 14, family = "Helvetica", color = "black"),
plot.title = element_text(size = 14, family = "Helvetica", color = "black", hjust = 0.5),
axis.text = element_text(size = 14, family = "Helvetica", color = "black"),
axis.text.x = element_text(angle = 45, hjust = 1),
axis.ticks = element_line(size = 0.8),
axis.ticks.length = unit(-1.5, "mm"),
panel.grid = element_blank(),
panel.border = element_rect(linetype = "solid", color = "black", fill = NA, size = 1.5),
panel.background = element_rect(fill = "white")
)
plot(assistscore)
damagedata <- filter(data, msname == "バウンド・ドック") |>
mutate(yyyymm = gsub("-\\d\\d$", "", date)) |>
group_by(date) |>
summarize(yyyymm, date, damage = mean(damage)) |>
distinct()
damagedata2 <- ungroup(damagedata) |>
group_by(yyyymm) |>
summarise(mean = mean(damage), sd = sd(damage), se = sd/sqrt(n()), ci=1.96*se)
damage <- ggplot(NULL) +
geom_quasirandom(data = damagedata, aes(x = factor(yyyymm), y = damage), width = 0.3, size = 2, alpha = 0.3) +
geom_pointrange(data = damagedata2, aes(x = factor(yyyymm), y = mean, ymin = mean-ci, ymax = mean+ci), color = "grey30", size=1, alpha = 0.8) +
# coord_cartesian(xlim=c(0,250), ylim=c(0,100)) +
labs(x = "YYYYMM") +
labs(y = "Damage") +
scale_y_continuous(
breaks = c(0, 50000, 100000, 150000),
labels = c("0", "50,000", "100,000", ">150,000"),
limits = c(0, 150000),
oob = squish
) +
# scale_y_continuous(
# breaks = c(0, 50, 100),
# labels = c("0", "50", "100"),
# limits = c(0, 100),
# oob = squish
# ) +
theme(
plot.margin= unit(c(1, 1, 1, 1), "lines"),
text = element_text(size = 14, family = "Helvetica", color = "black"),
plot.title = element_text(size = 14, family = "Helvetica", color = "black", hjust = 0.5),
axis.text = element_text(size = 14, family = "Helvetica", color = "black"),
axis.text.x = element_text(angle = 45, hjust = 1),
axis.ticks = element_line(size = 0.8),
axis.ticks.length = unit(-1.5, "mm"),
panel.grid = element_blank(),
panel.border = element_rect(linetype = "solid", color = "black", fill = NA, size = 1.5),
panel.background = element_rect(fill = "white")
)
plot(damage)
mskilldata <- filter(data, msname == "バウンド・ドック") |>
mutate(yyyymm = gsub("-\\d\\d$", "", date)) |>
group_by(date) |>
summarize(yyyymm, date, mskill = mean(mskill)) |>
distinct()
mskilldata2 <- ungroup(mskilldata) |>
group_by(yyyymm) |>
summarise(mean = mean(mskill), sd = sd(mskill), se = sd/sqrt(n()), ci=1.96*se)
mskill <- ggplot(NULL) +
geom_quasirandom(data = mskilldata, aes(x = factor(yyyymm), y = mskill), width = 0.3, size = 2, alpha = 0.3) +
geom_pointrange(data = mskilldata2, aes(x = factor(yyyymm), y = mean, ymin = mean-ci, ymax = mean+ci), color = "grey30", size=1, alpha = 0.8) +
# coord_cartesian(xlim=c(0,250), ylim=c(0,100)) +
labs(x = "YYYYMM") +
labs(y = "Kill") +
scale_y_continuous(
breaks = c(0, 2, 4, 6),
labels = c("0", "2", "4", "6"),
limits = c(0, 6),
oob = squish
) +
# scale_y_continuous(
# breaks = c(0, 50, 100),
# labels = c("0", "50", "100"),
# limits = c(0, 100),
# oob = squish
# ) +
theme(
plot.margin= unit(c(1, 1, 1, 1), "lines"),
text = element_text(size = 14, family = "Helvetica", color = "black"),
plot.title = element_text(size = 14, family = "Helvetica", color = "black", hjust = 0.5),
axis.text = element_text(size = 14, family = "Helvetica", color = "black"),
axis.text.x = element_text(angle = 45, hjust = 1),
axis.ticks = element_line(size = 0.8),
axis.ticks.length = unit(-1.5, "mm"),
panel.grid = element_blank(),
panel.border = element_rect(linetype = "solid", color = "black", fill = NA, size = 1.5),
panel.background = element_rect(fill = "white")
)
plot(mskill)
msdeathdata <- filter(data, msname == "バウンド・ドック") |>
mutate(yyyymm = gsub("-\\d\\d$", "", date)) |>
group_by(date) |>
summarize(yyyymm, date, msdeath = mean(msdeath)) |>
distinct()
msdeathdata2 <- ungroup(msdeathdata) |>
group_by(yyyymm) |>
summarise(mean = mean(msdeath), sd = sd(msdeath), se = sd/sqrt(n()), ci=1.96*se)
msdeath <- ggplot(NULL) +
geom_quasirandom(data = msdeathdata, aes(x = factor(yyyymm), y = msdeath), width = 0.3, size = 2, alpha = 0.3) +
geom_pointrange(data = msdeathdata2, aes(x = factor(yyyymm), y = mean, ymin = mean-ci, ymax = mean+ci), color = "grey30", size=1, alpha = 0.8) +
# coord_cartesian(xlim=c(0,250), ylim=c(0,100)) +
labs(x = "YYYYMM") +
labs(y = "Death") +
scale_y_continuous(
breaks = c(0, 2, 4, 6),
labels = c("0", "2", "4", "6"),
limits = c(0, 6),
oob = squish
) +
# scale_y_continuous(
# breaks = c(0, 50, 100),
# labels = c("0", "50", "100"),
# limits = c(0, 100),
# oob = squish
# ) +
theme(
plot.margin= unit(c(1, 1, 1, 1), "lines"),
text = element_text(size = 14, family = "Helvetica", color = "black"),
plot.title = element_text(size = 14, family = "Helvetica", color = "black", hjust = 0.5),
axis.text = element_text(size = 14, family = "Helvetica", color = "black"),
axis.text.x = element_text(angle = 45, hjust = 1),
axis.ticks = element_line(size = 0.8),
axis.ticks.length = unit(-1.5, "mm"),
panel.grid = element_blank(),
panel.border = element_rect(linetype = "solid", color = "black", fill = NA, size = 1.5),
panel.background = element_rect(fill = "white")
)
plot(msdeath)
layout <- "
AABB
CCDD
EEFF
GGHH
"
all <- winlosefig + rivalfig + zscore + damage + personalscore + assistscore + mskill + msdeath + plot_layout(design = layout)
ggsave(file = "output.pdf", plot = all, dpi = 300, width = 12, height = 12)