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

Movement

A unit is moved by a path: a run of points on the ground plane, the first of which is where the unit is and the last where it is going.

Coordinates

A path names one axis of the ground plane and then the other. The height of a point is not carried, and a receiving end takes it from the ground beneath.

In 1.0.0.25–1.0.0.80

A path carries each point as two world floats (see Space), stated against no origin and no other point.

In 1.0.0.96–1.0.0.129

Movement and MovementAtSpeed are compact: a path is a run of integer points, each stated against the one before it, while positions elsewhere are world floats covering a far larger range (see Space). The two are related by an origin and a step:

encoded = truncate_toward_zero((world - origin) / 2)
world   = origin + 2 * encoded

A path resolves a position to two world units, rounded toward the origin.

Other shapes

MovementAtSpeed carries the same points as Movement with the terms of the travel stated before them, and WaypointGroupAtSpeed is what carries it. Other messages carry their points as world floats, and their definitions say so. The message carrying a movement says which shape it holds.

A unit coming into sight while standing carries its place and facing in EnterSight instead.

Resolving a path

In 1.0.0.96–1.0.0.129

A path is read into points by taking the first as it stands and then, for each point after it, taking each coordinate either as it stands or by adding the step to the coordinate of the point before. The point before means as that point resolved, not what the wire carried for it, which matters wherever a coordinate stated afresh is followed by one stated as a step.

conformance/vectors/algorithm records the resolution of the paths the movement vectors carry. They give decoded fields and the points they resolve to.

What a group can carry

A sending end MUST NOT send a movement with no points; a receiving end refuses it.

A client reads nothing after a refused movement in its group, and still answers the group.

In 1.0.0.96–1.0.0.129

A client does not read the points of a movement whose unit it does not hold, and so misreads every later movement in the group. A server MUST name in a group only units the client holds.

The origin

In 1.0.0.25–1.0.0.60

A server needs no origin.

In 1.0.0.96–1.0.0.129

The origin is the midpoint of the bounds a map’s navigation data covers, truncated to a whole number on each axis. Nothing on the wire carries it. Both ends hold it before a match begins, and an end holding a different one misplaces every position it reads.

A server MUST take the origin from the map it is hosting. A server MUST NOT derive the origin from anything a client sent.

Space gives the origin of each map, keyed by the map number a server sends in VersionSync. A server hosting a map the table leaves out takes its origin from that map’s navigation data.

Relocating rather than walking

In 1.0.0.25–1.0.0.60

A path carries no flag and no token, so nothing relocates a unit: every path is walked.

In 1.0.0.79–1.0.0.129

A client answers each group with one WaypointAck, listing every unit in it that carried a token, with an empty list where none did. A server MAY ignore it.

In 1.0.0.96–1.0.0.129

A movement whose flag says so carries a token beside the unit (see Movement). A receiving end remembers one token for each unit, beginning at zero.

A token unlike the remembered one puts the unit where the path begins rather than walking it there, but only where the unit is far enough away to warrant it: either ground axis differing by more than fifty world units, taken on its own. Fifty exactly does not, and height is not weighed.

A token the receiving end already holds changes nothing, and neither does an unfamiliar one arriving while the unit is near enough. In both the path is followed and the remembered token kept, so a token is taken up only once it has moved something.

A client leaves the flag clear in what it sends, so a token travels only from a server.

What a client asks for and what a server answers

An order from a client is a request: what a unit does is whatever the server sends back.

A client does not move its own champion on a right click by itself: the champion moves only along a path a server sends.

In 1.0.0.25–1.0.0.62

An order carries no path: only its destination, in world floats. A server works out the route itself and sends it in the path that answers the order.

A server moves the champion by answering the MoveOrder with a WaypointGroup, and the client returns that group’s syncId in a WaypointAck (see Ordering).

In 1.0.0.25–1.0.0.126

A client takes a WaypointGroup or a WaypointGroupAtSpeed on channels 2, 3 and 4 alike.

In 1.0.0.25–1.0.0.60

A client sends the WaypointAck before reading any movement in the group, and lists no units in it.

In 1.0.0.96–1.0.0.129

A client sends the path it would take, with its destination beside it in world floats. A WaypointGroup carrying that path back unchanged moves the champion along it.

Marking the ground

NavigationFlags marks the ground within circles.

In 1.0.0.126

A server MAY send NavigationFlags. A client replaces the circles it holds with those it carries, and answers with its syncId.

Messages

Each message of this system in this book, with each layout it has across the book’s patches and every note its definition carries. A layout is the message’s body, after the header its channel’s family puts in front (see Messages).

WaypointGroupAtSpeed

What a server sends to move units along paths of its own choosing, stating how each one travels rather than leaving it to the receiving end. It is what carries a unit thrown, dragged, or carried along by something other than its own walking. The header names no object: it carries zero.

Definition.

In 1.0.0.25–1.0.0.57

Command 122 on events, sent by the server, reliable.

A client answers each with WaypointAck, naming this sync id alone, before it reads any movement and whatever movementCount is.

FieldTypeWhat it is
syncIdu32Names this statement of movement.
movementCountu16How many units follow. A client reads it as signed, so a count above 32767 counts as none, as zero does.
movementscount in movementCount × MovementAtSpeedWhat each unit is told to do.
Vectors (1)

one-on-1-0-0-25

In 1.0.0.58–1.0.0.60

Command 122 on events, sent by the server, reliable.

A client answers each with WaypointAck, naming this sync id, before it reads any path.

FieldTypeWhat it is
syncIdu32Names this statement of movement.
movementCountu16How many units follow. A client reads it as signed, so a count above 32767 counts as none, as zero does.
movementscount in movementCount × MovementAtSpeedWhat each unit is told to do.
Vectors (1)

one-on-1-0-0-58

