Skip to content

Messages Movement

rebaserHEAD edited this page Oct 18, 2026 · 5 revisions

reference, committed verified 2026-10-18 bootstrap 5aae370

Every message in the Movement area: its opcode, direction, how far it is verified, and its fields.

Note

Generated from the message declarations at bootstrap 5aae370 by Tools/NexusTomorrow.ProtocolReference. Don't edit it by hand: change the declaration's documentation and regenerate.

Server to client

0x0070 Server0070

Opcode Direction Verified to
0x0070 server to client unverified
Field Bits Encoding
Unknown0 32 unsigned

0x0636 MovementControl

Gives the client control of a unit's movement.

Opcode Direction Verified to
0x0636 server to client fields
Field Bits Encoding Meaning
Ticket 32 unsigned A value the client sends straight back in MovementControlReceipt.
RebuildMovement 1 unsigned When set, the client rebuilds the movement state of the unit it moves from that unit's current state, at the current time.
UnitId 32 unsigned The unit to move. If it is not the unit the client moves, the client switches to it, or waits for that unit's UnitCreate.

Taken only after PlayerUnit; before it the client ignores it. The client answers at once with MovementControlReceipt. Unless it already moves the unit, it then takes the unit over and starts sending its movement (ClientMovement) and its zone changes (ZoneChange). When the message names the player's own unit while the unit the client moves, or last moved, carries the mark Unknown3 describes, as on the client's first takeover of that unit and after a MovementControlEnd, the client also sends a ZoneChange at once. The client registers a writer for it as well.

0x0638 UnitMovement

Moves a unit the client does not move, by commands stamped with the sender's clock.

