Multiplayer Metrics

Some attacks send more than others, but it's not so simple as to say "the more you send, the better."

Evaluating performance

Suppose that you had a number of game replays in front of you. You can't watch the games, and you don't know who won. You do have various data such as how much garbage each player sent, game length, how many pieces used, etc. How could you use this data to best predict who won? To simplify this problem, assume that when the game ends, only garbage remains.

One commonplace statistic is "Tetrominos Per Minute" (TPM).  It simply measures playing speed. Would the faster player more likely win? What if they play thoughtlessly and wastefully? Maybe they clear too many Singles. A slower player, who makes better use of their pieces, can still win.

Over the years people paid more attention to "Attack Per Minute" (APM). It takes skill to play quickly, but it also takes skill to convert those pieces into attacks. APM correlates much more strongly with winning. But what if the higher APM player focuses too much on attacking and neglects their own garbage? If the slower APM player consistently deals with the garbage they receive while steadily returning fire, they can still win.

A high TPM or APM won't always indicate the winner. However, in the above thought experiment, there is one way to always determine who won the game. You just add the total number of garbage rows sent and cleared.

Calculating throughput

Every garbage row the opponent sends will stay on your playfield until you clear it. The net garbage remaining will always equal "garbage received" subtracted from "garbage cleared." When you lose, your net garbage remaining will equal or exceed 20. Your opponent's net garbage remaining will come in underneath 20. Therefore, the player who altogether sent and cleared the most garbage must be the one who won. An exception to this rule is when you top out due to overly high upstack on top of your garbage.


In the below example, the left player sent and cleared more combined garbage rows than the player on the right. If the left player cleared down less garbage, then they also must have sent much more garbage than than their opponent. If they sent less garbage, then they must have also cleared more of what was sent to them.










Assuming that you don't top out on your own, you can't lose without having received at least twenty rows of garbage. In practice, you'll clear at least some of that garbage through the course of normal play. Therefore, your opponent must send a net total of twenty garbage rows to top you out.

A win occurs when: Opponent's Garbage Received - Opponent's Garbage Cleared ≥ 20


The throughput formula weighs sent garbage and cleared garbage equally. Interestingly, clearing garbage typically requires less pieces than does sending garbage. For example, take a Tetris consisting of four lines of upstack. This attack requires ten pieces and sends four rows of garbage. That results in an efficiency of 4/10 = 0.4 garbage rows sent per piece. Compare that with using four rows of lined-up garbage.







This results in clearing down four rows of garbage as well as adding four to the opponent. It only requires one piece to do. 8/1 = 8.0. In terms of throughput, a Tetris made up entirely out of garbage rows is twenty times more an efficient use of your pieces when compared to one composed only of upstack.



Each line of upstack requires 2.5 pieces to complete. Each line of garbage requires only a quarter of a piece to complete. This is the reason behind why downstacking is so effective in terms of increasing throughput, and in turn increasing winning potential. Downstacked garbage contributes to winning equally as does sent garbage, but it costs much less per piece. You can stack up for a Double and send one row of garbage. Alternatively, you can use a quarter of one piece to clear down one row of your own garbage. 

There are two ways to increase your throughput. You can play more efficiently, and you can play faster. If you play twice as fast as your opponent, as long as they play twice as efficiently as you, you'll break even on throughput. Note the simple relationship between speed, efficiency, and throughput.

Throughput = Efficiency × TPM


Suppose you don't have any garbage on your playfield and strictly want to compare the efficiency of different attacks. You need to know two things: how much garbage each attack sends and how many pieces they need.

AttackGarbage SentPieces PlacedGarbage / Pieces
Single02.50.00
Double150.20
Triple27.50.27
Tetris4100.40

This paints a decent picture of the relative strength of each attack, but it doesn't account for everything. You could also consider how both line clear delay and soft dropping affect an attack's strength. For example, modern games reward players a great deal for clearing T-Spins. T-Spins require soft dropping. This uses up more time on a per piece basis. Line clear delay can also complicate things. Any given line clear animation requires, for example, a quarter of a second to finish. A Tetris clear, which simultaneously clears four in one go, will take one quarter second. However, clearing four singles separately will take up a combined total of one whole second since the line clear animation happens four different times. The following formula takes these issues into account:











Different games not only reward attacks differently, but they also use differing amounts of soft drop delay and line clear delay. The efficiency of each attack can vary significantly from game to game. Here are some example calculations for a typical game.

