Ok thanks for the help
I’m not on it yet but my question is “should I have heard of more than maybe 5% of these people?”
Haha! I think most of them would have been active about 2 to 5 years ago?
That explains it. Anyway, wanna play?
Yeah, most of the > 1700 folks were gone when I started (about 1.5 years ago, I guess?), and we’ve had more attrition since then.
Sorry, I’ve got a standing date with friends on Fridays.
That’s fine. Another time then.
@mysticjuicer is a .
I know it. He knows it. Through some sort of devil magic, he still convinces me to attack.
The Will To Keep On Blocking, by M. Juicer
Ok, last dump of this data for a while, I think. This is for a model weighted towards more skill players. The character charts are based on win chance against best player with their best character (assuming an even matchup).
Character Skill Levels
A-C
D-F
G-I
J-L
M-O
P-R
S-U
V-Z
Most Even MUs
Character | Counterpick |
---|---|
The Model
data {
int<lower=0> NG; // Number of games
int<lower=0> NM; // Number of matchups
int<lower=0> NP; // Number of players
int<lower=0> NC; // Number of characters
int<lower=0, upper=1> win[NG]; // Did player 1 win game
int<lower=1, upper=NM> mup[NG]; // Matchup in game
vector<lower=0, upper=1>[NG] non_mirror; // Is this a mirror matchup: 0 = mirror
int<lower=1, upper=NC> char1[NG]; // Character 1 in game
int<lower=1, upper=NC> char2[NG]; // Character 2 in game
int<lower=1, upper=NP> player1[NG]; // Player 1 in game
int<lower=1, upper=NP> player2[NG]; // Player 1 in game
vector[NG] elo_logit; // Player 1 ELO-based logit win chance
vector[NG] obs_weights;
}
parameters {
vector[NM] mu; // Matchup value
vector<upper=0>[NP] char_skill[NC]; // Player skill at character
real elo_logit_scale; // elo_logit scale
}
transformed parameters {
vector[NG] player_char_skill1;
vector[NG] player_char_skill2;
vector[NG] win_chance_logit;
for (n in 1:NG) {
player_char_skill1[n] = char_skill[char1[n], player1[n]];
player_char_skill2[n] = char_skill[char2[n], player2[n]];
}
win_chance_logit = (player_char_skill1 - player_char_skill2) + non_mirror .* mu[mup] + elo_logit_scale * elo_logit;
}
model {
for (n in 1:NC) {
char_skill[n] ~ std_normal();
}
mu ~ normal(0, 0.5);
elo_logit_scale ~ std_normal();
for (n in 1:NG) {
target += bernoulli_logit_lpmf(win[n] | win_chance_logit[n]) * obs_weights[n];
}
}
generated quantities{
vector[NG] log_lik;
vector[NG] win_hat;
for (n in 1:NG) {
log_lik[n] = bernoulli_logit_lpmf(win[n] | win_chance_logit[n]) * obs_weights[n];
win_hat[n] = bernoulli_logit_rng(win_chance_logit[n]);
}
}
Thanks for the data
Awesome work here. The latest few MU charts are
I’m not clear on which charts this affects and how that is different to before? Were previous charts looking at win chance vs the average player?
It’s actually just about the scale of the y axis. The previous icicle charts had a scale with units of logits. Easy to sum up with other logit values, but hard to really understand. The last set converts those to win probabilites, but has to do that by assuming certain other conditions (because the “value” of a logit is non-linear in win-chance scale).
I just can’t help myself, this project keeps pulling me back in.
I just published Yomi Matchup Chart
It’s in need of better legend, but you can play with it now. Try putting your handle into the Player box, and your upcoming IYL opponent into the Opponent box. The upper end of the bar chart gives the probability that each matchup has a particular win rate (and the color gives the overall expected win-rate for that MU). Hovering over the bars will break down the details.
The lower half of the bar chart gives the player-adjusted versions of those same probabilities. This factors in your skill in a character, your opponents skill in the character, and your relative Elo levels (as of the last time the model was run).
Have fun!
I can’t get it to work. I hit “search” and nothing happens.
Same. I enter player and opponent name but when I click ‘graph’ nothing happens. Tried on Chrome and Internet Explorer.
And third time is not the charm, either.
Edit: Actually it was!
It worked for me, and it looks beautiful. It just takes a long time to load and gives no indication that it’s in progress. But great work, @vengefulpickle!
Oh, yeah, it definitely has some processing time. I’ll put “spinner” on the todo-list. And possibly a message display in the case that something does blow up.
Until then, if there are errors, they’ll show up in the developer console (Ctrl+Shift+K
in Firefox, Ctrl+Shift+I
in Chrome), and I’d love to get them (either in this thread or in PM).
You should totally take the Yomi arrows and use those as your spinner.
Done! There’s now a loading spinner, and it’s the Yomi arrows. (That took me longer to implement than I really want to admit, and most of it was just making it so that the arrows actually spun around their center…)