In 1.0.0.61–1.0.0.127

Carried on events, sent by the server, reliable, under these commands:

BuildsCommand
1.0.0.61–1.0.0.62122
1.0.0.63–1.0.0.73125
1.0.0.74–1.0.0.80126
1.0.0.81126
1.0.0.82130
1.0.0.83–1.0.0.96130
1.0.0.97–1.0.0.102131
1.0.0.103–1.0.0.106133
1.0.0.107–1.0.0.108134
1.0.0.109135
1.0.0.110–1.0.0.11698
1.0.0.117–1.0.0.11899
1.0.0.119–1.0.0.123100
1.0.0.124–1.0.0.127103

A client answers each with WaypointAck, naming this sync id and listing, in order, each unit whose path carried a teleport token with that token.

FieldTypeWhat it is
syncIdu32Names this statement of movement.
movementCountu16How many units follow. A client reads it as signed, so a count above 32767 counts as none, as zero does.
movementscount in movementCount × MovementAtSpeedWhat each unit is told to do.
Vectors (17)

one-on-1-0-0-61, one-on-1-0-0-72, one-on-1-0-0-75, one-on-1-0-0-79, one-on-1-0-0-81, one-on-1-0-0-82, one-on-1-0-0-96, one-on-1-0-0-99, one-on-1-0-0-106, one-on-1-0-0-107, one-on-1-0-0-108, one-on-1-0-0-109, one-on-1-0-0-110, one-on-1-0-0-116, one-on-1-0-0-117, one-on-1-0-0-123, a-dash-on-1-0-0-126

In 1.0.0.128–1.0.0.129

Command 103 on events, sent by the server, reliable.

FieldTypeWhat it is
syncIdu32Names this statement of movement.
movementCountu16How many units follow. A client reads it as signed, so a count above 32767 carries none.
movementscount in movementCount × MovementAtSpeedWhat each unit is told to do.

WaypointAck

What a client sends once it has taken in a group of movements, naming which group. The header names no object: it carries zero.

Definition.

In 1.0.0.25–1.0.0.62

Command 120 on requests, sent by the client, unsequenced.

What a client sends for every WaypointGroup it takes, and for every WaypointGroupAtSpeed, Path and PathWithSpeed, as it takes it and before it moves any unit. The header names no object: it carries zero.

FieldTypeWhat it is
syncIdu32The number of the group it answers, as the group named itself.
Vectors (1)

one-on-1-0-0-61

In 1.0.0.63–1.0.0.78

Carried on requests, sent by the client, unsequenced, under these commands:

BuildsCommand
1.0.0.63–1.0.0.73123
1.0.0.74–1.0.0.78124

What a client sends for every WaypointGroup it takes, and for every WaypointGroupAtSpeed, as it takes it and before it moves any unit. The header names no object: it carries zero.

FieldTypeWhat it is
syncIdu32The number of the group it answers, as the group named itself.
Vectors (2)

one-on-1-0-0-72, one-on-1-0-0-75

In 1.0.0.79–1.0.0.127

Carried on requests, sent by the client, unsequenced, under these commands:

BuildsCommand
1.0.0.79–1.0.0.81124
1.0.0.82–1.0.0.96128
1.0.0.97–1.0.0.102129
1.0.0.103–1.0.0.106131
1.0.0.107–1.0.0.108132
1.0.0.109133
1.0.0.110115
1.0.0.111–1.0.0.116116
1.0.0.117–1.0.0.118117
1.0.0.119–1.0.0.123118
1.0.0.124–1.0.0.127122

What a client sends for every WaypointGroup it takes, and for every WaypointGroupAtSpeed. The header names no object: it carries zero. It lists the units the group asked it to relocate.

FieldTypeWhat it is
syncIdu32The number of the group it answers, as the group named itself.
relocationCountu8How many relocations follow: answering a group, how many of its paths carried a teleport token. Answering a path for one unit, a client sends only syncId and this byte, unwritten, on the transient channel, and no relocations, so a server reads nothing in it there.
relocationscount in relocationCount × recordEach of those, in the group’s order.
relocations[].unitu32The unit the token belonged to.
relocations[].tokenu8The token that arrived with it.
Vectors (11)

one-on-1-0-0-81, one-on-1-0-0-96, one-on-1-0-0-99, one-on-1-0-0-106, one-on-1-0-0-108, one-on-1-0-0-109, one-on-1-0-0-110, one-on-1-0-0-116, one-on-1-0-0-117, one-on-1-0-0-123, one-on-1-0-0-126

In 1.0.0.128–1.0.0.129

Command 122 on requests, sent by the client, unsequenced.

It lists the units the group asked it to relocate.

FieldTypeWhat it is
syncIdu32Which group is being acknowledged, as the group named itself.
relocationCountu8How many relocations follow. Answering WaypointGroup a client counts them; answering a path for one unit it sends only syncId and this byte, unwritten, on the transient channel, and no relocations, so a server reads nothing in it there.
relocationscount in relocationCount × record
relocations[].unitu32The unit the token belonged to.
relocations[].tokenu8The token that arrived with it.

MoveOrder

What a client sends to tell a server what it wants a unit to do. The header names the sender’s champion.

Definition.

In 1.0.0.25–1.0.0.62

Command 20 on requests, sent by the client, reliable.

What a client sends as its player gives an order. It carries no path. The header names the unit ordered: the player’s champion, or a unit it controls alongside, which gets its own copy of the order.

FieldTypeWhat it is
kindu8What the order is. Values: 2 moveToPosition, 3 attack, 10 stop.
targetXf32Where the order points, along one ground axis, in world units.
targetYf32The height of the place ordered.
targetZf32Where the order points, along the other ground axis.
targetu32The network object the order is aimed at, or zero where it is aimed at open ground.
Vectors (1)