Soft Drop Seconds Per RowLine Clear SecondsTetrominos Per Second
0.050.152
AttackAttack EfficiencyGarbage SentPieces DroppedPieces Soft DroppedSoft Dropped RowsLine Clears
Single002.5001
Double0.18915001
Triple0.25627.5001
Tetris0.388410001
T-Spin Single0.54122.5191
T-Spin Double0.64545191
T-Spin Triple0.6967.5191
B2B Tetris0.485510001
B2B T-Spin Single0.81132.5191
B2B T-Spin Double0.80655191
B2B T-Spin Triple0.80577.5191

Not surprisingly, Tetrises are more efficient than Triples, Doubles, and Singles. B2B Tetrises are more efficient than regular ones. T-Spins are more efficient than Tetrises. Even regular T-Spins are more efficient than a B2B Tetrises.

Regular T-Spins slightly improve in efficiency as their line count increases from T-Spin Singles to T-Spin Triples. That makes sense because you only pay for the line clear once per attack. The bigger T-Spins use that line clear delay at a discount per piece. However, the opposite efficiency trend happens with B2B T-Spins. Smaller T-Spins require less for that extra B2B garbage line on a per piece basis.

Illustrated below, a B2B T-Spin Double sends five rows of garbage. However, dividing it into two B2B T-Spin Singles would instead send three garbage lines each. That results in one more garbage line sent, despite both cases requiring the same number of pieces.















Of course, don't take this to mean that you should strive to only make B2B T-Spin Singles. Actual games are far more complex. What's efficient in the short term is by no means more efficient in the long run. For example, you'll only get one T-piece out of every seven. If you use it for the T-Spin Single (2.5 pieces), on average you're left with 4.5 pieces before the next T-piece comes. You might have used the first 2.5 pieces very efficiently but wasted the other 4.5 pieces. A B2B T-Spin Double or Triple may use up these pieces more efficiently when viewed from a broader perspective.

Just as soft drop delay has an effect on the efficiency of T-Spins, line clear delay has an impact on Combos. Combos tend to require smaller line clears in order to prolong them. Each separate line clear adds on an additional line clear delay. This overhead adds up over the course of the combo. The less the line clear delay, the more efficient combos become.

With the adjusted attack efficiency formula, you can compare 2-wide, 3-wide, and 4-wide combos. A 2-wide, on average, uses Doubles. Each Double sends an extra line. A 4-wide on the other hand uses only Singles, so attacks come only from the combo itself. The 3-wide uses on average a 50/50 combination of Singles and Doubles. Also note that the wider the combo, the longer that you can maintain the combo due using more Singles instead of Doubles. Doubles extinguish potential combo lines at twice the rate of Singles, per piece.

From left to right: 2-wide, 3-wide, and 4-wide combo setups.



Soft Drop Seconds Per RowLine Clear SecondsTetrominos Per Second
0.050.152
AttackAttack EfficiencyGarbage SentPieces DroppedPieces Soft DroppedSoft Dropped RowsLine Clears
2-wide Combo 00.18915001
2-wide Combo 10.189210002
2-wide Combo 20.252415003
2-wide Combo 30.283620004
2-wide Combo 40.302825005
2-wide Combo 50.3461130006
2-wide Combo 60.3771435007
2-wide Combo 70.4251840008
3-wide Combo 00.18915001
3-wide Combo 10.12317.5002
3-wide Combo 20.224312.5003
3-wide Combo 30.247415004
3-wide Combo 40.279620005
3-wide Combo 50.329822.5006
3-wide Combo 60.3721127.5007
3-wide Combo 70.4321430008
3-wide Combo 80.4771835009
3-wide Combo 90.5432237.50010
4-wide Combo 0002.5001
4-wide Combo 1005002
4-wide Combo 20.11917.5003
4-wide Combo 30.179210004
4-wide Combo 40.214312.5005
4-wide Combo 50.298515006
4-wide Combo 60.357717.5007
4-wide Combo 70.4461020008
4-wide Combo 80.5161322.5009
4-wide Combo 90.60717250010
4-wide Combo 100.6822127.50011
4-wide Combo 110.74425300012
4-wide Combo 120.8243032.50013
4-wide Combo 130.89335350014
4-wide Combo 140.9524037.50015

The garbage gained from Doubles in thinner combos don't outweigh the per piece efficiency of wider combos. Combos don't outperform Tetrises until around Combo 7. Only after a Combo 12 do they become more efficient than B2B T-Spins. This highlights the validity of the controversial middle 4-wide opening. Although, increasing line clear delay would have a major influence on its effectiveness.

Change on Attack Garbage


In the recent past, Tetris games have tacked on a peculiar feature called Change on Attack (COA). Previously, games would randomly assign the column where each garbage row's hole appears. COA instead lines up garbage holes for each separate attack. When the player sends another attack, then those holes line up again, but on another column.

Below, in the second frame, a player receives one line of garbage due to a Double. His opponent then makes a Tetris, as seen in the third frame. It sends four rows of lined-up garbage.