Opcode Direction Verified to
0x0638 server to client purpose
Field Bits Encoding
Unknown0 32 unsigned
Unknown1 32 unsigned
Unknown2 1 unsigned
Unknown3 1 unsigned
Unknown4 count 5 unsigned
Unknown4 array, counted by Unknown4 count
Unknown4[].Unknown0 5 unsigned; selects Unknown4[].Unknown1
Unknown4[].Unknown1 union, selected by Unknown4[].Unknown0
Unknown4[].Unknown1(0) when Unknown4[].Unknown0 is 0
Unknown4[].Unknown1(0).Unknown0 32 unsigned
Unknown4[].Unknown1(1) when Unknown4[].Unknown0 is 1
Unknown4[].Unknown1(1).Unknown0 32 unsigned
Unknown4[].Unknown1(2) when Unknown4[].Unknown0 is 2
Unknown4[].Unknown1(2).Unknown0.X 32 float
Unknown4[].Unknown1(2).Unknown0.Y 32 float
Unknown4[].Unknown1(2).Unknown0.Z 32 float
Unknown4[].Unknown1(2).Unknown1 1 unsigned
Unknown4[].Unknown1(3) when Unknown4[].Unknown0 is 3
Unknown4[].Unknown1(3).Unknown0 10 unsigned; counts Unknown4[].Unknown1(3).Unknown1, Unknown4[].Unknown1(3).Unknown2
Unknown4[].Unknown1(3).Unknown1 array, counted by Unknown4[].Unknown1(3).Unknown0
Unknown4[].Unknown1(3).Unknown1[] 32 unsigned
Unknown4[].Unknown1(3).Unknown2 array, counted by Unknown4[].Unknown1(3).Unknown0
Unknown4[].Unknown1(3).Unknown2[].X 32 float
Unknown4[].Unknown1(3).Unknown2[].Y 32 float
Unknown4[].Unknown1(3).Unknown2[].Z 32 float
Unknown4[].Unknown1(3).Unknown3 2 unsigned
Unknown4[].Unknown1(3).Unknown4 32 unsigned
Unknown4[].Unknown1(3).Unknown5 1 unsigned
Unknown4[].Unknown1(4) when Unknown4[].Unknown0 is 4
Unknown4[].Unknown1(4).Unknown0 count 10 unsigned
Unknown4[].Unknown1(4).Unknown0 array, counted by Unknown4[].Unknown1(4).Unknown0 count
Unknown4[].Unknown1(4).Unknown0[].X 32 float
Unknown4[].Unknown1(4).Unknown0[].Y 32 float
Unknown4[].Unknown1(4).Unknown0[].Z 32 float
Unknown4[].Unknown1(4).Unknown1 16 packed float
Unknown4[].Unknown1(4).Unknown2 2 unsigned
Unknown4[].Unknown1(4).Unknown3 4 unsigned
Unknown4[].Unknown1(4).Unknown4 32 unsigned
Unknown4[].Unknown1(4).Unknown5 1 unsigned
Unknown4[].Unknown1(5) when Unknown4[].Unknown0 is 5
Unknown4[].Unknown1(5).Unknown0 32 unsigned
Unknown4[].Unknown1(5).Unknown1 32 float
Unknown4[].Unknown1(5).Unknown2 32 float
Unknown4[].Unknown1(5).Unknown3.X 16 packed float
Unknown4[].Unknown1(5).Unknown3.Y 16 packed float
Unknown4[].Unknown1(5).Unknown3.Z 16 packed float
Unknown4[].Unknown1(5).Unknown4 4 unsigned
Unknown4[].Unknown1(5).Unknown5 32 unsigned
Unknown4[].Unknown1(5).Unknown6 1 unsigned
Unknown4[].Unknown1(5).Unknown7 1 unsigned
Unknown4[].Unknown1(5).Unknown8 1 unsigned
Unknown4[].Unknown1(6) when Unknown4[].Unknown0 is 6
Unknown4[].Unknown1(6).Unknown0 count 10 unsigned
Unknown4[].Unknown1(6).Unknown0 array, counted by Unknown4[].Unknown1(6).Unknown0 count
Unknown4[].Unknown1(6).Unknown0[] 32 unsigned
Unknown4[].Unknown1(6).Unknown1 16 packed float
Unknown4[].Unknown1(6).Unknown2 32 float
Unknown4[].Unknown1(6).Unknown3 32 float
Unknown4[].Unknown1(6).Unknown4 32 float
Unknown4[].Unknown1(6).Unknown5.X 16 packed float
Unknown4[].Unknown1(6).Unknown5.Y 16 packed float
Unknown4[].Unknown1(6).Unknown5.Z 16 packed float
Unknown4[].Unknown1(6).Unknown6 4 unsigned
Unknown4[].Unknown1(6).Unknown7 32 unsigned
Unknown4[].Unknown1(6).Unknown8 32 unsigned
Unknown4[].Unknown1(6).Unknown9 1 unsigned
Unknown4[].Unknown1(6).Unknown10 1 unsigned
Unknown4[].Unknown1(7) when Unknown4[].Unknown0 is 7
Unknown4[].Unknown1(7).Unknown0.X 32 float
Unknown4[].Unknown1(7).Unknown0.Y 32 float
Unknown4[].Unknown1(7).Unknown0.Z 32 float
Unknown4[].Unknown1(7).Unknown1.X 32 float
Unknown4[].Unknown1(7).Unknown1.Y 32 float
Unknown4[].Unknown1(7).Unknown1.Z 32 float
Unknown4[].Unknown1(7).Unknown2 32 unsigned
Unknown4[].Unknown1(7).Unknown3 32 float
Unknown4[].Unknown1(7).Unknown4 32 unsigned
Unknown4[].Unknown1(7).Unknown5 1 unsigned
Unknown4[].Unknown1(8) when Unknown4[].Unknown0 is 8
Unknown4[].Unknown1(8).Unknown0.X 16 packed float
Unknown4[].Unknown1(8).Unknown0.Y 16 packed float
Unknown4[].Unknown1(8).Unknown0.Z 16 packed float
Unknown4[].Unknown1(8).Unknown1 1 unsigned
Unknown4[].Unknown1(9) when Unknown4[].Unknown0 is 9
Unknown4[].Unknown1(9).Unknown0 10 unsigned; counts Unknown4[].Unknown1(9).Unknown1, Unknown4[].Unknown1(9).Unknown2
Unknown4[].Unknown1(9).Unknown1 array, counted by Unknown4[].Unknown1(9).Unknown0
Unknown4[].Unknown1(9).Unknown1[] 32 unsigned
Unknown4[].Unknown1(9).Unknown2 array, counted by Unknown4[].Unknown1(9).Unknown0
Unknown4[].Unknown1(9).Unknown2[].X 16 packed float
Unknown4[].Unknown1(9).Unknown2[].Y 16 packed float
Unknown4[].Unknown1(9).Unknown2[].Z 16 packed float
Unknown4[].Unknown1(9).Unknown3 2 unsigned
Unknown4[].Unknown1(9).Unknown4 32 unsigned
Unknown4[].Unknown1(9).Unknown5 1 unsigned
Unknown4[].Unknown1(10) when Unknown4[].Unknown0 is 10
Unknown4[].Unknown1(10).Unknown0 1 unsigned
Unknown4[].Unknown1(11) when Unknown4[].Unknown0 is 11
Unknown4[].Unknown1(11).Unknown0.X 16 packed float
Unknown4[].Unknown1(11).Unknown0.Y 16 packed float
Unknown4[].Unknown1(11).Unknown0.Z 16 packed float
Unknown4[].Unknown1(11).Unknown1 1 unsigned
Unknown4[].Unknown1(12) when Unknown4[].Unknown0 is 12
Unknown4[].Unknown1(12).Unknown0 10 unsigned; counts Unknown4[].Unknown1(12).Unknown1, Unknown4[].Unknown1(12).Unknown2
Unknown4[].Unknown1(12).Unknown1 array, counted by Unknown4[].Unknown1(12).Unknown0
Unknown4[].Unknown1(12).Unknown1[] 32 unsigned
Unknown4[].Unknown1(12).Unknown2 array, counted by Unknown4[].Unknown1(12).Unknown0
Unknown4[].Unknown1(12).Unknown2[].X 16 packed float
Unknown4[].Unknown1(12).Unknown2[].Y 16 packed float
Unknown4[].Unknown1(12).Unknown2[].Z 16 packed float
Unknown4[].Unknown1(12).Unknown3 2 unsigned
Unknown4[].Unknown1(12).Unknown4 32 unsigned
Unknown4[].Unknown1(12).Unknown5 1 unsigned
Unknown4[].Unknown1(13) when Unknown4[].Unknown0 is 13
Unknown4[].Unknown1(13).Unknown0 1 unsigned
Unknown4[].Unknown1(14) when Unknown4[].Unknown0 is 14
Unknown4[].Unknown1(14).Unknown0.X 32 float
Unknown4[].Unknown1(14).Unknown0.Y 32 float
Unknown4[].Unknown1(14).Unknown0.Z 32 float
Unknown4[].Unknown1(14).Unknown1 1 unsigned
Unknown4[].Unknown1(15) when Unknown4[].Unknown0 is 15
Unknown4[].Unknown1(15).Unknown0 10 unsigned; counts Unknown4[].Unknown1(15).Unknown1, Unknown4[].Unknown1(15).Unknown2
Unknown4[].Unknown1(15).Unknown1 array, counted by Unknown4[].Unknown1(15).Unknown0
Unknown4[].Unknown1(15).Unknown1[] 32 unsigned
Unknown4[].Unknown1(15).Unknown2 array, counted by Unknown4[].Unknown1(15).Unknown0
Unknown4[].Unknown1(15).Unknown2[].X 32 float
Unknown4[].Unknown1(15).Unknown2[].Y 32 float
Unknown4[].Unknown1(15).Unknown2[].Z 32 float
Unknown4[].Unknown1(15).Unknown3 2 unsigned
Unknown4[].Unknown1(15).Unknown4 32 unsigned
Unknown4[].Unknown1(15).Unknown5 1 unsigned
Unknown4[].Unknown1(16) when Unknown4[].Unknown0 is 16
Unknown4[].Unknown1(16).Unknown0 32 unsigned
Unknown4[].Unknown1(16).Unknown1 16 unsigned
Unknown4[].Unknown1(16).Unknown2 32 float
Unknown4[].Unknown1(16).Unknown3 4 unsigned
Unknown4[].Unknown1(16).Unknown4 32 unsigned
Unknown4[].Unknown1(16).Unknown5 1 unsigned
Unknown4[].Unknown1(16).Unknown6 1 unsigned
Unknown4[].Unknown1(17) when Unknown4[].Unknown0 is 17
Unknown4[].Unknown1(17).Unknown0 count 10 unsigned
Unknown4[].Unknown1(17).Unknown0 array, counted by Unknown4[].Unknown1(17).Unknown0 count
Unknown4[].Unknown1(17).Unknown0[] 32 unsigned
Unknown4[].Unknown1(17).Unknown1 16 packed float
Unknown4[].Unknown1(17).Unknown2 32 float
Unknown4[].Unknown1(17).Unknown3 32 float
Unknown4[].Unknown1(17).Unknown4 32 float
Unknown4[].Unknown1(17).Unknown5 4 unsigned
Unknown4[].Unknown1(17).Unknown6 32 unsigned
Unknown4[].Unknown1(17).Unknown7 32 unsigned
Unknown4[].Unknown1(17).Unknown8 1 unsigned
Unknown4[].Unknown1(18) when Unknown4[].Unknown0 is 18
Unknown4[].Unknown1(18).Unknown0 32 unsigned
Unknown4[].Unknown1(18).Unknown1 1 unsigned
Unknown4[].Unknown1(19) when Unknown4[].Unknown0 is 19
Unknown4[].Unknown1(19).Unknown0.X 32 float
Unknown4[].Unknown1(19).Unknown0.Y 32 float
Unknown4[].Unknown1(19).Unknown0.Z 32 float
Unknown4[].Unknown1(19).Unknown1 1 unsigned
Unknown4[].Unknown1(20) when Unknown4[].Unknown0 is 20
Unknown4[].Unknown1(20).Unknown0.X 32 float
Unknown4[].Unknown1(20).Unknown0.Y 32 float
Unknown4[].Unknown1(20).Unknown0.Z 32 float
Unknown4[].Unknown1(20).Unknown1 32 unsigned
Unknown4[].Unknown1(20).Unknown2 16 packed float
Unknown4[].Unknown1(20).Unknown3 32 unsigned
Unknown4[].Unknown1(20).Unknown4 1 unsigned
Unknown4[].Unknown1(21) when Unknown4[].Unknown0 is 21
Unknown4[].Unknown1(21).Unknown0 1 unsigned
Unknown4[].Unknown1(22) when Unknown4[].Unknown0 is 22
Unknown4[].Unknown1(22).Unknown0 16 packed float
Unknown4[].Unknown1(22).Unknown1 1 unsigned
Unknown4[].Unknown1(23) when Unknown4[].Unknown0 is 23
Unknown4[].Unknown1(23).Unknown0 8 unsigned; counts Unknown4[].Unknown1(23).Unknown1, Unknown4[].Unknown1(23).Unknown2
Unknown4[].Unknown1(23).Unknown1 array, counted by Unknown4[].Unknown1(23).Unknown0
Unknown4[].Unknown1(23).Unknown1[] 32 unsigned
Unknown4[].Unknown1(23).Unknown2 array, counted by Unknown4[].Unknown1(23).Unknown0
Unknown4[].Unknown1(23).Unknown2[] 16 packed float
Unknown4[].Unknown1(23).Unknown3 2 unsigned
Unknown4[].Unknown1(23).Unknown4 32 unsigned
Unknown4[].Unknown1(23).Unknown5 1 unsigned
Unknown4[].Unknown1(24) when Unknown4[].Unknown0 is 24
Unknown4[].Unknown1(24).Unknown0 32 unsigned
Unknown4[].Unknown1(25) when Unknown4[].Unknown0 is 25
Unknown4[].Unknown1(25).Unknown0 8 unsigned; counts Unknown4[].Unknown1(25).Unknown1, Unknown4[].Unknown1(25).Unknown2
Unknown4[].Unknown1(25).Unknown1 array, counted by Unknown4[].Unknown1(25).Unknown0
Unknown4[].Unknown1(25).Unknown1[] 32 unsigned
Unknown4[].Unknown1(25).Unknown2 array, counted by Unknown4[].Unknown1(25).Unknown0
Unknown4[].Unknown1(25).Unknown2[] 32 unsigned
Unknown4[].Unknown1(25).Unknown3 32 unsigned
Unknown4[].Unknown1(26) when Unknown4[].Unknown0 is 26
Unknown4[].Unknown1(26).Unknown0 1 unsigned
Unknown4[].Unknown1(27) when Unknown4[].Unknown0 is 27
Unknown4[].Unknown1(27).Unknown0 32 unsigned
Unknown4[].Unknown1(28) when Unknown4[].Unknown0 is 28
Unknown4[].Unknown1(28).Unknown0 8 unsigned; counts Unknown4[].Unknown1(28).Unknown1, Unknown4[].Unknown1(28).Unknown2
Unknown4[].Unknown1(28).Unknown1 array, counted by Unknown4[].Unknown1(28).Unknown0
Unknown4[].Unknown1(28).Unknown1[] 32 unsigned
Unknown4[].Unknown1(28).Unknown2 array, counted by Unknown4[].Unknown1(28).Unknown0
Unknown4[].Unknown1(28).Unknown2[] 32 unsigned
Unknown4[].Unknown1(28).Unknown3 32 unsigned
Unknown4[].Unknown1(29) when Unknown4[].Unknown0 is 29
Unknown4[].Unknown1(29).Unknown0 1 unsigned