one-on-1-0-0-61

In 1.0.0.63–1.0.0.78

Command 20 on requests, sent by the client, reliable.

What a client sends as its player gives an order. The header names the unit ordered: the player’s champion, or a unit it controls alongside, which gets its own copy of the order. The path it carries is what the client would take; where the unit actually goes is whatever the server answers with.

FieldTypePresent whenWhat it is
kindu8What the order is. Values: 2 moveToPosition, 3 attack, 10 stop.
targetXf32Where the order points, along one ground axis. Carried in world units rather than in the units a path uses.
targetYf32The height of the place ordered.
targetZf32Where the order points, along the other ground axis.
targetu32The network object the order is aimed at, or zero where it is aimed at open ground.
movementrecordEvery point after the first.
movement.header4-byte bits
movement.header.hasTeleportTokenbit 0Set where a token sits beside the unit. A client sends it clear, so a token travels only from a server.
movement.header.unusedbit 1 to 15Unused; a client reads nothing here.
movement.header.pointCountbit 16 to 30How many points the path holds. A client takes none, or more than 2048, as no path and reads nothing more of the movement.
movement.header.unusedHighbit 31Unused; a client reads nothing here.
movement.pathrecordEverything the movement carries beyond its first byte.
movement.path.unitu32The unit the path belongs to.
movement.path.teleportTokenu8header.hasTeleportToken setTells one relocation from another. Movement says what a receiving end does with it.
movement.path.pointscount in header.pointCount × recordEvery point of the path, each stated in world units.
movement.path.points[].xf32Along one ground axis, in world units.
movement.path.points[].zf32Along the other, in world units.
Vectors (2)

another-on-1-0-0-75, one-on-1-0-0-75

In 1.0.0.79–1.0.0.82

Command 20 on requests, sent by the client, reliable.

What a client sends as its player gives an order. The header names the unit ordered: the player’s champion, or a unit it controls alongside, which gets its own copy of the order. The path it carries is what the client would take; where the unit actually goes is whatever the server answers with.

FieldTypePresent whenWhat it is
kindu8What the order is. Values: 2 moveToPosition, 3 attack, 10 stop.
targetXf32Where the order points, along one ground axis. Carried in world units rather than in the units a path uses.
targetYf32The height of the place ordered.
targetZf32Where the order points, along the other ground axis.
targetu32The network object the order is aimed at, or zero where it is aimed at open ground.
movementrecordEvery point after the first.
movement.header4-byte bits
movement.header.hasTeleportTokenbit 0Set where a token sits beside the unit. A client sends it clear, so a token travels only from a server.
movement.header.unusedbit 1 to 15Unused; a client reads nothing here.
movement.header.pointCountbit 16 to 30How many points the path holds. A client takes none, or more than 2048, as no path and reads nothing more of the movement.
movement.header.unusedHighbit 31Unused; a client reads nothing here.
movement.pathrecordEverything the movement carries beyond its first byte.
movement.path.unitu32The unit the path belongs to.
movement.path.teleportTokenu8header.hasTeleportToken setTells one relocation from another. Movement says what a receiving end does with it.
movement.path.pointscount in header.pointCount × recordEvery point of the path, each stated whole. A client reads them even for a unit it does not hold.
movement.path.points[].xi16Along one ground axis, in the units Movement gives.
movement.path.points[].zi16Along the other.
Vectors (2)

another-on-1-0-0-82, one-on-1-0-0-82

In 1.0.0.83–1.0.0.127

Carried on requests, sent by the client, reliable, under these commands:

BuildsCommand
1.0.0.83–1.0.0.10920
1.0.0.110110
1.0.0.111–1.0.0.116111
1.0.0.117–1.0.0.118112
1.0.0.119–1.0.0.123113
1.0.0.124–1.0.0.127117

What a client sends as its player gives an order. The header names the unit ordered: the player’s champion, or a unit it controls alongside, which gets its own copy of the order. The path it carries is what the client would take; where the unit actually goes is whatever the server answers with.

FieldTypePresent whenWhat it is
kindu8What the order is. Values: 2 moveToPosition, 3 attack, 10 stop.
targetXf32Where the order points, along one ground axis. Carried in world units rather than in the units a path uses.
targetYf32The height of the place ordered.
targetZf32Where the order points, along the other ground axis.
targetu32The network object the order is aimed at, or zero where it is aimed at open ground.
movementrecordEvery point after the first.
movement.header4-byte bits
movement.header.hasTeleportTokenbit 0Set where a token sits beside the unit. A client sends it clear, so a token travels only from a server.
movement.header.unusedbit 1 to 15Unused; a client reads nothing here.
movement.header.pointCountbit 16 to 22How many points the path holds. A client sends none for an order that takes no path, and then only the unit follows it.
movement.header.unusedHighbit 23 to 31Unused; a client reads nothing here.
movement.pathrecordEverything the movement carries beyond its first byte.
movement.path.unitu32The unit the path belongs to.
movement.path.teleportTokenu8header.hasTeleportToken setTells one relocation from another. Movement says what a receiving end does with it.
movement.path.flagsbits, count in header.pointCount minus 1One pair for each point after the first, in the order the points follow. Pairs run on from the low bits of the first byte, and the run reaches to the byte holding the last pair. The bits past it are clear.
movement.path.flags.xIsStepbit 0Set where this point states its first coordinate as a step.
movement.path.flags.zIsStepbit 1Set where this point states its second coordinate as a step.
movement.path.firstXi16header.pointCount setThe first point, along one ground axis, in the units Movement gives.
movement.path.firstZi16header.pointCount setThe first point, along the other.
movement.path.stepscount in header.pointCount minus 1 × record
movement.path.steps[].xStepi8flags[step].xIsStep setAdded to the first coordinate of the point before, as that point resolved.
movement.path.steps[].xWholei16flags[step].xIsStep = 0The first coordinate, stated without reference to the point before.
movement.path.steps[].zStepi8flags[step].zIsStep setAdded to the second coordinate of the point before, as that point resolved.
movement.path.steps[].zWholei16flags[step].zIsStep = 0The second coordinate, stated without reference to the point before.
Vectors (27)

