21 Meaning and the essence of stats
dan63047 edited this page 2024-11-13 11:42:52 +03:00

[!WARNING] Page under (not active) development.

Players always wanted to improve their skill level. And some people was so obsessed with it, they tried to calculate their skill, using numbers of actions counted by game (ex. placed pieces, passed time, number of inputs, garbage lines) and fancy math.

In TETR.IO, there is a variety of stats. But what are they all mean? Let's figure that's out.

Multiplayer stats

Calculated by game

[TR] Tetra Rating

Main metric, that supposed to show the true skill of player. In second season of Tetra League, osk (or that one particular League of Legends player idk) invented their own (yet proprietary) formula. Publicly known, that median was moved from 12500 to 10000 TR, leaving a lot more space for higher ranks to climb. It does not depends on GLIXARE anymore. Also was noticed, that RD have heavier impact on your rating, than before.

[GLIXARE] GLIXARE

GLIXARE shows your chance of winning against average player (which is considered to have 1500 GLICKO with 350 RD). It's based on GLICKO-2 win probability equation. More info you can found here.

[S1 TR] Season 1-like Tetra Rating

Formula, that was used for the first season of Tetra League. It's based on GLIXARE. So, S1 TR actually shows your chance of winning against average player, which is considered to have 1500 GLICKO with 350 RD (= 12500 S1 TR). Before GLIXARE being added as a stat for Tetra League, TR was calculated with this formula:

S1 TR = 25000 / (1 + 10^(((1500 - GLICKO) * pi / sqrt(3 * ln(10)^2 * RD^2 + 2500 * (64 * pi^2 + 147 * ln(10)^2)))))

The only differences from GLIXARE formula is that 25000 was 10000 in GLIXARE formula and whole equation was rounded and divided on 100.

But now, with GLIXARE available, calculation become much simplier:

S1 TR = GLIXARE * 250

The biggest problem with this formula that it's not linear, those difference in skill between 10k and 12k TR players will be significantly lower, than between 24900 and 24990 TR. Hence, my personal opinion, that it's only useful in building leaderboards, since it takes player's RD into account, unlike leaderboard, based on GLICKO.

[GLICKO] GLICKO-2 rating

Whole GLICKO-2 rating system is a method of assessing a player's strength in competitive games. It described with a bunch of difficult formulas (look here for them), but basically, after each TL match you gain/lose somewhere around rating difference, adjusted with RD. If you win a player with glicko being a lot bigger, than yours, you gain a lot of glicko. If you lose to a player with glicko being a lot bigger, than yours, you lose only a small amount of glicko. Vise versa with a player with glicko, being a lot smaller, than yours.

GLICKO-2 system also has a system constant, responsible for "change in volatility over time". So, yeah, each player has hidden variable, called "volatility", which is high if you successfully compete against higher rated players (or vise versa), and low if you play "on your rating". The value of constant, most likely, was left unchanged (default in KenanY/glicko2-lite implementation - 0.5).

[RD] Rating deviation

That number tells, how the rating system uncertain about player rating. It goes down every played match on some amount, that calculated very weirdly (OR goes up, if glicko difference between players is too big) and goes up by 1 each day after week of inactivity (if RD less, than 350).

RD also has a soft floor of 60 RD, but it's possible to get lower RD by playing big amount of games. If your RD higher, than 100, your rank gets hidden.

[WR] Win Rate

Very very old and inaccurate way to determine players skill. It's just a ratio of wins to played games.

[APM] Attack per Minute

That one is easy to understand. It's just a ratio of attack (sent + cancelled lines) to time (minutes). The only problem is — it's still may be not accurate, since you can send 20 attack in 5 seconds with opener and then have no skill to play midgame, having in total, let's say, 120 APM, or just play good midgame without opener and be really strong opponent with same 120 APM.

[PPS] Pieces per Second

That's also easy. It's a measurement of speed. It's just a ratio of placed pieces to time (seconds). The faster you place pieces, the bigger it is.

[VS] Versus Score

That metric was invented by garbo, accepted by osk and promoted in game, as "general indicator of skill". It calculated with this formula:

VS = [ ( attack + garbage lines cleared ) / pieces ] * PPS * 100, where constant of 100 here is just for scale.