Lined-up garbage poses much less of a threat than randomly distributed garbage. A single I-piece can completely nullify a Tetris's or T-Spin Double's attack. COA weakens bigger attacks compared to smaller ones. The threat is more superficial. To me, COA reduces games to that of playing on a see-saw. You send over a Tetris, and then your opponent sends it right back, and so on. It greatly reduces the complexity of downstacking.

The take-away from this is that COA games have very little slippery slope. Sending garbage efficiently means much less when your opponent can easily send it right back with a couple of quick Tetrises. Instead of hurting your opponent, you could be setting yourself up for disaster. It can be confusing to know exactly what to aim for.

Typically, games between evenly skilled players end after one saves up a fair amount of ammo and has an I- or T-piece in hold with a couple of I- or T-pieces soon on the way. This allows for a quick spike of garbage to deliver the final blow before the opponent can convert that clean garbage into easy throughput. Long combos are also sometimes able overcome COA's total lack of slippery slope.

I have been told that it is good to wait until your opponent has messy garbage before you send clean garbage attacks. The idea is to ensnare your opponent with difficult garbage in order to get enough time to deliver the final blow. This gives you an opportunity to send "volume" garbage in the meanwhile. Personally, I have had trouble making this idea work. It is worth noting that players will never have more than a few I-pieces at any one time. Send enough clean garbage, and it won't matter if it is clean or not once they run out of I-pieces.

In the end, the player with the most throughput will still win, COA or not. Purposefully sending messy garbage will interfere with your opponent's ability to downstack efficiently. That in turn should have an effect on their overall throughput. To this end, I'm unable to say whether deliberately sending weaker attacks is worth it.

Garbage Canceling

Many modern games allow attacks to cancel one another out when they occur during the same time span. Imagine if you send four rows and your opponent sends over two. Two rows will cancel, and your opponent will receive the difference of two rows. When your opponent sends an attack, for a short time you will not actually receive it. The game waits until you drop your current piece before filling your playfield with pending garbage. If with that piece you send an attack, the two attacks cancel each other out.

Inevitably, players figured out a way to use this to their advantage. By timing your attacks, you can either deliberately cancel garbage or accept the trade. Below, the player on the left is dangerously near to topping out.










Suppose the left player takes the first opportunity to clear their Tetris. Then, their opponent sends a Tetris back. They wind up right back where they started.


















However, if the two attacks cancel, something slightly different occurs. The last frame never happens, resulting in the following outcome:










The left player finds themselves in a much better position: nearer to the bottom, and their opponent has less ammo to threaten them with. The opposite tactic is useful when your opponent is against the ropes and you're not. Deliberately timing the attack so you trade garbage instead of canceling it can give you the opportunity to deliver the final blow.

You can time your attack by waiting for your opponent to send lines. But it's usually better to stack pieces while waiting, preparing ammo in the meanwhile. Don't overdo it, though. If you need to wait too long in order to time an attack, you may want to forego this tactic rather than potentially sacrificing throughput.

There are a couple of other times where it may be useful to deliberately time attacks. For example, if you're sending clean garbage and your opponent sends over messy garbage, it would suit you to cancel it. On the other hand, if you can afford it, you should try to accept clean garbage when possible. When you send clean garbage, you may want to wait for your opponent to send a smaller attack. When these cancel, your opponent will receive only one or two lined-up garbage rows. This way, you allow them less usable, clean ammo without altering your throughput.

As a final note on COA, I personally don't like it as a game design choice. I like messier garbage that creates a variety of downstacking scenarios and challenge, and also makes attacks harder hitting and "stickier." Games can go on for too long due to the constant "resetting" of the game state.  Non-COA, messy style garbage result in more tactical games that reward well thought out attacks and smart downstacking, opposed to mindlessly clearing down clean garbage.

Alternate form for the efficiency formula

You can leave leftover upstack after clearing lines, so there are a couple of ways to evaluate the efficiency of an event.
  1. Include the leftover residue (e.g. you can T-Spin Double with 6 pieces: 4/6, but half of the last piece remains as an overhang.)
  2. Ignore the leftover residue (e.g. ignore the leftover filled cells of the T-Spin's overhang: 4/5)
For this article, I've included the leftover residue in the calculations. A good reason not to include them is that you can you that upstack toward your next attack, so it may not make sense to punish the efficiency of an attack with it. We can express this with the following:

General efficiency formula:
= (attack + garbage cleared) / pieces:

Efficiency, ignoring leftover residue:
= 4a/u + 4d/(9u)

u = cells contributed by pieces
d = cells contributed by garbage
a = attack lines sent


Diagrams made with tage.

Popular posts from this blog

Upstacking

Downstacking