a-path-of-3-points-on-1-0-0-103, hold-on-1-0-0-103, one-on-1-0-0-103, move-to-position-on-1-0-0-109, a-path-of-3-points-on-1-0-0-110, hold-on-1-0-0-110, move-to-position-on-1-0-0-110, one-on-1-0-0-110, a-path-of-3-points-on-1-0-0-111, hold-on-1-0-0-111, one-on-1-0-0-111, move-to-position-on-1-0-0-116, a-path-of-3-points-on-1-0-0-117, hold-on-1-0-0-117, one-on-1-0-0-117, move-to-position-on-1-0-0-117, a-path-of-3-points-on-1-0-0-119, hold-on-1-0-0-119, one-on-1-0-0-119, move-to-position-on-1-0-0-123, a-path-of-3-points-on-1-0-0-124, hold-on-1-0-0-124, one-on-1-0-0-124, a-path-of-10-points-on-1-0-0-126, a-path-of-4-points-on-1-0-0-126, a-path-of-5-points-on-1-0-0-126, one-on-1-0-0-126

In 1.0.0.128–1.0.0.129

Command 117 on requests, sent by the client, reliable.

The path it carries is what the client would take; where the unit actually goes is whatever the server answers with.

FieldTypePresent whenWhat it is
kindu8What is being asked for. Values: 2 moveToPosition, 3 attack, 10 stop.
targetXf32Where the order points, along one ground axis. Carried in world units rather than in the units a path uses.
targetYf32The height of the place ordered.
targetZf32Where the order points, along the other.
targetu32The network object the order is aimed at, or zero where it is aimed at open ground.
movementrecord
movement.header4-byte bits
movement.header.hasTeleportTokenbit 0Set where a token sits beside the unit. A client sends it clear, so a token travels only from a server.
movement.header.unusedbit 1 to 15Unused; a client reads nothing here.
movement.header.pointCountbit 16 to 22How many points the path holds. A client sends none for an order that takes no path, and then only the unit follows it.
movement.header.unusedHighbit 23 to 31Unused; a client reads nothing here.
movement.pathrecordEverything the movement carries beyond its first byte.
movement.path.unitu32The unit the path belongs to.
movement.path.teleportTokenu8header.hasTeleportToken setTells one relocation from another. Movement says what a receiving end does with it.
movement.path.flagsbits, count in header.pointCount minus 1One pair for each point after the first, in the order the points follow. Pairs run on from the low bits of the first byte, and the run reaches to the byte holding the last pair. The bits past it are clear.
movement.path.flags.xIsStepbit 0Set where this point states its first coordinate as a step.
movement.path.flags.zIsStepbit 1Set where this point states its second coordinate as a step.
movement.path.firstXi16header.pointCount setThe first point, along one ground axis, in the units Movement gives.
movement.path.firstZi16header.pointCount setThe first point, along the other.
movement.path.stepscount in header.pointCount minus 1 × record
movement.path.steps[].xStepi8flags[step].xIsStep setAdded to the first coordinate of the point before, as that point resolved.
movement.path.steps[].xWholei16flags[step].xIsStep = 0The first coordinate, stated without reference to the point before.
movement.path.steps[].zStepi8flags[step].zIsStep setAdded to the second coordinate of the point before, as that point resolved.
movement.path.steps[].zWholei16flags[step].zIsStep = 0The second coordinate, stated without reference to the point before.
Vectors (3)

a-path-of-3-points-on-1-0-0-128, hold-on-1-0-0-128, one-on-1-0-0-128

WaypointGroup

What a server sends to move units. It carries a number a client returns to say it has taken the group in. The header carries zero or names the object this is about, and a client accepts either.

Definition.

In 1.0.0.25–1.0.0.127

Carried on transient, sent by the server, unreliable, under these commands:

BuildsCommand
1.0.0.25–1.0.0.57121
1.0.0.58–1.0.0.60121
1.0.0.61–1.0.0.62121
1.0.0.63–1.0.0.73124
1.0.0.74–1.0.0.80125
1.0.0.81125
1.0.0.82129
1.0.0.83–1.0.0.96129
1.0.0.97–1.0.0.102130
1.0.0.103–1.0.0.106132
1.0.0.107–1.0.0.108133
1.0.0.109134
1.0.0.110–1.0.0.11695
1.0.0.117–1.0.0.11896
1.0.0.119–1.0.0.12397
1.0.0.124–1.0.0.127100

What a server sends to set units walking paths, which each walks at its own speed.

FieldTypeWhat it is
syncIdu32The number of this statement; a client applies a path to a unit only where it is not behind the last the unit took. A client returns it in WaypointAck to say the group arrived.
movementCountu16How many paths follow, one for each unit. A client reads it as signed, so a count above 32767 counts as none, as zero does, and a client still answers.
movementscount in movementCount × MovementOne path for each unit.
Vectors (20)

one-on-1-0-0-25, one-on-1-0-0-58, one-on-1-0-0-61, one-on-1-0-0-72, one-on-1-0-0-75, one-on-1-0-0-79, one-on-1-0-0-81, one-on-1-0-0-82, one-on-1-0-0-96, one-on-1-0-0-99, one-on-1-0-0-106, one-on-1-0-0-108, one-on-1-0-0-109, one-on-1-0-0-116, one-on-1-0-0-117, one-on-1-0-0-123, a-path-of-10-points-on-1-0-0-126, a-path-of-4-points-on-1-0-0-126, a-path-of-5-points-on-1-0-0-126, one-on-1-0-0-126

