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.

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

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.

In 0.8.13.26–0.9.22.13

A client reads nothing of EnterSight.

In 0.9.25.24–1.0.0.24

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

Resolving a path

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

In 0.8.13.26–0.9.22.13

A movement with no points empties the unit’s path.

In 0.9.25.24–1.0.0.24

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

In 0.9.25.24–1.0.0.24

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

The origin

A server needs no origin.

Relocating rather than walking

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

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.

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.

In 0.9.22.14–1.0.0.24

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 0.9.25.24–1.0.0.24

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

In 0.9.25.24–1.0.0.24

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

Marking the ground

NavigationFlags marks the ground within circles.

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 0.9.22.14–1.0.0.24

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.

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 0.9.22.14–1.0.0.24

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.

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 every range of this book

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.

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 0.9.22.14–1.0.0.24

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

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.

FaceDirection

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

Definition.

In 0.8.13.26–0.9.22.13

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

Where towardX and towardZ are both zero, a client does nothing.

FieldTypeWhat it is
towardXf32The direction faced, along one ground axis.
towardYf32The direction faced, in height. A client reads nothing here.
towardZf32The direction faced, along the other ground axis.
Vectors (1)

one-on-0-8-13-26

In 0.9.22.14–1.0.0.24

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

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.

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
0.8.13.26–0.9.22.1396
0.9.22.14–1.0.0.2493
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 (1)

one-on-0-8-13-26

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 0.9.22.14–0.9.25.35

Command 127 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.
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-0-9-25-24

In 0.9.25.36–1.0.0.24

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.

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 0.8.13.26–0.9.22.13

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

A client acknowledges nothing and drops no path as stale. A body shorter than 4 bytes leaves a client failing.

FieldTypeWhat it is
syncIdi32A client reads nothing here and answers nothing.
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-0-8-13-26

In 0.9.22.14–1.0.0.24

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.

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 0.8.13.26–0.9.22.13

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

A client acknowledges nothing and drops no path as stale. No unit to follow is carried.

FieldTypeWhat it is
syncIdi32A client reads nothing here and answers nothing.
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-0-8-13-26

In 0.9.22.14–1.0.0.24

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.

UnitStopped

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

Definition.

In 0.8.13.26–0.9.22.13

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

It carries no sync id: a client always applies the position and facing, then stops the unit.

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.
Vectors (1)

one-on-0-8-13-26

In 0.9.22.14–1.0.0.24

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.
Vectors (1)

one-on-0-9-22-14