That metric encourages player for using garbage lines in attacks, as well, as playing efficiently.

Calculated by using fancy math

Only the metrics listed above are available for calculations.

[APP] Attack per Piece

That's a ratio of attack to number of placed pieces. Basically, an efficiency metric.

[VS/APM] Versus Score per Attack per Minute

That's a ratio of versus score to attack per minute. By looking at this metric, you can quickly tell if player is opener main (has low vs/apm) or inf. downstacker (high vs/apm). Minimum possible value is 5/3 VS/APM

[DS/S] Downstack per Second

That metric shows, how fast you clearing garbage lines

DS/S = (VS / 100) - (APM / 60)

DS/S = [ ( attack + garbage lines cleared ) / pieces ] * PPS - APS, where APS is attack per second

I found a dependence from VS/APM 5/3 VS/APM = 0 DS/S

[DS/P] Downstack per Piece

That metric shows, how efficiently you clearing garbage lines

DS/P = DS/S / PPS

5/3 VS/APM = 0 DS/P but who cares?

[APP + DS/P] Summary of Attack per Piece and Downstack per Piece

It's literary what is called. Efficiency metric + Downstack metric = Ultimate efficiency metric (???)

[Cheese] Cheese Index

Invented by kerrmunism. Cheese = (DS/P * 150) + ((VS/APM - 2) * 50) + (0.6 - APP) * 125

As you can see in this formula, Cheese goes up if you downstacking a lot and not attacking at all and it goes down if you play efficiently. This metric can be negative, that's the main reason why i can't compare it with average value.

[GbE] Garbage Efficiency

Invented by Zepheniah and Dragonboy. GbE = ((APP * DS/S) / PPS) * 2

That formula shows, how efficiently you using garbage in your attacks.

[wAPP] Weighted Attack per Piece

Invented by Wertj. wAPP = APP - 5 * tan(radians((Cheese / -30) + 1))

Kinda like APP, but Cheese inflates it

[Area] Area

Area = APM * 1 + PPS * 45 + VS * 0.444 + APP * 185 + DS/S * 175 + DS/P * 450 + GbE * 315

It's literary an area of the vs radar graph, but without the Cheese and VS/APM sections

[Est. TR] Estimated Tetra Rating (Outdated for Season 2)

That's a very messy formula based on statistical analysis, that's tries to estimate players TR only based on APM, PPS and VS (actually, also based on some calculated stats above, but they also based on those three metrics).

First, we need to calculate srarea, which is very similar to Area formula, but has different weights:

srarea = (apm * 0) + (pps * 135) + (vs * 0) + (app * 290) + (dss * 0) + (dsp * 700) + (gbe * 0)

Than, based on that, we calculating our statrank (with use of arbitrary numbers and trigonometry yaaaay 🥳):

statrank = 11.2 * atan((srarea - 93) / 130) + 1

If statrank for some reason became equal or lower, than 0 — assuming, that is equal to 0.001.

And then, we calculating temporary variable, that will be used for calculation of estimated glicko:

ntemp = pps*(150+(((vs/apm) - 1.66)*35))+app*290+dsp*700

Now, estimated glicko:

estglicko = 0.000013*pow(ntemp, 3) - 0.0196 *pow(ntemp, 2) + (12.645*ntemp)-1005.4

And finally — estimated TR:

esttr = 25000 / (1 + pow(10, (((1500-estglicko)*pi)/sqrt(((3*pow(ln10, 2))*pow(60, 2))+(2500*((64*pow(pi,2))+(147*pow(ln10, 2))))))))

It's very flawed, since it's enough to get 25K Est. TR by simply playing at 5 PPS with 1 APM.

Playstyle calculations

This is another mess of formulas, that tries to tell, based on your stats, which playstyle you most likely have. Mostly used for building a playstyle radar graph (horoscope).

In game of competitive 4-block stacking game, community brought out 4 main playstyles: Opener, Plonk, Stride and Inf. DS.

Opener — usual for Opener mains. They heavily rely on openers or loops and rarely use garbage for their own attacks. Some of them rely on it that hard, that they can't even play well in midgame — phase, that comes after when opener ends.

Plonk — usual for Plonkers. Those players heavily rely on opponent, who can send him clean garbage. They use that garbage for their own attacks, playing slowly, and then sending big spike on their opponent.