In 1.0.0.128–1.0.0.129

Command 100 on transient, sent by the server, unreliable.

FieldTypeWhat it is
syncIdu32Names this group. A client returns it to say the group arrived.
movementCountu16How many units the group moves. A client reads it as signed, so a count above 32767 carries none.
movementscount in movementCount × Movement

NavigationFlags

What a server sends to mark the ground within circles, in place of the circles it marked before: each circle’s flags apply to the ground within it. The header carries zero.

Definition.

In 1.0.0.108–1.0.0.110

Carried on events, sent by the server, reliable, under these commands:

BuildsCommand
1.0.0.108204
1.0.0.109205
1.0.0.11067

A client clears every circle it holds before marking these, and answers each with a message to the server under command 32 whose body is this sync id alone.

FieldTypeWhat it is
countu16The count of circles that follow. A client reads that many whatever the payload holds.
syncIdi32A number naming this marking.
circlescount in count × recordThe circles.
circles[].xf32The circle’s centre, along one ground axis, in world units.
circles[].zf32The circle’s centre, along the other ground axis, in world units.
circles[].radiusf32Its radius, in world units. A circle of radius 1000 or more marks nothing.
circles[].flagsu32The flags to add to each cell. Only the low 16 bits take effect.
Vectors (3)

one-on-1-0-0-108, one-on-1-0-0-109, one-on-1-0-0-110

In 1.0.0.111–1.0.0.127

Carried on events, sent by the server, reliable, under these commands:

BuildsCommand
1.0.0.111–1.0.0.11667
1.0.0.117–1.0.0.11868
1.0.0.119–1.0.0.12369
1.0.0.124–1.0.0.12771

A client clears every circle it holds before marking these, and answers each with a message to the server under command 32 whose body is this sync id alone.

FieldTypeWhat it is
countu16The count of circles that follow.
syncIdi32A number naming this marking.
circlescount in count × recordThe circles.
circles[].xf32The circle’s centre, along one ground axis, in world units.
circles[].zf32The circle’s centre, along the other ground axis, in world units.
circles[].radiusf32Its radius, in world units. A circle of radius 1000 or more marks nothing.
circles[].flagsu32The flags to add to each cell. Only the low 16 bits take effect.
Vectors (4)

one-on-1-0-0-116, one-on-1-0-0-117, one-on-1-0-0-123, two-circles-on-1-0-0-126

In 1.0.0.128–1.0.0.129

Command 71 on events, sent by the server, reliable.

A client fails on the first of these in a match: it stops, marking no circle and sending no answer.

FieldTypeWhat it is
countu16The count of circles that follow.
syncIdi32A number naming this marking.
circlescount in count × recordThe circles.
circles[].xf32The circle’s centre, along one ground axis, in world units.
circles[].zf32The circle’s centre, along the other ground axis, in world units.
circles[].radiusf32Its radius, in world units. A circle of radius 1000 or more marks nothing.
circles[].flagsu32The flags to add to each cell. Only the low 16 bits take effect.

FaceDirection

What a server sends to turn a unit to face a direction. The header names the unit acting.

Definition.

In 1.0.0.25–1.0.0.127

Carried on events, sent by the server, reliable, under these commands:

BuildsCommand
1.0.0.25–1.0.0.6293
1.0.0.63–1.0.0.7399
1.0.0.74–1.0.0.81100
1.0.0.82–1.0.0.96104
1.0.0.97–1.0.0.102105
1.0.0.103–1.0.0.106107
1.0.0.107–1.0.0.108108
1.0.0.109109
1.0.0.110–1.0.0.11679
1.0.0.117–1.0.0.11880
1.0.0.119–1.0.0.12381
1.0.0.124–1.0.0.12783

Where towardX and towardZ are both zero, a client does not turn the unit at once, but it still keeps the zero direction as the one the unit is to face. What follows from that is not recorded.

FieldTypeWhat it is
towardXf32The direction faced, along one ground axis.
towardYf32The direction faced, in height.
towardZf32The direction faced, along the other ground axis.
Vectors (13)

one-on-1-0-0-61, one-on-1-0-0-72, one-on-1-0-0-75, one-on-1-0-0-81, one-on-1-0-0-96, one-on-1-0-0-99, one-on-1-0-0-106, one-on-1-0-0-108, one-on-1-0-0-109, one-on-1-0-0-116, one-on-1-0-0-117, one-on-1-0-0-123, facing-on-1-0-0-126

In 1.0.0.128–1.0.0.129

Command 83 on events, sent by the server, reliable.

FieldTypeWhat it is
towardXf32The direction faced, along one ground axis.
towardYf32The direction faced, in height.
towardZf32The direction faced, along the other ground axis.

FacePosition

What a client sends when a script it runs turns a unit to face a point. A server need do nothing with it. The header names the unit turned.

Definition.

In every range of this book

Carried on requests, sent by the client, reliable, under these commands:

BuildsCommand
1.0.0.25–1.0.0.6293
1.0.0.63–1.0.0.7399
1.0.0.74–1.0.0.81100
1.0.0.82–1.0.0.96104
1.0.0.97–1.0.0.102105
1.0.0.103–1.0.0.106107
1.0.0.107–1.0.0.108108
1.0.0.109109
1.0.0.110–1.0.0.11679
1.0.0.117–1.0.0.11880
1.0.0.119–1.0.0.12381
1.0.0.124–1.0.0.12983
FieldTypeWhat it is
directionXf32Which way the unit now faces, as a direction of length one, along one ground axis.
directionYf32Which way the unit now faces, as a direction of length one, in height.
directionZf32Which way the unit now faces, as a direction of length one, along the other ground axis.
Vectors (12)

