Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Structs

The groups of fields messages hold, each with the layout it has across the book’s patches.

Choice

One choice made before the match, and how far it was taken.

Definition.

In every range of this book

FieldTypeWhat it is
choiceu32Which choice, by the number the client knows it as. Zero where the place stands empty.
ranku8How far it was taken.

Movement

What one unit is told to do, in the compact shape: a path of points on the ground plane, each after the first stated against the one before it. Other shapes of movement exist, and which one a payload holds is settled by the message carrying it rather than by anything inside the movement.

Definition.

In every range of this book

FieldTypeWhat it is
header2-byte bits
header.pointCountbit 0 to 15How many points the path holds. A client takes none as no path and reads nothing more of the message. It sets no upper bound, and reads a count from 32768 up as negative, which no server sends.
pathrecordEverything the movement carries after its point count.
path.unitu32The unit the path belongs to.
path.pointscount in header.pointCount × recordEvery point of the path, each stated in world units. A client reads them even for a unit it does not hold, and takes each point’s height from the ground.
path.points[].xf32Along one ground axis, in world units.
path.points[].zf32Along the other, in world units.

MovementAtSpeed

What one unit is told to do where a server states how it travels: the same path of points as the compact shape, with the terms of its travel stated before them.

Definition.

In every range of this book

FieldTypeWhat it is
header2-byte bits
header.pointCountbit 0 to 15How many points the path holds. A client takes none as no path and reads nothing more of the message. It sets no upper bound, and reads a count from 32768 up as negative, which no server sends.
pathrecordEverything the movement carries after its point count.
path.unitu32The unit the path belongs to.
path.termsSpeedParamsHow the unit is made to travel.
path.pointscount in header.pointCount × recordEvery point of the path, each stated in world units. A client reads them even for a unit it does not hold, and takes each point’s height from the ground.
path.points[].xf32Along one ground axis, in world units.
path.points[].zf32Along the other, in world units.

Particle

One drawn particle: where it sits, what it hangs off, and how far into its run it is.

Definition.

In every range of this book

FieldTypeWhat it is
targetu32The unit the particle is aimed at, or zero.
particleu32The name this particle answers to, so later messages can name it.
boundTou32The unit the particle hangs off, or zero. Where it names a unit the client does not hold, the particle waits until it does, unless the group’s flags say otherwise.
atXf32Where the particle sits, along one ground axis, in world units.
atYf32Where it sits, in height, in world units.
atZf32Where it sits, along the other ground axis, in world units.
towardXf32Where the particle is aimed, along one ground axis, in world units.
towardYf32Where it is aimed, in height, in world units.
towardZf32Where it is aimed, along the other ground axis, in world units.
ownerXf32Where the unit that made it stood, along one ground axis, in world units.
ownerYf32Where that unit stood, in height, in world units.
ownerZf32Where that unit stood, along the other ground axis, in world units.
runningForf32How far into its run the particle already is, in seconds.

ParticleGroup

A set of drawn particles that share the art, the sound, and the place on a unit they hang from.

Definition.

In every range of this book

FieldTypeWhat it is
particleu32Which particle, by the number its name gives, as Objects and identifiers works it out.
flagsu16How each particle of the group behaves, one bit each: 1 kept alive, not ending by itself; 2 of no effect; 4 scaled to the bound unit’s bounding box and its effect scale (to 1 where the bound object cannot be attacked); 8 placed at the positions given rather than hung on bone and targetBone, made even where a nonzero boundTo is unknown and with an unknown target; 16 not turned to follow its direction; 32 simulated while off screen; 64 laid flat on the ground’s slope, facing as forward (+Z where facing is zero); 128 facing its target; 256 driven by the bound unit’s resource bar. Bits 9 to 15 have no effect.
targetBoneu32Where on the unit aimed at they hang, by the number the name of that place gives, as Objects and identifiers works it out.
boneu32Where on the unit that made them they hang, by the same reading.
particleCountu8How many particles follow.
particlescount in particleCount × ParticleThe particles themselves.

Replication

What has changed about one unit. A flag byte says which groups of values follow, and each group that follows says which of its values it holds and carries them as a run of bytes. The groups follow in a fixed order that is not the order of the flags: the last flag’s values come before the one before it, and the rest run in flag order. Replication says what settles the reading of a run, and records what a champion’s groups carry.

Definition.

In every range of this book