The client ignores the whole message for the unit it moves.

0x0639 MovementControlEnd

Takes the movement of the unit the client moves back from the client.

Opcode Direction Verified to
0x0639 server to client fields
Field Bits Encoding Meaning
(none) 0

The client stops moving the unit, drops the movement it has gathered but not yet sent, and sends no more ClientMovement until a MovementControl gives it a unit again. It then applies UnitMovement to the unit.

Client to server

0x00DE Dash

Tells the server the player has dashed.

Opcode Direction Verified to
0x00DE client to server purpose
Field Bits Encoding
Unknown0 3 unsigned

0x00FB Client00FB

Opcode Direction Verified to
0x00FB client to server unverified
Field Bits Encoding
Unknown0 32 float

0x0141 Client0141

Opcode Direction Verified to
0x0141 client to server unverified
Field Bits Encoding
Unknown0 14 unsigned
Unknown1 32 unsigned

0x01AF Client01AF

Opcode Direction Verified to
0x01AF client to server unverified
Field Bits Encoding
(none) 0

0x0635 MovementControlReceipt

Answers a MovementControl: the client sends it as soon as it takes one, before it acts on it.

Opcode Direction Verified to
0x0635 client to server fields
Field Bits Encoding Meaning
Ticket 32 unsigned The Ticket of the MovementControl it answers.

