Speed Is a Reset, Not a Rate

Week 2 — the initiative counter

Last week

A round is a container.

Commands go in, an order comes out, everything resolves, repeat.

Pokémon sorts. Dragon Quest rolls.

This week

Final Fantasy X has no rounds.

Two ways to be fast

ATB — a bar fills continuously. Full bar, you act.

Speed is throughput. A fast character fills faster.

Two ways to be fast

CTB — a counter ticks down. Zero, you act, counter resets.

All counters tick at the same rate.

Speed is the size of the reset.

The formula

counter = tickSpeed × rank × hasteMultiplier

Three inputs. Everything in the fight comes out of them.

Input 1: tick speed

Agility goes into a lookup table, tick speed comes out.

A table is a step function — gains arrive in jumps, and the designer chooses where the steps are.

Find where yours flattens before you spend on it.

Input 2: rank

ActionRank
Change equipment, escape1
Item, Defend2
Attack, most abilities3
… up to8

What rank buys

A rank 1 action costs a third of a rank 3.

Three cheap turns in the time somebody else takes one.

This is why Defend is a real move in FFX.

Rounding

Every step rounds down.

At high Agility with Haste, two rank 1 actions can cost fewer ticks than one rank 2.

That’s the arithmetic, not a bug.

Input 3: Haste

Halves the reset. Slow doubles it.

Casting it also halves the current counter, once.

Dispelling it doesn’t give the counter back.

So Haste is worth most early

Its value is measured in resets avoided, not speed gained.

The prediction

Tick speeds plus ranks gives you the next five turns.

FFX prints the same list on the HUD.

Rare thing: you can check your model against the game’s.

Where the list breaks

It assumes everyone takes a rank 3 action.

Defend, an item, a Haste, a Slow — invalid from there on.

Ties don’t break it: fixed order, party first, Cid last.

This week’s activity

One row per combatant, one column per tick.

Implement the formula. Feed it a real fight. Compare.

Then cast Haste at tick 0 and at tick 40.

The failure worth meeting

Implement Haste as a change to the rate.

Your model drifts slowly and stays plausible for about a dozen ticks.

Better to meet that in a spreadsheet than in a fight.

Next week

The number under the animation.