FieldTypePresent whenWhat it is
present1-byte bits
present.group0bit 0Set where this group’s values follow.
present.group1bit 1Set where this group’s values follow.
present.group2bit 2Set where this group’s values follow.
present.group3bit 3Set where this group’s values follow.
present.group4bit 4Set where this group’s values follow. They come after every other group’s, whatever the flags.
present.unusedbit 5 to 7A client takes only groups 0 to 4.
unitu32The unit whose values these are.
group0recordpresent.group0 setThe values of group 0, where the flag says they follow.
group0.whichu32Says which of the group’s values follow, one bit each, lowest first.
group0.valuescount in the bits set in which × bytesThe values themselves, four bytes each, in the order the bits above name them.
group1recordpresent.group1 setThe values of group 1, where the flag says they follow.
group1.whichu32Says which of the group’s values follow, one bit each, lowest first.
group1.valuescount in the bits set in which × bytesThe values themselves, four bytes each, in the order the bits above name them.
group2recordpresent.group2 setThe values of group 2, where the flag says they follow.
group2.whichu32Says which of the group’s values follow, one bit each, lowest first.
group2.valuescount in the bits set in which × bytesThe values themselves, four bytes each, in the order the bits above name them.
group3recordpresent.group3 setThe values of group 3, where the flag says they follow.
group3.whichu32Says which of the group’s values follow, one bit each, lowest first.
group3.valuescount in the bits set in which × bytesThe values themselves, four bytes each, in the order the bits above name them.
group4recordpresent.group4 setThe values of group 4, where the flag says they follow.
group4.whichu32Says which of the group’s values follow, one bit each, lowest first.
group4.valuescount in the bits set in which × bytesThe values themselves, four bytes each, in the order the bits above name them.

Seat

One place at the match: who holds it, what they brought, and what the client shows for them.

Definition.

In every range of this book

FieldTypeWhat it is
playeri64Which player holds the place, or a negative number where it stands empty. It has a player identifier’s width.
levelu16The level the seat holder has reached across matches.
summoneru32The spell in one of the seat’s summoner slots, as the name hash of the spell; drawn as its icon on the loading screen. It has no effect on a bot’s seat.
otherSummoneru32The spell in the other.

SpeedParams

How a unit is made to travel, in place of what a receiving end would otherwise choose for it.

Definition.

In every range of this book

FieldTypeWhat it is
speedf32How fast the unit travels along the path, in world units a second, standing in for its own pace.
gravityf32How sharply the unit arcs through the air along the way. Zero where it keeps to the ground.
fromXf32Where the unit starts, along one ground axis, in world units. It holds the same place the path’s first point states, and is carried whether the unit arcs or not.
fromZf32Where it starts, along the other.

SpellCast

One casting of a spell: which spell, who cast it, at what, and the timings a client plays it out with.

Definition.

In every range of this book

FieldTypeWhat it is
sizeu16How many bytes the casting takes, this field included. Where it differs from the bytes the casting takes, a client still gives the cast its spell.
spellu32Which spell, by the number its name gives, as Objects and identifiers works it out.
castu32The name this casting answers to, so later messages can name it.
levelu8The rank the spell stands at, counting from 1: a spell at its first rank carries 1.
attackSpeedf32What the caster’s attack rhythm is scaled by while this runs.
casteru32The unit casting.
chainOwneru32The unit the casting is credited to, where a chain of casts leads back to another.
targetXf32Where the casting is aimed, along one ground axis, in world units.
targetYf32Where the casting is aimed, in height, in world units.
targetZf32Where the casting is aimed, along the other ground axis, in world units.
targetEndXf32Where the casting stops being aimed, for a spell that sweeps, along one ground axis, in world units.
targetEndYf32Where the casting stops being aimed, for a spell that sweeps, in height, in world units.
targetEndZf32Where the casting stops being aimed, for a spell that sweeps, along the other ground axis, in world units.
hitCountu8How many units the casting names as hit, at most 32. A client sets no bound of its own.
hitscount in hitCount × SpellHitThe units the casting hits, each a unit then a one-byte result.
castTimef32How long the casting takes before it takes effect, in seconds.
extraCastTimef32What is added to that, in seconds.
totalTimef32How long the whole casting runs, in seconds.
cooldownf32How long until the spell can be cast again, in seconds.
how1-byte bits
how.basicAttackbit 0Set where the casting is the caster’s own swing rather than a spell.
how.secondBasicAttackbit 1Set where the swing is the second of a pair.
how.unusedbit 2 to 7A client reads nothing here; a server writes zero.
slotu8Which of the caster’s slots the spell sits in.
costf32What the casting spends from the caster’s resource.
launchXf32Where what the casting throws leaves from, along one ground axis, in world units.
launchYf32Where what the casting throws leaves from, in height, in world units.
launchZf32Where what the casting throws leaves from, along the other ground axis, in world units.

SpellHit

One unit a casting names as hit, and how it was hit.

Definition.

In every range of this book

FieldTypeWhat it is
unitu32The unit hit.
resultu8How the hit landed.