Stride — usual for Striders. The only thing they can do — play fast. They don't distinct Tetra League from 40 Lines.

Infinite Downstack — usual for Infinite Downstackers. They don't send big attacks, they don't go fast. Their only target — clear lines.

Usualy, your playstyle is mixture of those 4 playstyles.

But, before even computing these playstyles, we should calculate normalized stats. What it is? Who cares, it only used for playstyle calculations.

nmapm = ((apm / srarea) / ((0.069 * pow(1.0017, (pow(statrank, 5) / 4700))) + statrank / 360)) - 1

nmpps = ((pps / srarea) / (0.0084264 * pow(2.14, (-2 * (statrank / 2.7 + 1.03))) - statrank / 5750 + 0.0067)) - 1

nmapp = (app / (0.1368803292 * pow(1.0024, (pow(statrank, 5) / 2800)) + statrank / 54)) - 1

nmdsp = (dsp / (0.02136327583 * pow(14, ((statrank - 14.75) / 3.9)) + statrank / 152 + 0.022)) - 1

nmgbe = (gbe / (statrank / 350 + 0.005948424455 * pow(3.8, ((statrank - 6.1) / 4)) + 0.006)) - 1

nmvsapm = (vsapm / (-pow(((statrank - 16) / 36), 2) + 2.133)) - 1

Do notice, that srarea and statrank was calculated back in Est. TR calculation process. Now, i bringing in: playstyle formulas.

opener = ((nmapm + nmpps * 0.75 + nmvsapm * -10 + nmapp * 0.75 + nmdsp * -0.25) / 3.5) + 0.5

plonk = ((nmgbe + nmapp + nmdsp * 0.75 + nmpps * -1) / 2.73) + 0.5

stride = ((nmapm * -0.25 + nmpps + nmapp * -2 + nmdsp * -0.5) * 0.79) + 0.5

infds = ((nmdsp + nmapp * -0.75 + nmapm * 0.5 + nmvsapm * 1.5 + nmpps * 0.5) * 0.9) + 0.5

Are those calculations accurate? Depends on what we accept for APM, PPS and VS values. Round stats — probably. Averages of 10 last games — i don't think so, since your playstyle can vary depending on your opponent and skill.

Since those values usually very small (between 0 and 1), Tetra Stats shows them as percentiles. But that doesn't mean that you can't have, for example, opener >1.

Singleplayer stats

In singleplayer player can't send garbage (except zen)(engine still count attack anyway). So, in 40 lines, blitz, zen and custom game we stick with these metrics:

Score

TETR.IO is using a guideline scoring system with additions, which rewards player for actions, that is impossible to do in guideline 4-block stacking games. Player gets rewarded for every lineclear, harddrop and softdrop. Softdrop gives +1 point for every passed cell, while harddrop — +2 per cell. Lineclears rewards listed in the following table:

Lineclear Score
Single 100 * Level
Double 300 * Level
Triple 500 * Level
Quad 800 * Level
Penta 1200 * Level
Penta+ (1200 + 400 * (Lines - 5)) * Level
T-spin zero 400 * Level
T-spin single 800 * Level
T-spin double 1200 * Level
T-spin triple 1600 * Level
T-spin quad 2600 * Level
T-spin penta 3200 * Level
T-spin penta+ (3200 + 600 * (Lines - 5)) * Level
Mini T-spin zero 100 * Level
Mini T-spin single 200 * Level
Mini T-spin double 400 * Level
Perfect Clear 3500 * Level

Where Lines means lines cleared by given lineclear. Combo adds 50 * (Combo - 1) * level to the lineclear score and active BtB — +50% to the lineclear score.

Score per piece

Ratio of score on placed pieces. Efficiency metric for singleplayer modes

Finesse

Finesse by itself is a technique that helps you reduce your keypresses per piece placed, that requires you to place pieces by using least possible amount of inputs. todo... i have finesse tables from tetrio.js

Finesse faults

also todo...

Finesse precentage

A ratio of pieces, placed with good finesse on total placed pieces.

[KP/P] Key presses per piece

Ratio of inputs (or key presses) on placed pieces. Efficiency metric in terms of finesse.