one-on-1-0-0-61, one-on-1-0-0-72, one-on-1-0-0-75, one-on-1-0-0-81, one-on-1-0-0-96, one-on-1-0-0-99, one-on-1-0-0-106, one-on-1-0-0-108, one-on-1-0-0-109, one-on-1-0-0-116, one-on-1-0-0-117, one-on-1-0-0-123

MovementBounds

What a server sends to set a circle that a client keeps its view or its champion’s orders within. The header carries zero.

Definition.

In 1.0.0.25–1.0.0.62

Command 126 on events, sent by the server, reliable.

A client keeps its camera within the circle, and nothing else.

FieldTypeWhat it is
xf32The circle’s centre, in world units.
yf32The centre’s height, in world units. A client does not use it.
zf32The circle’s centre, in world units.
radiusf32The circle’s radius, in world units. Zero lifts the bounds; a negative radius counts as zero.
Vectors (1)

one-on-1-0-0-61

In 1.0.0.63–1.0.0.109

Carried on events, sent by the server, reliable, under these commands:

BuildsCommand
1.0.0.63–1.0.0.73129
1.0.0.74–1.0.0.81130
1.0.0.82–1.0.0.96134
1.0.0.97135
1.0.0.98–1.0.0.102136
1.0.0.103–1.0.0.106138
1.0.0.107–1.0.0.108139
1.0.0.109140

A client keeps its camera within the circle, and nothing else.

FieldTypeWhat it is
xf32The circle’s centre, in world units.
yf32The centre’s height, in world units.
zf32The circle’s centre, in world units.
radiusf32The circle’s radius, in world units. Zero lifts the bounds; a negative radius counts as zero.
Vectors (9)

one-on-1-0-0-72, one-on-1-0-0-75, one-on-1-0-0-81, one-on-1-0-0-96, one-on-1-0-0-97, one-on-1-0-0-99, one-on-1-0-0-106, one-on-1-0-0-108, one-on-1-0-0-109

In 1.0.0.110–1.0.0.125

Command 6 on events, sent by the server, reliable.

A client pulls an order to a point outside onto the circle’s edge before sending it, and drops an order at an object outside.

FieldTypeWhat it is
xf32The circle’s centre, in world units.
yf32The centre’s height, in world units.
zf32The circle’s centre, in world units.
radiusf32The circle’s radius, in world units. Zero lifts the bounds; a negative radius counts as zero.
camerau8A client takes any bit set here as camera set; a server writes zero.
Vectors (1)

one-on-1-0-0-110

In 1.0.0.126–1.0.0.127

Command 6 on events, sent by the server, reliable.

A client pulls an order to a point outside onto the circle’s edge before sending it, and drops an order at an object outside.

FieldTypeWhat it is
xf32The circle’s centre, in world units.
yf32The centre’s height, in world units.
zf32The circle’s centre, in world units.
radiusf32The circle’s radius, in world units. Zero lifts the bounds; a negative radius counts as zero.
camerau8Nonzero also keeps the client’s camera inside the circle, a negative radius counting as zero for it. The bounds on the champion’s orders apply whatever this holds.
Vectors (1)

a-circle-on-1-0-0-126

In 1.0.0.128–1.0.0.129

Command 6 on events, sent by the server, reliable.

A client pulls an order to a point outside onto the circle’s edge before sending it, and drops an order at an object outside.

FieldTypeWhat it is
xf32The circle’s centre, in world units.
yf32The centre’s height, in world units.
zf32The circle’s centre, in world units.
radiusf32The circle’s radius, in world units. Zero lifts the bounds; a negative radius counts as zero.
camerau8Set to keep the camera within the circle too. Clear leaves the camera as it was, bound or not. Any nonzero value sets it.

Path

What a server sends to set a unit walking along a path, facing the way it walks. The header names the unit.

Definition.

In 1.0.0.25–1.0.0.62

Command 77 on events, sent by the server, reliable.

A client answers every one at once, before applying it and whatever its sync id, unsequenced on the transient channel, with WaypointAck carrying this sync id. It applies it only where the sync id is not older than the last the unit took (as UnitStopped).

FieldTypeWhat it is
syncIdi32The unit’s movement count.
pointsto the end × recordThe path’s points, to the end of the message. A client takes the ground’s height for each, and passes over a remainder shorter than a point.
points[].xf32A point on the path, in world units.
points[].zf32A point on the path, in world units.
Vectors (1)

one-on-1-0-0-61

In 1.0.0.63–1.0.0.127

Carried on events, sent by the server, reliable, under these commands:

BuildsCommand
1.0.0.63–1.0.0.7383
1.0.0.74–1.0.0.8184
1.0.0.82–1.0.0.9687
1.0.0.97–1.0.0.10288
1.0.0.103–1.0.0.10689
1.0.0.107–1.0.0.10890
1.0.0.10991
1.0.0.110184
1.0.0.111–1.0.0.116185
1.0.0.117–1.0.0.118186
1.0.0.119–1.0.0.123187
1.0.0.124191
1.0.0.125192
1.0.0.126–1.0.0.127193

A client answers every one at once, before applying it, with WaypointAck: ten bytes holding this sync id and a last byte, where the relocation count sits, that is arbitrary and carries no meaning. A client answers every one at once, unsequenced on the transient channel, with ten bytes: WaypointAck’s command, a net id of zero, this sync id, and one byte that is arbitrary and carries no meaning. It applies it only where the sync id is not older than the last the unit took (as UnitStopped).

FieldTypeWhat it is
syncIdi32The unit’s movement count.
pointsto the end × recordThe path’s points, to the end of the message. A client takes the ground’s height for each, and passes over a remainder shorter than a point.
points[].xf32A point on the path, in world units.
points[].zf32A point on the path, in world units.
Vectors (15)

