A frame is a unit of time roughly equal to 16.67ms, with Tekken's logic running at 60 frames per second. When talking about time it's more precise to speak in terms of frames than real time, because that's how the game understands it.
A “frame” in this context does not refer to an image rendered on the screen, although for most practical purposes it can be considered the same thing.
Attacks in Tekken have 3 key states for the attacker:
- Startup — time before the attack is active
- Active — time where the attack can hit the opponent
- Recovery — time after the attack was active
Every move spends a certain number of frames in each of these. The attacker cannot guard during any of them.
For example, a generic jab has 9 startup frames, 1 active frame, and 17 recovery frames.
This is often simplified to saying that the move is i10, i.e. that its first active frame is on the 10th frame.
It might also be said that the attack has a 10 frame startup (adding the startup and active frames together), which is sort of confusing. In most contexts, it should be assumed that this is what's meant by startup.
See also: Movelist#Frame_advantage
When a move hits an opponent, they're put into hitstun. If the move is blocked, they're put into blockstun. During these stuns, the defender can't act.
Frame advantage is the difference in frames between the recovery of the attacker and the stun of the defender. This indicates who can act first after a move hits or is blocked, and by how much.
The hitstun is almost always longer than the blockstun. Attacking after getting hit is usually a bad idea.
The situation a particular frame advantage represents depends on the matchup and distance, but the startup of the standard moves can act as a guide. Broadly speaking, it's hard to attack starting at -4, hard to sidestep at -6, and hard to do anything but guard at -9.
If the frame advantage is big enough, it's possible to get guaranteed damage by hitting the opponent before they've recovered. Doing this after blocking an attack is called block punishment.
The fastest attack for most characters is 10 frames, so moves that are -10 on block or worse are considered punishable. Conversely, moves that are -9 on block or better are considered “safe”.
The fastest launcher for most characters is 15 frames, so moves that are -15 on block or worse are considered launch punishable.
Some attacks have multiple active frames. If such a move connects in the first active frame, the other active frames are ignored, i.e. only one of an attack's active frames are allowed to connect. And the hitstun, blockstun, and recovery don't change based on when the move connects (unless they do, e.g. stagger on block), but the stun starts later if it's caused by later active frames.
A meaty is a move connecting with its later active frames to get a better frame advantage. The main ways to do this are:
- Timing the move with an opponent's tech recovery so that their invulnerability ignores the earlier active frames.
- Connecting the move at a particular angle so that the hitboxes of the earlier frames don't connect but the later ones do, as each active frame has a slightly different hitbox. Typically, but not always, this is just connecting it at max range.
A meaty may also simply refer to any move with many active frames.
When it's said that a 1 jab's first active frame is the 10th frame, this is counting from the first frame that the game acts on the 1 input. This is not the same as the frame when the game receives the input, which is also not the same as when the physical button that sent the input was pressed.
- The input from a physical controller takes some time to be received by the computer
- This input falls within one of the game's polling windows, which is some time after the current frame's behavior has been decided, but before the next one's
- This input is read by the game as “character controller inputs” (1,2,3,4,up,down,left,right) into a buffer
- When the game is looking to use game input, it reads input from the buffer received X frames ago into the variables «inputAttack» and «inputDirection»
- When a frame is deciding what to do, it uses the value of these two variables that was set on the previous frame
X is equal to 1 frame normally. It changes online depending on the connection quality, and can be changed by the «Input Delay» setting in training mode. In effect, this means there's a minimum of 2 frames of input delay no matter what (1 for X, and 1 because the game uses the previous frame's values of «inputAttack» and «inputDirection» to decide the current frame's behavior), or more practically between 2 and 3 frames, depending on what time in the polling window the input is sent.