The client registers a reader for it as well, but does nothing with one it receives.

0x0637 ClientMovement

The movement of the unit the client moves, as commands in batches the client stamps with its own clock.

Opcode Direction Verified to
0x0637 client to server purpose
Field Bits Encoding
Unknown0 32 unsigned
Unknown1 count 32 unsigned
Unknown1 array, counted by Unknown1 count
Unknown1[].Unknown0 5 unsigned; selects Unknown1[].Unknown1
Unknown1[].Unknown1 union, selected by Unknown1[].Unknown0
Unknown1[].Unknown1(0) when Unknown1[].Unknown0 is 0
Unknown1[].Unknown1(0).Unknown0 32 unsigned
Unknown1[].Unknown1(1) when Unknown1[].Unknown0 is 1
Unknown1[].Unknown1(1).Unknown0 32 unsigned
Unknown1[].Unknown1(2) when Unknown1[].Unknown0 is 2
Unknown1[].Unknown1(2).Unknown0.X 32 float
Unknown1[].Unknown1(2).Unknown0.Y 32 float
Unknown1[].Unknown1(2).Unknown0.Z 32 float
Unknown1[].Unknown1(2).Unknown1 1 unsigned
Unknown1[].Unknown1(3) when Unknown1[].Unknown0 is 3
Unknown1[].Unknown1(3).Unknown0 10 unsigned; counts Unknown1[].Unknown1(3).Unknown1, Unknown1[].Unknown1(3).Unknown2
Unknown1[].Unknown1(3).Unknown1 array, counted by Unknown1[].Unknown1(3).Unknown0
Unknown1[].Unknown1(3).Unknown1[] 32 unsigned
Unknown1[].Unknown1(3).Unknown2 array, counted by Unknown1[].Unknown1(3).Unknown0
Unknown1[].Unknown1(3).Unknown2[].X 32 float
Unknown1[].Unknown1(3).Unknown2[].Y 32 float
Unknown1[].Unknown1(3).Unknown2[].Z 32 float
Unknown1[].Unknown1(3).Unknown3 2 unsigned
Unknown1[].Unknown1(3).Unknown4 32 unsigned
Unknown1[].Unknown1(3).Unknown5 1 unsigned
Unknown1[].Unknown1(4) when Unknown1[].Unknown0 is 4
Unknown1[].Unknown1(4).Unknown0 count 10 unsigned
Unknown1[].Unknown1(4).Unknown0 array, counted by Unknown1[].Unknown1(4).Unknown0 count
Unknown1[].Unknown1(4).Unknown0[].X 32 float
Unknown1[].Unknown1(4).Unknown0[].Y 32 float
Unknown1[].Unknown1(4).Unknown0[].Z 32 float
Unknown1[].Unknown1(4).Unknown1 16 packed float
Unknown1[].Unknown1(4).Unknown2 2 unsigned
Unknown1[].Unknown1(4).Unknown3 4 unsigned
Unknown1[].Unknown1(4).Unknown4 32 unsigned
Unknown1[].Unknown1(4).Unknown5 1 unsigned
Unknown1[].Unknown1(5) when Unknown1[].Unknown0 is 5
Unknown1[].Unknown1(5).Unknown0 32 unsigned
Unknown1[].Unknown1(5).Unknown1 32 float
Unknown1[].Unknown1(5).Unknown2 32 float
Unknown1[].Unknown1(5).Unknown3.X 16 packed float
Unknown1[].Unknown1(5).Unknown3.Y 16 packed float
Unknown1[].Unknown1(5).Unknown3.Z 16 packed float
Unknown1[].Unknown1(5).Unknown4 4 unsigned
Unknown1[].Unknown1(5).Unknown5 32 unsigned
Unknown1[].Unknown1(5).Unknown6 1 unsigned
Unknown1[].Unknown1(5).Unknown7 1 unsigned
Unknown1[].Unknown1(5).Unknown8 1 unsigned
Unknown1[].Unknown1(6) when Unknown1[].Unknown0 is 6
Unknown1[].Unknown1(6).Unknown0 count 10 unsigned
Unknown1[].Unknown1(6).Unknown0 array, counted by Unknown1[].Unknown1(6).Unknown0 count
Unknown1[].Unknown1(6).Unknown0[] 32 unsigned
Unknown1[].Unknown1(6).Unknown1 16 packed float
Unknown1[].Unknown1(6).Unknown2 32 float
Unknown1[].Unknown1(6).Unknown3 32 float
Unknown1[].Unknown1(6).Unknown4 32 float
Unknown1[].Unknown1(6).Unknown5.X 16 packed float
Unknown1[].Unknown1(6).Unknown5.Y 16 packed float
Unknown1[].Unknown1(6).Unknown5.Z 16 packed float
Unknown1[].Unknown1(6).Unknown6 4 unsigned
Unknown1[].Unknown1(6).Unknown7 32 unsigned
Unknown1[].Unknown1(6).Unknown8 32 unsigned
Unknown1[].Unknown1(6).Unknown9 1 unsigned
Unknown1[].Unknown1(6).Unknown10 1 unsigned
Unknown1[].Unknown1(7) when Unknown1[].Unknown0 is 7
Unknown1[].Unknown1(7).Unknown0.X 32 float
Unknown1[].Unknown1(7).Unknown0.Y 32 float
Unknown1[].Unknown1(7).Unknown0.Z 32 float
Unknown1[].Unknown1(7).Unknown1.X 32 float
Unknown1[].Unknown1(7).Unknown1.Y 32 float
Unknown1[].Unknown1(7).Unknown1.Z 32 float
Unknown1[].Unknown1(7).Unknown2 32 unsigned
Unknown1[].Unknown1(7).Unknown3 32 float
Unknown1[].Unknown1(7).Unknown4 32 unsigned
Unknown1[].Unknown1(7).Unknown5 1 unsigned
Unknown1[].Unknown1(8) when Unknown1[].Unknown0 is 8
Unknown1[].Unknown1(8).Unknown0.X 16 packed float
Unknown1[].Unknown1(8).Unknown0.Y 16 packed float
Unknown1[].Unknown1(8).Unknown0.Z 16 packed float
Unknown1[].Unknown1(8).Unknown1 1 unsigned
Unknown1[].Unknown1(9) when Unknown1[].Unknown0 is 9
Unknown1[].Unknown1(9).Unknown0 10 unsigned; counts Unknown1[].Unknown1(9).Unknown1, Unknown1[].Unknown1(9).Unknown2
Unknown1[].Unknown1(9).Unknown1 array, counted by Unknown1[].Unknown1(9).Unknown0
Unknown1[].Unknown1(9).Unknown1[] 32 unsigned
Unknown1[].Unknown1(9).Unknown2 array, counted by Unknown1[].Unknown1(9).Unknown0
Unknown1[].Unknown1(9).Unknown2[].X 16 packed float
Unknown1[].Unknown1(9).Unknown2[].Y 16 packed float
Unknown1[].Unknown1(9).Unknown2[].Z 16 packed float
Unknown1[].Unknown1(9).Unknown3 2 unsigned
Unknown1[].Unknown1(9).Unknown4 32 unsigned
Unknown1[].Unknown1(9).Unknown5 1 unsigned
Unknown1[].Unknown1(10) when Unknown1[].Unknown0 is 10
Unknown1[].Unknown1(10).Unknown0 1 unsigned
Unknown1[].Unknown1(11) when Unknown1[].Unknown0 is 11
Unknown1[].Unknown1(11).Unknown0.X 16 packed float
Unknown1[].Unknown1(11).Unknown0.Y 16 packed float
Unknown1[].Unknown1(11).Unknown0.Z 16 packed float
Unknown1[].Unknown1(11).Unknown1 1 unsigned
Unknown1[].Unknown1(12) when Unknown1[].Unknown0 is 12
Unknown1[].Unknown1(12).Unknown0 10 unsigned; counts Unknown1[].Unknown1(12).Unknown1, Unknown1[].Unknown1(12).Unknown2
Unknown1[].Unknown1(12).Unknown1 array, counted by Unknown1[].Unknown1(12).Unknown0
Unknown1[].Unknown1(12).Unknown1[] 32 unsigned
Unknown1[].Unknown1(12).Unknown2 array, counted by Unknown1[].Unknown1(12).Unknown0
Unknown1[].Unknown1(12).Unknown2[].X 16 packed float
Unknown1[].Unknown1(12).Unknown2[].Y 16 packed float
Unknown1[].Unknown1(12).Unknown2[].Z 16 packed float
Unknown1[].Unknown1(12).Unknown3 2 unsigned
Unknown1[].Unknown1(12).Unknown4 32 unsigned
Unknown1[].Unknown1(12).Unknown5 1 unsigned
Unknown1[].Unknown1(13) when Unknown1[].Unknown0 is 13
Unknown1[].Unknown1(13).Unknown0 1 unsigned
Unknown1[].Unknown1(14) when Unknown1[].Unknown0 is 14
Unknown1[].Unknown1(14).Unknown0.X 32 float
Unknown1[].Unknown1(14).Unknown0.Y 32 float
Unknown1[].Unknown1(14).Unknown0.Z 32 float
Unknown1[].Unknown1(14).Unknown1 1 unsigned
Unknown1[].Unknown1(15) when Unknown1[].Unknown0 is 15
Unknown1[].Unknown1(15).Unknown0 10 unsigned; counts Unknown1[].Unknown1(15).Unknown1, Unknown1[].Unknown1(15).Unknown2
Unknown1[].Unknown1(15).Unknown1 array, counted by Unknown1[].Unknown1(15).Unknown0
Unknown1[].Unknown1(15).Unknown1[] 32 unsigned
Unknown1[].Unknown1(15).Unknown2 array, counted by Unknown1[].Unknown1(15).Unknown0
Unknown1[].Unknown1(15).Unknown2[].X 32 float
Unknown1[].Unknown1(15).Unknown2[].Y 32 float
Unknown1[].Unknown1(15).Unknown2[].Z 32 float
Unknown1[].Unknown1(15).Unknown3 2 unsigned
Unknown1[].Unknown1(15).Unknown4 32 unsigned
Unknown1[].Unknown1(15).Unknown5 1 unsigned
Unknown1[].Unknown1(16) when Unknown1[].Unknown0 is 16
Unknown1[].Unknown1(16).Unknown0 32 unsigned
Unknown1[].Unknown1(16).Unknown1 16 unsigned
Unknown1[].Unknown1(16).Unknown2 32 float
Unknown1[].Unknown1(16).Unknown3 4 unsigned
Unknown1[].Unknown1(16).Unknown4 32 unsigned
Unknown1[].Unknown1(16).Unknown5 1 unsigned
Unknown1[].Unknown1(16).Unknown6 1 unsigned
Unknown1[].Unknown1(17) when Unknown1[].Unknown0 is 17
Unknown1[].Unknown1(17).Unknown0 count 10 unsigned
Unknown1[].Unknown1(17).Unknown0 array, counted by Unknown1[].Unknown1(17).Unknown0 count
Unknown1[].Unknown1(17).Unknown0[] 32 unsigned
Unknown1[].Unknown1(17).Unknown1 16 packed float
Unknown1[].Unknown1(17).Unknown2 32 float
Unknown1[].Unknown1(17).Unknown3 32 float
Unknown1[].Unknown1(17).Unknown4 32 float
Unknown1[].Unknown1(17).Unknown5 4 unsigned
Unknown1[].Unknown1(17).Unknown6 32 unsigned
Unknown1[].Unknown1(17).Unknown7 32 unsigned
Unknown1[].Unknown1(17).Unknown8 1 unsigned
Unknown1[].Unknown1(18) when Unknown1[].Unknown0 is 18
Unknown1[].Unknown1(18).Unknown0 32 unsigned
Unknown1[].Unknown1(18).Unknown1 1 unsigned
Unknown1[].Unknown1(19) when Unknown1[].Unknown0 is 19
Unknown1[].Unknown1(19).Unknown0.X 32 float
Unknown1[].Unknown1(19).Unknown0.Y 32 float
Unknown1[].Unknown1(19).Unknown0.Z 32 float
Unknown1[].Unknown1(19).Unknown1 1 unsigned
Unknown1[].Unknown1(20) when Unknown1[].Unknown0 is 20
Unknown1[].Unknown1(20).Unknown0.X 32 float
Unknown1[].Unknown1(20).Unknown0.Y 32 float
Unknown1[].Unknown1(20).Unknown0.Z 32 float
Unknown1[].Unknown1(20).Unknown1 32 unsigned
Unknown1[].Unknown1(20).Unknown2 16 packed float
Unknown1[].Unknown1(20).Unknown3 32 unsigned
Unknown1[].Unknown1(20).Unknown4 1 unsigned
Unknown1[].Unknown1(21) when Unknown1[].Unknown0 is 21
Unknown1[].Unknown1(21).Unknown0 1 unsigned
Unknown1[].Unknown1(22) when Unknown1[].Unknown0 is 22
Unknown1[].Unknown1(22).Unknown0 16 packed float
Unknown1[].Unknown1(22).Unknown1 1 unsigned
Unknown1[].Unknown1(23) when Unknown1[].Unknown0 is 23
Unknown1[].Unknown1(23).Unknown0 8 unsigned; counts Unknown1[].Unknown1(23).Unknown1, Unknown1[].Unknown1(23).Unknown2
Unknown1[].Unknown1(23).Unknown1 array, counted by Unknown1[].Unknown1(23).Unknown0
Unknown1[].Unknown1(23).Unknown1[] 32 unsigned
Unknown1[].Unknown1(23).Unknown2 array, counted by Unknown1[].Unknown1(23).Unknown0
Unknown1[].Unknown1(23).Unknown2[] 16 packed float
Unknown1[].Unknown1(23).Unknown3 2 unsigned
Unknown1[].Unknown1(23).Unknown4 32 unsigned
Unknown1[].Unknown1(23).Unknown5 1 unsigned
Unknown1[].Unknown1(24) when Unknown1[].Unknown0 is 24
Unknown1[].Unknown1(24).Unknown0 32 unsigned
Unknown1[].Unknown1(25) when Unknown1[].Unknown0 is 25
Unknown1[].Unknown1(25).Unknown0 8 unsigned; counts Unknown1[].Unknown1(25).Unknown1, Unknown1[].Unknown1(25).Unknown2
Unknown1[].Unknown1(25).Unknown1 array, counted by Unknown1[].Unknown1(25).Unknown0
Unknown1[].Unknown1(25).Unknown1[] 32 unsigned
Unknown1[].Unknown1(25).Unknown2 array, counted by Unknown1[].Unknown1(25).Unknown0
Unknown1[].Unknown1(25).Unknown2[] 32 unsigned
Unknown1[].Unknown1(25).Unknown3 32 unsigned
Unknown1[].Unknown1(26) when Unknown1[].Unknown0 is 26
Unknown1[].Unknown1(26).Unknown0 1 unsigned
Unknown1[].Unknown1(27) when Unknown1[].Unknown0 is 27
Unknown1[].Unknown1(27).Unknown0 32 unsigned
Unknown1[].Unknown1(28) when Unknown1[].Unknown0 is 28
Unknown1[].Unknown1(28).Unknown0 8 unsigned; counts Unknown1[].Unknown1(28).Unknown1, Unknown1[].Unknown1(28).Unknown2
Unknown1[].Unknown1(28).Unknown1 array, counted by Unknown1[].Unknown1(28).Unknown0
Unknown1[].Unknown1(28).Unknown1[] 32 unsigned
Unknown1[].Unknown1(28).Unknown2 array, counted by Unknown1[].Unknown1(28).Unknown0
Unknown1[].Unknown1(28).Unknown2[] 32 unsigned
Unknown1[].Unknown1(28).Unknown3 32 unsigned
Unknown1[].Unknown1(29) when Unknown1[].Unknown0 is 29
Unknown1[].Unknown1(29).Unknown0 1 unsigned