one-on-1-0-0-72, one-on-1-0-0-75, one-on-1-0-0-81, one-on-1-0-0-96, one-on-1-0-0-99, one-on-1-0-0-106, one-on-1-0-0-108, one-on-1-0-0-109, one-on-1-0-0-110, one-on-1-0-0-116, one-on-1-0-0-117, one-on-1-0-0-123, one-on-1-0-0-124, one-on-1-0-0-125, two-points-on-1-0-0-126

In 1.0.0.128–1.0.0.129

Command 193 on events, sent by the server, reliable.

A client answers every one at once, unsequenced on the transient channel, with ten bytes: WaypointAck’s command, a net id of zero, this sync id, and one byte that is arbitrary and carries no meaning. It applies it only where the sync id is not older than the last the unit took (as UnitStopped).

FieldTypeWhat it is
syncIdi32The unit’s movement count.
pointsto the end × recordThe path’s points, to the end of the message. A client takes the ground’s height for each.
points[].xf32A point on the path, in world units.
points[].zf32A point on the path, in world units.

PathWithSpeed

What a server sends to set a unit moving along a path at a speed of its own, perhaps in an arc. The header names the unit.

Definition.

In 1.0.0.25–1.0.0.62

Command 78 on events, sent by the server, reliable.

A client answers every one at once, before applying it and whatever its sync id, as it answers Path. It applies it only where the sync id is not older than the last the unit took, and does not count it as the last itself.

FieldTypeWhat it is
syncIdi32The unit’s movement count.
speedf32The speed to move at, in world units a second.
gravityf32The arc’s gravity, for a leap, in units of 150 world units a second squared. Zero or less moves the unit flat.
arcXf32Where the arc begins, in world units.
arcZf32Where the arc begins, in world units.
pointsto the end × recordThe path’s points, to the end of the message. A client takes the ground’s height for each, and passes over a remainder shorter than a point.
points[].xf32A point on the path, in world units.
points[].zf32A point on the path, in world units.
Vectors (1)

one-on-1-0-0-61

In 1.0.0.63–1.0.0.107

Carried on events, sent by the server, reliable, under these commands:

BuildsCommand
1.0.0.63–1.0.0.7384
1.0.0.74–1.0.0.8185
1.0.0.82–1.0.0.9688
1.0.0.97–1.0.0.10289
1.0.0.103–1.0.0.10690
1.0.0.10791

A client answers every one at once, before applying it, with WaypointAck: ten bytes holding this sync id and a last byte, where the relocation count sits, that is arbitrary and carries no meaning. A client answers every one at once, as it answers Path, whatever its sync id. It applies it only where the sync id is not older than the last the unit took (as UnitStopped). A unit can follow another unit.

FieldTypeWhat it is
syncIdi32The unit’s movement count.
speedf32The speed to move at, in world units a second.
gravityf32The arc’s gravity, for a leap, in units of 150 world units a second squared. Zero or less moves the unit flat.
arcXf32Where the arc begins, in world units.
arcZf32Where the arc begins, in world units.
pointsto the end × recordThe path’s points, to the end of the message. A client takes the ground’s height for each, and passes over a remainder shorter than a point.
points[].xf32A point on the path, in world units.
points[].zf32A point on the path, in world units.
Vectors (7)

one-on-1-0-0-72, one-on-1-0-0-75, one-on-1-0-0-81, one-on-1-0-0-96, one-on-1-0-0-99, one-on-1-0-0-106, one-on-1-0-0-107

In 1.0.0.108–1.0.0.109

Carried on events, sent by the server, reliable, under these commands:

BuildsCommand
1.0.0.10891
1.0.0.10992

A client answers every one at once, before applying it, with WaypointAck: ten bytes holding this sync id and a last byte, where the relocation count sits, that is arbitrary and carries no meaning. A client answers every one at once, as it answers Path, whatever its sync id. It applies it only where the sync id is not older than the last the unit took (as UnitStopped). A unit can follow another unit.

FieldTypeWhat it is
syncIdi32The unit’s movement count.
speedf32The speed to move at, in world units a second.
gravityf32The arc’s gravity, for a leap, in units of 150 world units a second squared. Zero or less moves the unit flat.
arcXf32Where the arc begins, in world units.
arcZf32Where the arc begins, in world units.
facingi8Which way the unit faces as it moves. Values: 0 along, 1 keep.
pointsto the end × recordThe path’s points, to the end of the message. A client takes the ground’s height for each, and passes over a remainder shorter than a point.
points[].xf32A point on the path, in world units.
points[].zf32A point on the path, in world units.
Vectors (2)

along-on-1-0-0-108, along-on-1-0-0-109

In 1.0.0.110

Command 129 on events, sent by the server, reliable.

A client answers every one at once, before applying it, with WaypointAck: ten bytes holding this sync id and a last byte, where the relocation count sits, that is arbitrary and carries no meaning. A client answers every one at once, as it answers Path, whatever its sync id. It applies it only where the sync id is not older than the last the unit took (as UnitStopped). A unit can follow another unit.

FieldTypeWhat it is
syncIdi32The unit’s movement count.
speedf32The speed to move at, in world units a second.
gravityf32The arc’s gravity, for a leap, in units of 150 world units a second squared. Zero or less moves the unit flat.
arcXf32Where the arc begins, in world units.
arcZf32Where the arc begins, in world units.
followu32A unit to follow, or zero for none.
followDistancef32How near to keep to it, in world units. It takes effect only where follow is not zero.
backOfff32How far to fall back from it, in world units. It takes effect only where follow is not zero.
facingi8Which way the unit faces as it moves. Values: 0 along, 1 keep.
pointsto the end × recordThe path’s points, to the end of the message. A client takes the ground’s height for each, and passes over a remainder shorter than a point.
points[].xf32A point on the path, in world units.
points[].zf32A point on the path, in world units.
Vectors (1)