The client sends it while it moves a unit: MovementControl starts it and MovementControlEnd stops it. The first one after the client takes a unit over carries only a time and a position whose flag is clear. After that the client sends from its movement timer, whose period is MovementInterval, and also at once at some moments, such as just before 0x00FB. Each batch opens with a time: the client's clock when it gathered the batch, plus two periods of MovementInterval.

0x063A ZoneChange

Tells the server the zone of the unit the client moves when it changes, and on some takeovers of the player's own unit repeats the last one it reported.

Opcode Direction Verified to
0x063A client to server fields
Field Bits Encoding Meaning
PreviousZoneId 15 unsigned The zone id the client reported last, in WorldReady or an earlier ZoneChange; 0 when it has reported none since EnterWorld.
ZoneId 15 unsigned The zone id of the unit the client moves when the client sends a change, the id ZoneId also carries. In the one the client sends at once on taking control it repeats PreviousZoneId, and so can be 0.

The client checks for a change each time its movement timer runs while it moves a unit; the timer's period is MovementInterval. It also sends one at once, with both values the same, when a MovementControl names the player's own unit while the unit the client moves, or last moved, carries the mark Unknown3 describes, as on the client's first takeover of that unit and after a MovementControlEnd.

Where the code lives

Piece Path
Message declarations Source/NexusTomorrow.Network.World/Message/Model/Movement/
This page's generator Tools/NexusTomorrow.ProtocolReference/

Clone this wiki locally