along-on-1-0-0-110

In 1.0.0.111–1.0.0.127

Carried on events, sent by the server, reliable, under these commands:

BuildsCommand
1.0.0.111–1.0.0.116130
1.0.0.117–1.0.0.118131
1.0.0.119–1.0.0.123132
1.0.0.124–1.0.0.127136

A client answers every one at once, before applying it, with WaypointAck: ten bytes holding this sync id and a last byte, where the relocation count sits, that is arbitrary and carries no meaning. A client answers every one at once, as it answers Path, whatever its sync id. It applies it only where the sync id is not older than the last the unit took (as UnitStopped). A unit can follow another unit.

FieldTypeWhat it is
syncIdi32The unit’s movement count.
speedf32The speed to move at, in world units a second.
gravityf32The arc’s gravity, for a leap, in units of 150 world units a second squared. Zero or less moves the unit flat.
arcXf32Where the arc begins, in world units.
arcZf32Where the arc begins, in world units.
facingi8Which way the unit faces as it moves. Values: 0 along, 1 keep.
followu32A unit to follow, or zero for none.
followDistancef32How near to keep to it, in world units. It takes effect only where follow is not zero.
backOfff32How far to fall back from it, in world units. It takes effect only where follow is not zero.
travelTimef32How long the move takes, in seconds. It takes effect only where follow is not zero.
pointsto the end × recordThe path’s points, to the end of the message. A client takes the ground’s height for each, and passes over a remainder shorter than a point.
points[].xf32A point on the path, in world units.
points[].zf32A point on the path, in world units.
Vectors (4)

along-on-1-0-0-116, along-on-1-0-0-117, along-on-1-0-0-123, two-points-on-1-0-0-126

In 1.0.0.128–1.0.0.129

Command 136 on events, sent by the server, reliable.

A client answers every one at once, as it answers Path, whatever its sync id. It applies it only where the sync id is not older than the last the unit took (as UnitStopped). A unit can follow another unit.

FieldTypeWhat it is
syncIdi32The unit’s movement count.
speedf32The speed to move at, in world units a second.
gravityf32The arc’s gravity, for a leap, in units of 150 world units a second squared. Zero or less moves the unit flat.
arcXf32Where the arc begins, in world units.
arcZf32Where the arc begins, in world units.
facingi8Which way the unit faces as it moves. Values: 0 along, 1 keep.
followu32A unit to follow, or zero for none.
followDistancef32How near to keep to it, in world units. It takes effect only where follow is not zero.
backOfff32How far to fall back from it, in world units. It takes effect only where follow is not zero.
travelTimef32How long the move takes, in seconds. It takes effect only where follow is not zero.
pointsto the end × recordThe path’s points, to the end of the message. A client takes the ground’s height for each.
points[].xf32A point on the path, in world units.
points[].zf32A point on the path, in world units.

UnitStopped

What a server sends to stop a unit where it stands. The header names the unit.

Definition.

In 1.0.0.25–1.0.0.57

Command 24 on events, sent by the server, reliable.

A client applies it only where its sync id is not older than the last the unit took, counting a wrap: this message, PathWithSpeed and Path share one count per unit, starting at -1.

FieldTypeWhat it is
xf32Where the unit stands, in world units; a client keeps this height rather than the ground’s.
yf32Its height, in world units.
zf32Where it stands, in world units.
facingXf32The way it faces.
facingYf32The way it faces.
facingZf32The way it faces.
syncIdi32The unit’s movement count. A client drops the message where it is behind the last the unit took by less than 1073741824.

In 1.0.0.58–1.0.0.109

Command 24 on events, sent by the server, reliable.

A client applies it only where its sync id is not older than the last the unit took, counting a wrap: this message, Path, PathWithSpeed, WaypointGroup and WaypointGroupAtSpeed share one count per unit, starting at -1.

FieldTypeWhat it is
xf32Where the unit stands, in world units; a client keeps this height rather than the ground’s.
yf32Its height, in world units.
zf32Where it stands, in world units.
facingXf32The way it faces.
facingYf32The way it faces.
facingZf32The way it faces.
syncIdi32The unit’s movement count. A client drops the message where it is behind the last the unit took by less than 1073741824.
Vectors (2)

one-on-1-0-0-75, one-on-1-0-0-109

In 1.0.0.110–1.0.0.127

Carried on events, sent by the server, reliable, under these commands:

BuildsCommand
1.0.0.110–1.0.0.12350
1.0.0.124–1.0.0.12751

A client applies it only where its sync id is not older than the last the unit took, counting a wrap: this message, PathWithSpeed and Path share one count per unit, starting at -1.

FieldTypeWhat it is
xf32Where the unit stands, in world units; a client keeps this height rather than the ground’s.
yf32Its height, in world units.
zf32Where it stands, in world units.
facingXf32The way it faces.
facingYf32The way it faces.
facingZf32The way it faces.
syncIdi32The unit’s movement count. A client drops the message where it is behind the last the unit took by less than 1073741824.
Vectors (2)

one-on-1-0-0-123, stopped-on-1-0-0-126

In 1.0.0.128–1.0.0.129

Command 51 on events, sent by the server, reliable.

A client applies it only where its sync id is not older than the last the unit took, counting a wrap: this message, PathWithSpeed and Path share one count per unit, starting at -1.

FieldTypeWhat it is
xf32Where the unit stands, in world units; a client keeps this height rather than the ground’s.
yf32Its height, in world units.
zf32Where it stands, in world units.
facingXf32The way it faces.
facingYf32The way it faces.
facingZf32The way it faces.
syncIdi32The unit’s movement count.