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

Joining a match

What passes between a client and a server from connection until play begins, in order.

Starting a client

A client learns where to connect from its command line. It takes three arguments it needs nothing in, which can be empty, and then a fourth holding four words separated by single spaces: the server’s IPv4 address, its UDP port, the key (see Transport), and the player id the client registers as. The client connects to that address and port, registers as that player, and enciphers its proof under that key.

Registering

A client’s first payload is Register, on the registration channel. The note on Registered says what a server answers with: one answer for every seat.

A client knows the answer meant for it by the player id it registered as, not by the client id, and takes the client id that answer carries as its own. Every other answer tells it which client id stands for which player.

A client waits 30 seconds for the answer naming its own player id. Then it offers its player to wait another 30 seconds or to give up, and leaves on giving up.

In 4.1–4.19

The first answer for a client id stands, and a later one for the same client id changes nothing. An answer for its own player id arriving during play has a client send ReconnectedInMatch.

In 4.1–4.19

A client uses which client id stands for which player for names, sides and loading cards. It takes an answer whenever it arrives, while loading or in play, and one saying a client has dropped changes nothing it shows.

Asking whether a server is ready

A client then sends QueryStatus over and over. A server MUST answer each one with QueryStatusAnswer, at least until it has answered that it is ready. While the answers say the server is not ready, a client stays on a black screen and keeps asking. A server that needs time before a match can begin answers that it is not ready until it is.

A server MUST also answer each QueryStatus that comes after its first ready answer.

Stating a build

Once an answer says the server is ready, a client sends ClientVersion once. A server answers with VersionSync, and a client loads only where its agreement says the builds agree.

VersionSync names the map to load and everyone at the match.

In 4.1–4.19

A client loads only where VersionSync sets agreement.buildMatches. With it clear, the client shows its player its own version text beside the one the message carries, and ends.

In 4.1–4.19

A client never compares the two otherwise: the message’s build text appears only in that notice. agreement.matched changes some of what chat and the options offer, and nothing about loading. A server leaves reportsToFile and reportingReady clear, since they have a client write metrics to a file of its own and report to the addresses the message carries.

No bit of features is needed for a match to load, and a match with every bit clear has none of the features. A client’s own defaults for most of the bits are in its file DATA/CFG/defaults/GameFeatures.cfg, one key each, though not in the order of the bits. A server MAY start from those defaults, and leaves the bits that report metrics clear.

Taking a seat

Straight after VersionSync, a client sends JoinSide on the roster channel. A server answers with one Roster, then a SeatName and a SeatChampion for each seat a player holds.

In 4.1–4.19

Every seat a player holds needs its place in Roster, its SeatName and its SeatChampion; a client shows a seat it lacks them for as an empty card. A later SeatName replaces the one before it. A client whose own seat Roster leaves out knows no side for its player, and announcements meant for allies do not show.

Loading

A client reports how far loading has got with LoadingProgress, repeatedly through loading. A server answers each report with SeatLoadProgress on the transient channel, carrying the report’s figures under the seat that reported. A client goes on reporting after its progress reaches 100, until play begins.

A client waits on no other seat. SpawnStart, SpawnEnd and StartGame are what move a client on, and StartGame alone ends its loading. A server that means its players to begin together sends StartGame to none of them until every client has sent ClientReady.

A client writes all ones where its player id goes in LoadingProgress.

A server MUST put the seat’s player id in SeatLoadProgress: the loading screen shows a seat’s card from the VersionSync seat with that id.

In 4.1–4.19

The loading screen

What a client draws while it loads comes from what it has been sent by then (see the spawn run below for what it takes before CharacterSelected).

A player’s card is built from several messages. Its place on the screen is that seat’s place in the Roster, and its name is that player’s SeatName. The registration answers (Registered) pair each player with a client id, and the latest SeatLoadProgress for that client gives the card its progress and, on the client’s own card only, its ping. The first SeatLoadProgress after the player’s SeatChampion sets the card up: its portrait and the champion’s name, from that SeatChampion’s champion and skin, then everything else from the VersionSync seat whose player id the SeatLoadProgress names. A card with no SeatChampion yet shows a black portrait, and one with no registration or no SeatLoadProgress yet says it is not connected. A later SeatChampion does not change a card already set up.

In 4.1–4.19

Each SeatLoadProgress updates the card of the seat it names, and a client draws its own card only as a server returns its own reports.

From the VersionSync seat a card takes:

  • the two summoner spells, as the name hashes of the spells, each drawn as its icon, or as a plain square for zero or a hash that names no spell;
  • the profile icon, the art of icon 0 for a negative number or one with no art;
  • the standing, drawn as a frame over the card where the client’s own images have one of that name (UNRANKED and BRONZE draw nothing);
  • one badge: the ally badge for the card’s own side, otherwise the enemy badge, each drawn where it is one of the badges the client’s own data names;
  • from the flags, bit 1, which shows the skin’s older portrait art where it has one.

A seat’s level is not drawn. A seat with flags bit 0 set is a bot’s, and the client draws its card from the seat alone, needing no other message: the client’s own name for a bot of that champion (not the seat’s bot name), the champion’s portrait in the bot’s skin with the skin’s name, summoner spells the client’s own data picks for the champion, mode and difficulty, and 100%. A seat on neither side 100 nor 200 has no card.

Between the two rows, where both have a card, a client shows the two sides’ team names, each as its tag in square brackets, a space and its name, and nothing for a side whose name is empty: names Team 1 and Team 2 under tags T1 and T2 show as [T1] Team 1 and [T2] Team 2 either side of the versus emblem. A tip set in VersionSync to show on the loading screen takes their place for its duration, and then they appear. The match’s variants can give the screen a background picture of their naming; with none, it has none.

The spawn run

Once a character is settled, a client sends CharacterSelected, once.

Until it sends CharacterSelected, a client drops every message but VersionSync, QueryStatusAnswer, MatchIdentity, SeatLoadProgress and GameEnded, apart from what arrives on the registration and roster channels, and keeps nothing it drops for later. A server MUST NOT send any of the spawn run before CharacterSelected arrives.

A client can send CharacterSelected before its progress reaches 100.

A server answers with SpawnStart, states everything on the field as play opens, and closes the run with SpawnEnd. A run carries:

A turret’s CreateTurret can come on its own or inside the EnterSight that brings the turret into view.

A client takes these in any order within the run.

A run MUST carry at least SpawnStart, the CreateChampion carrying the client’s own client id, and SpawnEnd. Given only those, a client still enters play, showing its champion’s portrait, health, resource and spells. It draws the champion on the map only once an EnterSight places it there, with its name and health bar over it.

A client’s shop stays empty until its own champion’s Loadout arrives (see The shop).

A client answers each Replication batch with a TransientAck naming that batch’s syncId. It sends one answer for each batch, in the order the batches came, including a batch that repeats the syncId of the batch before it.

A client answers the batches the run carried once SpawnEnd arrives.

Starting play

A client sends ClientReady after SpawnEnd and after its answers to the run’s batches, while it is still reporting its loading. A server MUST answer with StartGame, and later sends MatchStarted, with other messages free to come between them; MatchStarted carries 0 (see Time).

A client whose connection drops before play begins ends rather than connecting again. A server follows StartGame with a ClockSync, and a client enters play once it has both. The first ClockSync carries 0.

In 4.1–4.19

Between ClientReady and StartGame a client keeps its loading screen up with its own progress full, and sends LoadingProgress again about every half a second. It waits as long as it takes: nothing in it gives up on a server that is slow to start play.

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).

Register

What a client sends first. It arrives before the connection has a cipher state, so the payload travels in the clear apart from the proof.

Definition.

In 4.1–4.17

Command 0 on registration, sent by the client, reliable.

FieldTypeWhat it is
leadingbytes, 3Arbitrary; it carries no meaning.
clientIdu32A client writes zero here.
playerIdi64Who the sender claims to be. The proof is what settles the claim.
versionu32The build the client runs, with each part written out and run together, so 4.17.0.233 arrives as 41700233 and 4.17.0.267 as 41700267. A client always carries it, and the answer a server carries back repeats the same number.
proofi64The player id enciphered with the 16-byte key; a plain copy where the client has no key.
trailingbytes, 4Arbitrary; it carries no meaning.
Vectors (1)

one-on-4-17

In 4.18–4.20

Command 0 on registration, sent by the client, reliable.

FieldTypeWhat it is
leadingbytes, 3Arbitrary; it carries no meaning.
clientIdu32A client writes zero here.
playerIdi64Who the sender claims to be. The proof is what settles the claim.
versionu32The build the client runs, with each part written out and run together, so 4.20.0.315 arrives as 42000315. A client always carries it, and the answer a server carries back repeats the same number.
proofi64The player identifier and nothing else, enciphered under the key both ends already hold. Deciphering it and finding the identifier beside it is what shows the sender holds the key. A client enciphers the player identifier the request carries.
trailingbytes, 4Arbitrary; it carries no meaning.
Vectors (1)

proof-on-4-20

Registered

What a server answers a registration with, naming a player in the match and the seat they occupy. It shares its command value with the request it answers, which travels the other way, and it is one fixed size.

Definition.

In 4.1–4.17

Command 0 on registration, sent by the server, reliable.

Straight after a request a server sends one answer for every seat, and every one of them carries that request’s build and proof back.

FieldTypeWhat it is
leadingbytes, 3Unused; a server writes zero.
clientIdu32The client id playerId holds. Where playerId is the client’s own, the client takes this client id as its own and goes on. A watching client takes the champion of the player holding this client id as its own, so a server answers one with a client id no player in the streamed match holds (see Watching a match).
playerIdi64Who occupies that seat.
versionu32The build the client said it runs. Where the answer follows a request, a server writes the number that request carried, and otherwise the build itself. A client ignores it.
proofbytes, 8The eight bytes a request fills with its proof. Where the answer follows a request, a server writes what that request carried, and otherwise zero. A client ignores them.
trailingbytes, 4Unused; a server writes zero.
Vectors (1)

one-on-4-17

In 4.18–4.20

Command 0 on registration, sent by the server, reliable.

Straight after a request a server sends one answer for every seat, and every one of them carries that request’s build and proof back.

FieldTypeWhat it is
leadingbytes, 3Unused; a server writes zero. It occupies the same three bytes a request uses.
clientIdu32The client id the named player holds, counted from zero. A watching client takes the champion of the player holding this client id as its own, so a server answers one with a client id no player in the streamed match holds (see Watching a match).
playerIdi64Who occupies that seat.
versionu32The build the client said it runs. Where the answer follows a request, a server writes the number that request carried, and otherwise the build itself. A client ignores it.
proofbytes, 8The eight bytes a request fills with its proof. Where the answer follows a request, a server writes what that request carried, and otherwise zero. A client ignores them.
trailingbytes, 4Unused; a server writes zero.
Vectors (1)

carrying-a-request-back-on-4-20

QueryStatus

What a client sends to ask a server for its state. It carries nothing of its own. The header names no object: it carries zero.

Definition.

In every range of this book

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

No body.

Vectors (2)

one-on-4-17, bare-on-4-20

QueryStatusAnswer

What a server returns when asked whether it is ready. The header names no object: a server writes zero.

Definition.

In every range of this book

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

BuildsCommand
4.1–4.10135
4.11–4.20136
FieldTypeWhat it is
readyu8Whether the server is ready. While answers say it is not, a client keeps asking and goes no further, which Joining a match sets out. Values: 0 no, 1 yes.
Vectors (5)

not-ready-on-4-10, one-on-4-10, one-on-4-17, not-ready-on-4-20, one-on-4-20

ClientVersion

What a client sends to state which build it is. The header names no object: it carries zero.

Definition.

In every range of this book

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

BuildsCommand
4.1–4.10188
4.11–4.20189
FieldTypeWhat it is
clientIdu32The client id of the client reporting.
texttext, 256 bytesThe build, as text. The text ends at a zero byte.
Vectors (4)

one-on-4-10, public-build-on-4-10, one-on-4-17, public-build-on-4-20

VersionSync

What a server sends once a client has said which build it runs, saying whether the two agree. The header names no object: it carries zero.

Definition.

In 4.1

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

It also says which map to load, who is at the match, and everything else settled before play.

FieldTypeWhat it is
agreement1-byte bits
agreement.buildMatchesbit 0Set where the client’s build is one the server serves.
agreement.reportsToFilebit 1Set to have a client also write its reports to a file of its own.
agreement.matchedbit 2Set where the match was put together rather than made by hand.
agreement.reportingReadybit 3Set where the reporting settings below are to be used.
agreement.unusedbit 4 to 7Unused; a server writes zero. A client takes the scripted voice-over setting from its own settings.
mapi32Which map to load. Space keys the path origins by the same maps.
seats12 × SeatEvery place at the match, held or empty.
buildtext, 256 bytesWhich build the server serves. Written out in full and padded with zero bytes to the width above.
modetext, 128 bytesWhich way the match is played, written and padded as above.
variants2 × stringThe variations the match is played under, one place each. A place stands empty where none applies.
variantCountu8How many of the places above are filled.
teamNametext, 97 bytesWhat one side is called where it plays as a standing team, written and padded as above.
teamTagtext, 25 bytesThe short form of that name, written and padded as above.
otherTeamNametext, 97 bytesWhat the other side is called, under the same terms.
otherTeamTagtext, 25 bytesThe short form of that one.
metricsHosttext, 256 bytesWhere a client reports figures about the match, written and padded as above.
metricsPathtext, 256 bytesWhat it asks for there, written and padded as above.
metricsPortu16Which port it reaches that at.
reportingHosttext, 256 bytesWhere a client reports how the match went, written and padded as above.
reportingPathtext, 256 bytesWhat it asks for there, written and padded as above.
reportingPortu16Which port it reaches that at.
altReportingHosttext, 256 bytesA second, test place to report to, written and padded as above.
altReportingPathtext, 256 bytesWhat it asks for there, written and padded as above.
altReportingPortu16Which port it reaches that at.
tipi8Which note the client shows before play.
tipColouri8Which colouring it shows it in.
tipDurationi8Which display time to hold the note up for, applying only where tips are enabled and shown somewhere. tip, tipColour and tipDuration each select one of the notes, colourings and display times a client defines, tip counted modulo the number of notes. Where a value selects none, or the time is not above zero, a client shows no note.
tipFlags1-byte bitsHow the note is shown. A client sends these four bytes back in ClientReady, as it has corrected them.
tipFlags.enabledbit 0Set where there is a note. A client shows the note only where this and loadingScreen or inGame are set, and shows none where tip, tipColour or tipDuration names nothing.
tipFlags.replaybit 1Of no effect; a client clears it, with enabled, while playing a replay.
tipFlags.loadingScreenbit 2Set to show the note on the loading screen.
tipFlags.inGamebit 3Set to show the note during play, in a box on the screen.
tipFlags.cyclebit 4Set to have the box during play show every note in turn.
tipFlags.unusedbit 5 to 7Unused; a server writes zero.
features4-byte bitsWhich parts of the match are turned on, one bit each.
features.balanceVoteCommandsbit 0The chat commands /equalize and /noequalize.
features.menuBackbit 1With menuBack2, a second key that closes the pause and options menu. Alone, the minimap’s showing of neutral camps follows the player’s settings rather than the minimap’s own.
features.menuBack2bit 2Of use only with menuBack.
features.quickChatbit 3Quick chat: its keys and its panel. A client given it fails while loading. A server sends it clear.
features.missileWarningbit 4A missile coming at the client’s side, or at no one, can show before it leaves the fog where it is near for its speed and heading that way. It also has a client lower a hero’s bounty when the hero kills a minion.
features.audioBackendbit 5Which sound system the client uses; which setting picks which is not recorded.
features.animatedCursorsbit 6Cursors of several frames move on a frame every 0.15 seconds of play; clear, they show their first frame.
features.altControlsbit 7Some mouse commands are taken by the time since the click before; what that changes on screen is not recorded.
features.shopUndobit 8The shop’s undo; clear, it is never enabled.
features.skillshotOutlinebit 9While aiming a line spell, the units it would hit are outlined.
features.championIndicatorbit 10The mark over the player’s champion, where their own setting also asks for it.
features.altBountybit 11Another reckoning of kill and assist gold: kill gold and the assist pool grow with time, a run of assists adds gold, and assists and minion gold shorten a run of deaths.
features.waveOrderbit 12Changes the order of the kinds of minion within a wave.
features.turretRangebit 13Enemy turrets’ ranges, where the player’s setting also asks for them; clear, they are never drawn.
features.bit14bit 14Unused; a server writes zero.
features.skinParticlesbit 15Skin-specific particle effects for units in a skin other than the first.
features.bit16bit 16Unused; a server writes zero.
features.hardwareMetricsbit 17A report of hardware and frame rate at the end of the match.
features.unusedbit 18 to 31Unused; a server writes zero.
disabledItems64 × u32Items nobody can buy in this match, one place each. A place holds zero where nothing is barred.
Vectors (1)

one-on-4-1

In 4.2

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

It also says which map to load, who is at the match, and everything else settled before play.

FieldTypeWhat it is
agreement1-byte bits
agreement.buildMatchesbit 0Set where the client’s build is one the server serves.
agreement.reportsToFilebit 1Set to have a client also write its reports to a file of its own.
agreement.matchedbit 2Set where the match was put together rather than made by hand.
agreement.reportingReadybit 3Set where the reporting settings below are to be used.
agreement.unusedbit 4 to 7Unused; a server writes zero. A client takes the scripted voice-over setting from its own settings.
mapi32Which map to load. Space keys the path origins by the same maps.
seats12 × SeatEvery place at the match, held or empty.
buildtext, 256 bytesWhich build the server serves. Written out in full and padded with zero bytes to the width above.
modetext, 128 bytesWhich way the match is played, written and padded as above.
variants8 × stringThe variations the match is played under, one place each. A place stands empty where none applies.
variantCountu8How many of the places above are filled.
teamNametext, 97 bytesWhat one side is called where it plays as a standing team, written and padded as above.
teamTagtext, 25 bytesThe short form of that name, written and padded as above.
otherTeamNametext, 97 bytesWhat the other side is called, under the same terms.
otherTeamTagtext, 25 bytesThe short form of that one.
metricsHosttext, 256 bytesWhere a client reports figures about the match, written and padded as above.
metricsPathtext, 256 bytesWhat it asks for there, written and padded as above.
metricsPortu16Which port it reaches that at.
reportingHosttext, 256 bytesWhere a client reports how the match went, written and padded as above.
reportingPathtext, 256 bytesWhat it asks for there, written and padded as above.
reportingPortu16Which port it reaches that at.
altReportingHosttext, 256 bytesA second, test place to report to, written and padded as above.
altReportingPathtext, 256 bytesWhat it asks for there, written and padded as above.
altReportingPortu16Which port it reaches that at.
tipi8Which note the client shows before play.
tipColouri8Which colouring it shows it in.
tipDurationi8Which display time to hold the note up for, applying only where tips are enabled and shown somewhere. tip, tipColour and tipDuration each select one of the notes, colourings and display times a client defines, tip counted modulo the number of notes. Where a value selects none, or the time is not above zero, a client shows no note.
tipFlags1-byte bitsHow the note is shown. A client sends these four bytes back in ClientReady, as it has corrected them.
tipFlags.enabledbit 0Set where there is a note. A client shows the note only where this and loadingScreen or inGame are set, and shows none where tip, tipColour or tipDuration names nothing.
tipFlags.replaybit 1Of no effect; a client clears it, with enabled, while playing a replay.
tipFlags.loadingScreenbit 2Set to show the note on the loading screen.
tipFlags.inGamebit 3Set to show the note during play, in a box on the screen.
tipFlags.cyclebit 4Set to have the box during play show every note in turn.
tipFlags.unusedbit 5 to 7Unused; a server writes zero.
features4-byte bitsWhich parts of the match are turned on, one bit each. A client takes them from the first VersionSync alone and keeps them for the match.
features.balanceVoteCommandsbit 0The chat commands /equalize and /noequalize.
features.menuBackbit 1With menuBack2, a second key that closes the pause and options menu. Alone, the minimap’s showing of neutral camps follows the player’s settings rather than the minimap’s own.
features.menuBack2bit 2Of use only with menuBack.
features.quickChatbit 3Quick chat: its keys and its panel. A client given it fails while loading. A server sends it clear.
features.missileWarningbit 4A missile coming at the client’s side, or at no one, can show before it leaves the fog where it is near for its speed and heading that way. It also has a client lower a hero’s bounty when the hero kills a minion.
features.audioBackendbit 5Which sound system the client uses; which setting picks which is not recorded.
features.animatedCursorsbit 6Cursors of several frames move on a frame every 0.15 seconds of play; clear, they show their first frame.
features.altControlsbit 7Some mouse commands are taken by the time since the click before; what that changes on screen is not recorded.
features.shopUndobit 8The shop’s undo; clear, it is never enabled.
features.skillshotOutlinebit 9While aiming a line spell, the units it would hit are outlined.
features.championIndicatorbit 10The mark over the player’s champion, where their own setting also asks for it.
features.altBountybit 11Another reckoning of kill and assist gold: kill gold and the assist pool grow with time, a run of assists adds gold, and assists and minion gold shorten a run of deaths.
features.waveOrderbit 12Changes the order of the kinds of minion within a wave.
features.turretRangebit 13Enemy turrets’ ranges, where the player’s setting also asks for them; clear, they are never drawn.
features.bit14bit 14Unused; a server writes zero.
features.skinParticlesbit 15Skin-specific particle effects for units in a skin other than the first.
features.bit16bit 16Unused; a server writes zero.
features.hardwareMetricsbit 17A report of hardware and frame rate at the end of the match.
features.lagMetricsbit 18Lag figures in the network report.
features.logServerAddressbit 19It changes nothing a client shows.
features.unusedbit 20 to 31Unused; a server writes zero.
disabledItems64 × u32Items nobody can buy in this match, one place each. A place holds zero where nothing is barred.
Vectors (1)

one-on-4-2

In 4.3–4.4

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

It also says which map to load, who is at the match, and everything else settled before play.

FieldTypeWhat it is
agreement1-byte bits
agreement.buildMatchesbit 0Set where the client’s build is one the server serves.
agreement.reportsToFilebit 1Set to have a client also write its reports to a file of its own, where it does not send them as event reports (features eventReports clear).
agreement.matchedbit 2Set where the match was put together rather than made by hand.
agreement.reportingReadybit 3Set where the reporting settings below are to be used.
agreement.unusedbit 4 to 7Unused; a server writes zero. A client takes the scripted voice-over setting from its own settings.
mapi32Which map to load. Space keys the path origins by the same maps.
seats12 × SeatEvery place at the match, held or empty.
buildtext, 256 bytesWhich build the server serves. Written out in full and padded with zero bytes to the width above.
modetext, 128 bytesWhich way the match is played, written and padded as above.
variants8 × stringThe variations the match is played under, one place each. A place stands empty where none applies.
variantCountu8How many of the places above are filled.
teamNametext, 97 bytesWhat one side is called where it plays as a standing team, written and padded as above.
teamTagtext, 25 bytesThe short form of that name, written and padded as above.
otherTeamNametext, 97 bytesWhat the other side is called, under the same terms.
otherTeamTagtext, 25 bytesThe short form of that one.
metricsHosttext, 256 bytesWhere a client reports figures about the match, written and padded as above.
metricsPathtext, 256 bytesWhat it asks for there, written and padded as above.
metricsPortu16Which port it reaches that at.
reportingHosttext, 256 bytesWhere a client reports how the match went, written and padded as above.
reportingPathtext, 256 bytesWhat it asks for there, written and padded as above.
reportingPortu16Which port it reaches that at.
altReportingHosttext, 256 bytesA second, test place to report to, written and padded as above.
altReportingPathtext, 256 bytesWhat it asks for there, written and padded as above.
altReportingPortu16Which port it reaches that at.
tipi8Which note the client shows before play.
tipColouri8Which colouring it shows it in.
tipDurationi8Which display time to hold the note up for, applying only where tips are enabled and shown somewhere. tip, tipColour and tipDuration each select one of the notes, colourings and display times a client defines, tip counted modulo the number of notes. Where a value selects none, or the time is not above zero, a client shows no note.
tipFlags1-byte bitsHow the note is shown. A client sends these four bytes back in ClientReady, as it has corrected them.
tipFlags.enabledbit 0Set where there is a note. A client shows the note only where this and loadingScreen or inGame are set, and shows none where tip, tipColour or tipDuration names nothing.
tipFlags.replaybit 1Of no effect; a client clears it, with enabled, while playing a replay.
tipFlags.loadingScreenbit 2Set to show the note on the loading screen.
tipFlags.inGamebit 3Set to show the note during play, in a box on the screen.
tipFlags.cyclebit 4Set to have the box during play show every note in turn.
tipFlags.unusedbit 5 to 7Unused; a server writes zero.
features4-byte bitsWhich parts of the match are turned on, one bit each. A client takes them from the first VersionSync alone and keeps them for the match.
features.balanceVoteCommandsbit 0The chat commands /equalize and /noequalize.
features.menuBackbit 1With menuBack2, a second key that closes the pause and options menu. Alone, the minimap’s showing of neutral camps follows the player’s settings rather than the minimap’s own.
features.menuBack2bit 2Of use only with menuBack.
features.quickChatbit 3Quick chat: its keys and its panel. A client given it fails while loading. A server sends it clear.
features.missileWarningbit 4A missile coming at the client’s side, or at no one, can show before it leaves the fog where it is near for its speed and heading that way. It also has a client lower a hero’s bounty when the hero kills a minion.
features.audioBackendbit 5Which sound system the client uses; which setting picks which is not recorded.
features.animatedCursorsbit 6Cursors of several frames move on a frame every 0.15 seconds of play; clear, they show their first frame.
features.altControlsbit 7Some mouse commands are taken by the time since the click before; what that changes on screen is not recorded.
features.shopUndobit 8The shop’s undo; clear, it is never enabled.
features.skillshotOutlinebit 9While aiming a line spell, the units it would hit are outlined.
features.championIndicatorbit 10The mark over the player’s champion, where their own setting also asks for it.
features.altBountybit 11Another reckoning of kill and assist gold: kill gold and the assist pool grow with time, a run of assists adds gold, and assists and minion gold shorten a run of deaths.
features.waveOrderbit 12Changes the order of the kinds of minion within a wave.
features.turretRangebit 13Enemy turrets’ ranges, where the player’s setting also asks for them; clear, they are never drawn.
features.bit14bit 14Unused; a server writes zero.
features.skinParticlesbit 15Skin-specific particle effects for units in a skin other than the first.
features.bit16bit 16Unused; a server writes zero.
features.hardwareMetricsbit 17A report of hardware and frame rate at the end of the match.
features.bit18bit 18Unused; a server writes zero.
features.lagMetricsbit 19Lag figures in the network report.
features.eventReportsbit 20Set, a client sends its reports as event reports; clear, it sends them otherwise, and agreement’s reportsToFile applies.
features.logServerAddressbit 21It changes nothing a client shows.
features.particleOptionbit 22An extra option for drawing particles, in effect from the match’s start; what it changes on screen is not recorded.
features.unusedbit 23 to 31Unused; a server writes zero.
disabledItems64 × u32Items nobody can buy in this match, one place each. A place holds zero where nothing is barred.
reportingMessages8 × u8Which of the reports a client sends are wanted, one place each, in this order: ping use, chat filter, damage figures, active item figures, network figures, hardware figures, server debugging, client debugging. Any nonzero byte marks a report wanted. Zero has no effect.
Vectors (1)

one-on-4-3

In 4.5

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

It also says which map to load, who is at the match, and everything else settled before play.

FieldTypeWhat it is
agreement1-byte bits
agreement.buildMatchesbit 0Set where the client’s build is one the server serves.
agreement.reportsToFilebit 1Set to have a client also write its reports to a file of its own, where it does not send them as event reports (features eventReports clear).
agreement.matchedbit 2Set where the match was put together rather than made by hand.
agreement.reportingReadybit 3Set where the reporting settings below are to be used.
agreement.unusedbit 4 to 7Unused; a server writes zero. A client takes the scripted voice-over setting from its own settings.
mapi32Which map to load. Space keys the path origins by the same maps.
seats12 × SeatEvery place at the match, held or empty.
buildtext, 256 bytesWhich build the server serves. Written out in full and padded with zero bytes to the width above.
modetext, 128 bytesWhich way the match is played, written and padded as above.
variants8 × stringThe variations the match is played under, one place each. A place stands empty where none applies.
variantCountu8How many of the places above are filled.
teamNametext, 97 bytesWhat one side is called where it plays as a standing team, written and padded as above.
teamTagtext, 25 bytesThe short form of that name, written and padded as above.
otherTeamNametext, 97 bytesWhat the other side is called, under the same terms.
otherTeamTagtext, 25 bytesThe short form of that one.
metricsHosttext, 256 bytesWhere a client reports figures about the match, written and padded as above.
metricsPathtext, 256 bytesWhat it asks for there, written and padded as above.
metricsPortu16Which port it reaches that at.
reportingHosttext, 256 bytesWhere a client reports how the match went, written and padded as above.
reportingPathtext, 256 bytesWhat it asks for there, written and padded as above.
reportingPortu16Which port it reaches that at.
altReportingHosttext, 256 bytesA second, test place to report to, written and padded as above.
altReportingPathtext, 256 bytesWhat it asks for there, written and padded as above.
altReportingPortu16Which port it reaches that at.
tipi8Which note the client shows before play.
tipColouri8Which colouring it shows it in.
tipDurationi8Which display time to hold the note up for, applying only where tips are enabled and shown somewhere. tip, tipColour and tipDuration each select one of the notes, colourings and display times a client defines, tip counted modulo the number of notes. Where a value selects none, or the time is not above zero, a client shows no note.
tipFlags1-byte bitsHow the note is shown. A client sends these four bytes back in ClientReady, as it has corrected them.
tipFlags.enabledbit 0Set where there is a note. A client shows the note only where this and loadingScreen or inGame are set, and shows none where tip, tipColour or tipDuration names nothing.
tipFlags.replaybit 1Of no effect; a client clears it, with enabled, while playing a replay.
tipFlags.loadingScreenbit 2Set to show the note on the loading screen.
tipFlags.inGamebit 3Set to show the note during play, in a box on the screen.
tipFlags.cyclebit 4Set to have the box during play show every note in turn.
tipFlags.unusedbit 5 to 7Unused; a server writes zero.
features4-byte bitsWhich parts of the match are turned on, one bit each. A client takes them from the first VersionSync alone and keeps them for the match.
features.balanceVoteCommandsbit 0The chat commands /equalize and /noequalize.
features.menuBackbit 1With menuBack2, a second key that closes the pause and options menu. Alone, the minimap’s showing of neutral camps follows the player’s settings rather than the minimap’s own.
features.menuBack2bit 2Of use only with menuBack.
features.quickChatbit 3Quick chat: its keys and its panel. A client given it fails while loading. A server sends it clear.
features.missileWarningbit 4A missile coming at the client’s side, or at no one, can show before it leaves the fog where it is near for its speed and heading that way. It also has a client lower a hero’s bounty when the hero kills a minion.
features.audioBackendbit 5Which sound system the client uses; which setting picks which is not recorded.
features.animatedCursorsbit 6Cursors of several frames move on a frame every 0.15 seconds of play; clear, they show their first frame.
features.altControlsbit 7Some mouse commands are taken by the time since the click before; what that changes on screen is not recorded.
features.shopUndobit 8The shop’s undo; clear, it is never enabled.
features.recommendedPagesbit 9Pages of recommended items in the shop for new players.
features.skillshotOutlinebit 10While aiming a line spell, the units it would hit are outlined.
features.championIndicatorbit 11The mark over the player’s champion, where their own setting also asks for it.
features.altBountybit 12Another reckoning of kill and assist gold: kill gold and the assist pool grow with time, a run of assists adds gold, and assists and minion gold shorten a run of deaths.
features.waveOrderbit 13Changes the order of the kinds of minion within a wave.
features.turretRangebit 14Enemy turrets’ ranges, where the player’s setting also asks for them; clear, they are never drawn.
features.bit15bit 15Unused; a server writes zero.
features.bit16bit 16Unused; a server writes zero.
features.networkMetricsbit 17Reports of network figures from time to time, where reporting is on (agreement’s reportingReady).
features.hardwareMetricsbit 18A report of hardware and frame rate at the end of the match.
features.bit19bit 19Unused; a server writes zero.
features.lagMetricsbit 20Lag figures in the network report.
features.eventReportsbit 21Set, a client sends its reports as event reports; clear, it sends them otherwise, and agreement’s reportsToFile applies.
features.logServerAddressbit 22It changes nothing a client shows.
features.particleOptionbit 23An extra option for drawing particles, in effect from the match’s start; what it changes on screen is not recorded.
features.unusedbit 24 to 31Unused; a server writes zero.
disabledItems64 × u32Items nobody can buy in this match, one place each. A place holds zero where nothing is barred.
reportingMessages10 × u8Which of the reports a client sends are wanted, one place each, in this order: ping use, chat filter, damage figures, active item figures, network figures, hardware figures, server debugging, client debugging, item shop, injected modules. Any nonzero byte marks a report wanted. Zero has no effect.
Vectors (1)

one-on-4-5

In 4.6

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

It also says which map to load, who is at the match, and everything else settled before play.

FieldTypeWhat it is
agreement1-byte bits
agreement.buildMatchesbit 0Set where the client’s build is one the server serves.
agreement.reportsToFilebit 1Set to have a client also write its reports to a file of its own, where it does not send them as event reports (features eventReports clear).
agreement.matchedbit 2Set where the match was put together rather than made by hand.
agreement.reportingReadybit 3Set where the reporting settings below are to be used.
agreement.unusedbit 4 to 7Unused; a server writes zero. A client takes the scripted voice-over setting from its own settings.
mapi32Which map to load. Space keys the path origins by the same maps.
seats12 × SeatEvery place at the match, held or empty.
buildtext, 256 bytesWhich build the server serves. Written out in full and padded with zero bytes to the width above.
modetext, 128 bytesWhich way the match is played, written and padded as above.
variants8 × stringThe variations the match is played under, one place each. A place stands empty where none applies.
variantCountu8How many of the places above are filled.
teamNametext, 97 bytesWhat one side is called where it plays as a standing team, written and padded as above.
teamTagtext, 25 bytesThe short form of that name, written and padded as above.
otherTeamNametext, 97 bytesWhat the other side is called, under the same terms.
otherTeamTagtext, 25 bytesThe short form of that one.
metricsHosttext, 256 bytesWhere a client reports figures about the match, written and padded as above.
metricsPathtext, 256 bytesWhat it asks for there, written and padded as above.
metricsPortu16Which port it reaches that at.
reportingHosttext, 256 bytesWhere a client reports how the match went, written and padded as above.
reportingPathtext, 256 bytesWhat it asks for there, written and padded as above.
reportingPortu16Which port it reaches that at.
altReportingHosttext, 256 bytesA second, test place to report to, written and padded as above.
altReportingPathtext, 256 bytesWhat it asks for there, written and padded as above.
altReportingPortu16Which port it reaches that at.
tipi8Which note the client shows before play.
tipColouri8Which colouring it shows it in.
tipDurationi8Which display time to hold the note up for, applying only where tips are enabled and shown somewhere. tip, tipColour and tipDuration each select one of the notes, colourings and display times a client defines, tip counted modulo the number of notes. Where a value selects none, or the time is not above zero, a client shows no note.
tipFlags1-byte bitsHow the note is shown. A client sends these four bytes back in ClientReady, as it has corrected them.
tipFlags.enabledbit 0Set where there is a note. A client shows the note only where this and loadingScreen or inGame are set, and shows none where tip, tipColour or tipDuration names nothing.
tipFlags.replaybit 1Of no effect; a client clears it, with enabled, while playing a replay.
tipFlags.loadingScreenbit 2Set to show the note on the loading screen.
tipFlags.inGamebit 3Set to show the note during play, in a box on the screen.
tipFlags.cyclebit 4Set to have the box during play show every note in turn.
tipFlags.unusedbit 5 to 7Unused; a server writes zero.
features4-byte bitsWhich parts of the match are turned on, one bit each. A client takes them from the first VersionSync alone and keeps them for the match.
features.balanceVoteCommandsbit 0The chat commands /equalize and /noequalize.
features.menuBackbit 1With menuBack2, a second key that closes the pause and options menu. Alone, the minimap’s showing of neutral camps follows the player’s settings rather than the minimap’s own.
features.menuBack2bit 2Of use only with menuBack.
features.quickChatbit 3Quick chat: its keys and its panel. A client given it fails while loading. A server sends it clear.
features.missileWarningbit 4A missile coming at the client’s side, or at no one, can show before it leaves the fog where it is near for its speed and heading that way. It also has a client lower a hero’s bounty when the hero kills a minion.
features.audioBackendbit 5Which sound system the client uses; which setting picks which is not recorded.
features.animatedCursorsbit 6Cursors of several frames move on a frame every 0.15 seconds of play; clear, they show their first frame.
features.altControlsbit 7Some mouse commands are taken by the time since the click before; what that changes on screen is not recorded.
features.shopUndobit 8The shop’s undo; clear, it is never enabled.
features.recommendedPagesbit 9Pages of recommended items in the shop for new players.
features.skillshotOutlinebit 10While aiming a line spell, the units it would hit are outlined.
features.championIndicatorbit 11The mark over the player’s champion, where their own setting also asks for it.
features.altBountybit 12Another reckoning of kill and assist gold: kill gold and the assist pool grow with time, a run of assists adds gold, and assists and minion gold shorten a run of deaths.
features.waveOrderbit 13Changes the order of the kinds of minion within a wave.
features.turretRangebit 14Enemy turrets’ ranges, where the player’s setting also asks for them; clear, they are never drawn.
features.bit15bit 15Unused; a server writes zero.
features.bit16bit 16Unused; a server writes zero.
features.networkMetricsbit 17Reports of network figures from time to time, where reporting is on (agreement’s reportingReady).
features.hardwareMetricsbit 18A report of hardware and frame rate at the end of the match.
features.bit19bit 19Unused; a server writes zero.
features.lagMetricsbit 20Lag figures in the network report.
features.eventReportsbit 21Set, a client sends its reports as event reports; clear, it sends them otherwise, and agreement’s reportsToFile applies.
features.logServerAddressbit 22It changes nothing a client shows.
features.particleOptionbit 23An extra option for drawing particles, in effect from the match’s start; what it changes on screen is not recorded.
features.unusedbit 24 to 31Unused; a server writes zero.
disabledItems64 × u32Items nobody can buy in this match, one place each. A place holds zero where nothing is barred.
reportingMessages11 × u8Which of the reports a client sends are wanted, one place each, in this order: ping use, chat filter, damage figures, active item figures, network figures, hardware figures, server debugging, client debugging, item shop, injected modules, suspicious behaviour. Any nonzero byte marks a report wanted. Zero has no effect.
Vectors (1)

one-on-4-6

In 4.7

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

It also says which map to load, who is at the match, and everything else settled before play.

FieldTypeWhat it is
agreement1-byte bits
agreement.buildMatchesbit 0Set where the client’s build is one the server serves.
agreement.reportsToFilebit 1Set to have a client also write its reports to a file of its own, where it does not send them as event reports (features eventReports clear).
agreement.matchedbit 2Set where the match was put together rather than made by hand.
agreement.reportingReadybit 3Set where the reporting settings below are to be used.
agreement.unusedbit 4 to 7Unused; a server writes zero. A client takes the scripted voice-over setting from its own settings.
mapi32Which map to load. Space keys the path origins by the same maps.
seats12 × SeatEvery place at the match, held or empty.
buildtext, 256 bytesWhich build the server serves. Written out in full and padded with zero bytes to the width above.
modetext, 128 bytesWhich way the match is played, written and padded as above.
variants8 × stringThe variations the match is played under, one place each. A place stands empty where none applies.
variantCountu8How many of the places above are filled.
teamNametext, 97 bytesWhat one side is called where it plays as a standing team, written and padded as above.
teamTagtext, 25 bytesThe short form of that name, written and padded as above.
otherTeamNametext, 97 bytesWhat the other side is called, under the same terms.
otherTeamTagtext, 25 bytesThe short form of that one.
metricsHosttext, 256 bytesWhere a client reports figures about the match, written and padded as above.
metricsPathtext, 256 bytesWhat it asks for there, written and padded as above.
metricsPortu16Which port it reaches that at.
reportingHosttext, 256 bytesWhere a client reports how the match went, written and padded as above.
reportingPathtext, 256 bytesWhat it asks for there, written and padded as above.
reportingPortu16Which port it reaches that at.
altReportingHosttext, 256 bytesA second, test place to report to, written and padded as above.
altReportingPathtext, 256 bytesWhat it asks for there, written and padded as above.
altReportingPortu16Which port it reaches that at.
tipi8Which note the client shows before play.
tipColouri8Which colouring it shows it in.
tipDurationi8Which display time to hold the note up for, applying only where tips are enabled and shown somewhere. tip, tipColour and tipDuration each select one of the notes, colourings and display times a client defines, tip counted modulo the number of notes. Where a value selects none, or the time is not above zero, a client shows no note.
tipFlags1-byte bitsHow the note is shown. A client sends these four bytes back in ClientReady, as it has corrected them.
tipFlags.enabledbit 0Set where there is a note. A client shows the note only where this and loadingScreen or inGame are set, and shows none where tip, tipColour or tipDuration names nothing.
tipFlags.replaybit 1Of no effect; a client clears it, with enabled, while playing a replay.
tipFlags.loadingScreenbit 2Set to show the note on the loading screen.
tipFlags.inGamebit 3Set to show the note during play, in a box on the screen.
tipFlags.cyclebit 4Set to have the box during play show every note in turn.
tipFlags.unusedbit 5 to 7Unused; a server writes zero.
features4-byte bitsWhich parts of the match are turned on, one bit each. A client takes them from the first VersionSync alone and keeps them for the match.
features.balanceVoteCommandsbit 0The chat commands /equalize and /noequalize.
features.menuBackbit 1With menuBack2, a second key that closes the pause and options menu. Alone, the minimap’s showing of neutral camps follows the player’s settings rather than the minimap’s own.
features.menuBack2bit 2Of use only with menuBack.
features.quickChatbit 3Quick chat: its keys and its panel. A client given it fails while loading. A server sends it clear.
features.missileWarningbit 4A missile coming at the client’s side, or at no one, can show before it leaves the fog where it is near for its speed and heading that way. It also has a client lower a hero’s bounty when the hero kills a minion.
features.audioBackendbit 5Which sound system the client uses; which setting picks which is not recorded.
features.animatedCursorsbit 6Cursors of several frames move on a frame every 0.15 seconds of play; clear, they show their first frame.
features.altControlsbit 7Some mouse commands are taken by the time since the click before; what that changes on screen is not recorded.
features.shopUndobit 8The shop’s undo; clear, it is never enabled.
features.recommendedPagesbit 9Pages of recommended items in the shop for new players.
features.skillshotOutlinebit 10While aiming a line spell, the units it would hit are outlined.
features.championIndicatorbit 11The mark over the player’s champion, where their own setting also asks for it.
features.altBountybit 12Another reckoning of kill and assist gold: kill gold and the assist pool grow with time, a run of assists adds gold, and assists and minion gold shorten a run of deaths.
features.waveOrderbit 13Changes the order of the kinds of minion within a wave.
features.turretRangebit 14Enemy turrets’ ranges, where the player’s setting also asks for them; clear, they are never drawn.
features.bit15bit 15Unused; a server writes zero.
features.bit16bit 16Unused; a server writes zero.
features.networkMetricsbit 17Reports of network figures from time to time, where reporting is on (agreement’s reportingReady).
features.hardwareMetricsbit 18A report of hardware and frame rate at the end of the match.
features.bit19bit 19Unused; a server writes zero.
features.lagMetricsbit 20Lag figures in the network report.
features.eventReportsbit 21Set, a client sends its reports as event reports; clear, it sends them otherwise, and agreement’s reportsToFile applies.
features.logServerAddressbit 22It changes nothing a client shows.
features.unusedbit 23 to 31Unused; a server writes zero.
disabledItems64 × u32Items nobody can buy in this match, one place each. A place holds zero where nothing is barred.
reportingMessages11 × u8Which of the reports a client sends are wanted, one place each, in this order: ping use, chat filter, damage figures, active item figures, network figures, hardware figures, server debugging, client debugging, item shop, injected modules, suspicious behaviour. Any nonzero byte marks a report wanted. Zero has no effect.
Vectors (1)

one-on-4-7

In 4.8

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

It also says which map to load, who is at the match, and everything else settled before play.

FieldTypeWhat it is
agreement1-byte bits
agreement.buildMatchesbit 0Set where the client’s build is one the server serves.
agreement.reportsToFilebit 1Set to have a client also write its reports to a file of its own, where it does not send them as event reports (features eventReports clear).
agreement.matchedbit 2Set where the match was put together rather than made by hand.
agreement.reportingReadybit 3Set where the reporting settings below are to be used.
agreement.unusedbit 4 to 7Unused; a server writes zero. A client takes the scripted voice-over setting from its own settings.
mapi32Which map to load. Space keys the path origins by the same maps.
seats12 × SeatEvery place at the match, held or empty.
buildtext, 256 bytesWhich build the server serves. Written out in full and padded with zero bytes to the width above.
modetext, 128 bytesWhich way the match is played, written and padded as above.
variants8 × stringThe variations the match is played under, one place each. A place stands empty where none applies.
variantCountu8How many of the places above are filled.
teamNametext, 97 bytesWhat one side is called where it plays as a standing team, written and padded as above.
teamTagtext, 25 bytesThe short form of that name, written and padded as above.
otherTeamNametext, 97 bytesWhat the other side is called, under the same terms.
otherTeamTagtext, 25 bytesThe short form of that one.
metricsHosttext, 256 bytesWhere a client reports figures about the match, written and padded as above.
metricsPathtext, 256 bytesWhat it asks for there, written and padded as above.
metricsPortu16Which port it reaches that at.
reportingHosttext, 256 bytesWhere a client reports how the match went, written and padded as above.
reportingPathtext, 256 bytesWhat it asks for there, written and padded as above.
reportingPortu16Which port it reaches that at.
altReportingHosttext, 256 bytesA second, test place to report to, written and padded as above.
altReportingPathtext, 256 bytesWhat it asks for there, written and padded as above.
altReportingPortu16Which port it reaches that at.
tipi8Which note the client shows before play.
tipColouri8Which colouring it shows it in.
tipDurationi8Which display time to hold the note up for, applying only where tips are enabled and shown somewhere. tip, tipColour and tipDuration each select one of the notes, colourings and display times a client defines, tip counted modulo the number of notes. Where a value selects none, or the time is not above zero, a client shows no note.
tipFlags1-byte bitsHow the note is shown. A client sends these four bytes back in ClientReady, as it has corrected them.
tipFlags.enabledbit 0Set where there is a note. A client shows the note only where this and loadingScreen or inGame are set, and shows none where tip, tipColour or tipDuration names nothing.
tipFlags.replaybit 1Of no effect; a client clears it, with enabled, while playing a replay.
tipFlags.loadingScreenbit 2Set to show the note on the loading screen.
tipFlags.inGamebit 3Set to show the note during play, in a box on the screen.
tipFlags.cyclebit 4Set to have the box during play show every note in turn.
tipFlags.unusedbit 5 to 7Unused; a server writes zero.
features4-byte bitsWhich parts of the match are turned on, one bit each. A client takes them from the first VersionSync alone and keeps them for the match.
features.balanceVoteCommandsbit 0The chat commands /equalize and /noequalize.
features.menuBackbit 1With menuBack2, a second key that closes the pause and options menu. Alone, the minimap’s showing of neutral camps follows the player’s settings rather than the minimap’s own.
features.menuBack2bit 2Of use only with menuBack.
features.quickChatbit 3Quick chat: its keys and its panel. A client given it fails while loading. A server sends it clear.
features.missileWarningbit 4A missile coming at the client’s side, or at no one, can show before it leaves the fog where it is near for its speed and heading that way. It also has a client lower a hero’s bounty when the hero kills a minion.
features.audioBackendbit 5Which sound system the client uses; which setting picks which is not recorded.
features.animatedCursorsbit 6Cursors of several frames move on a frame every 0.15 seconds of play; clear, they show their first frame.
features.shopUndobit 7The shop’s undo; clear, it is never enabled.
features.recommendedPagesbit 8Pages of recommended items in the shop for new players.
features.skillshotOutlinebit 9While aiming a line spell, the units it would hit are outlined.
features.championIndicatorbit 10The mark over the player’s champion, where their own setting also asks for it.
features.altBountybit 11Another reckoning of kill and assist gold: kill gold and the assist pool grow with time, a run of assists adds gold, and assists and minion gold shorten a run of deaths.
features.waveOrderbit 12Changes the order of the kinds of minion within a wave.
features.turretRangebit 13Enemy turrets’ ranges, where the player’s setting also asks for them; clear, they are never drawn.
features.bit14bit 14Unused; a server writes zero.
features.skinParticlesbit 15Skin-specific particle effects for units in a skin other than the first.
features.bit16bit 16Unused; a server writes zero.
features.hardwareMetricsbit 17A report of hardware and frame rate at the end of the match.
features.bit18bit 18Unused; a server writes zero.
features.lagMetricsbit 19Lag figures in the network report.
features.eventReportsbit 20Set, a client sends its reports as event reports; clear, it sends them otherwise, and agreement’s reportsToFile applies.
features.logServerAddressbit 21It changes nothing a client shows.
features.unusedbit 22 to 31Unused; a server writes zero.
disabledItems64 × u32Items nobody can buy in this match, one place each. A place holds zero where nothing is barred.
reportingMessages13 × u8Which of the reports a client sends are wanted, one place each, in this order: ping use, chat filter, damage figures, active item figures, network figures, hardware figures, server debugging, client debugging, item shop, injected modules, suspicious behaviour, skin swaps, failure to connect. Any nonzero byte marks a report wanted. Zero has no effect.
Vectors (1)

one-on-4-8

In 4.9

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

It also says which map to load, who is at the match, and everything else settled before play.

FieldTypeWhat it is
agreement1-byte bits
agreement.buildMatchesbit 0Set where the client’s build is one the server serves.
agreement.reportsToFilebit 1Set to have a client also write its reports to a file of its own, where it does not send them as event reports (features eventReports clear).
agreement.matchedbit 2Set where the match was put together rather than made by hand.
agreement.reportingReadybit 3Set where the reporting settings below are to be used.
agreement.unusedbit 4 to 7Unused; a server writes zero. A client takes the scripted voice-over setting from its own settings.
mapi32Which map to load. Space keys the path origins by the same maps.
seats12 × SeatEvery place at the match, held or empty.
buildtext, 256 bytesWhich build the server serves. Written out in full and padded with zero bytes to the width above.
modetext, 128 bytesWhich way the match is played, written and padded as above.
variants8 × stringThe variations the match is played under, one place each. A place stands empty where none applies.
variantCountu8How many of the places above are filled.
teamNametext, 97 bytesWhat one side is called where it plays as a standing team, written and padded as above.
teamTagtext, 25 bytesThe short form of that name, written and padded as above.
otherTeamNametext, 97 bytesWhat the other side is called, under the same terms.
otherTeamTagtext, 25 bytesThe short form of that one.
metricsHosttext, 256 bytesWhere a client reports figures about the match, written and padded as above.
metricsPathtext, 256 bytesWhat it asks for there, written and padded as above.
metricsPortu16Which port it reaches that at.
reportingHosttext, 256 bytesWhere a client reports how the match went, written and padded as above.
reportingPathtext, 256 bytesWhat it asks for there, written and padded as above.
reportingPortu16Which port it reaches that at.
altReportingHosttext, 256 bytesA second, test place to report to, written and padded as above.
altReportingPathtext, 256 bytesWhat it asks for there, written and padded as above.
altReportingPortu16Which port it reaches that at.
tipi8Which note the client shows before play.
tipColouri8Which colouring it shows it in.
tipDurationi8Which display time to hold the note up for, applying only where tips are enabled and shown somewhere. tip, tipColour and tipDuration each select one of the notes, colourings and display times a client defines, tip counted modulo the number of notes. Where a value selects none, or the time is not above zero, a client shows no note.
tipFlags1-byte bitsHow the note is shown. A client sends these four bytes back in ClientReady, as it has corrected them.
tipFlags.enabledbit 0Set where there is a note. A client shows the note only where this and loadingScreen or inGame are set, and shows none where tip, tipColour or tipDuration names nothing.
tipFlags.replaybit 1Of no effect; a client clears it, with enabled, while playing a replay.
tipFlags.loadingScreenbit 2Set to show the note on the loading screen.
tipFlags.inGamebit 3Set to show the note during play, in a box on the screen.
tipFlags.cyclebit 4Set to have the box during play show every note in turn.
tipFlags.unusedbit 5 to 7Unused; a server writes zero.
features8-byte bitsWhich parts of the match are turned on, one bit each.
features.balanceVoteCommandsbit 0The chat commands /equalize and /noequalize.
features.menuBackbit 1With menuBack2, a second key that closes the pause and options menu. Alone, the minimap’s showing of neutral camps follows the player’s settings rather than the minimap’s own.
features.menuBack2bit 2Of use only with menuBack.
features.quickChatbit 3Quick chat: its keys and its panel. A client given it fails while loading. A server sends it clear.
features.missileWarningbit 4A missile coming at the client’s side, or at no one, can show before it leaves the fog where it is near for its speed and heading that way.
features.audioBackendbit 5Which sound system the client uses; which setting picks which is not recorded.
features.animatedCursorsbit 6Cursors of several frames move on a frame every 0.15 seconds of play; clear, they show their first frame.
features.shopUndobit 7The shop’s undo; clear, it is never enabled.
features.recommendedPagesbit 8Pages of recommended items in the shop for new players.
features.skillshotOutlinebit 9While aiming a line spell, the units it would hit are outlined.
features.championIndicatorbit 10The mark over the player’s champion, where their own setting also asks for it.
features.altBountybit 11Another reckoning of kill and assist gold: kill gold and the assist pool grow with time, a run of assists adds gold, and assists and minion gold shorten a run of deaths.
features.waveOrderbit 12Changes the order of the kinds of minion within a wave.
features.turretRangebit 13Enemy turrets’ ranges, where the player’s setting also asks for them; clear, they are never drawn.
features.bit14bit 14Unused; a server writes zero.
features.skinParticlesbit 15Skin-specific particle effects for units in a skin other than the first.
features.networkMetricsbit 16Reports of network figures from time to time, where reporting is on (agreement’s reportingReady).
features.hardwareMetricsbit 17A report of hardware and frame rate at the end of the match.
features.lagMetricsbit 18Lag figures in the network report.
features.eventReportsbit 19Set, a client sends its reports as event reports; clear, it sends them otherwise, and agreement’s reportsToFile applies.
features.logServerAddressbit 20It changes nothing a client shows.
features.bit21bit 21Unused; a server writes zero.
features.bit22bit 22Unused; a server writes zero.
features.traceroutebit 23A trace of the route to the server, begun after this message and reported later, where reporting is on.
features.unusedbit 24 to 55Unused; a server writes zero.
features.unusedHighbit 56 to 63Unused; a server writes zero.
disabledItems64 × u32Items nobody can buy in this match, one place each. A place holds zero where nothing is barred.
reportingMessages14 × u8Which of the reports a client sends are wanted, one place each, in this order: ping use, chat filter, damage figures, active item figures, network figures, hardware figures, server debugging, client debugging, item shop, injected modules, suspicious behaviour, skin swaps, failure to connect, traceroute. Any nonzero byte marks a report wanted. Zero has no effect.
Vectors (1)

one-on-4-9

In 4.10–4.11

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

BuildsCommand
4.1083
4.1184

It also says which map to load, who is at the match, and everything else settled before play.

FieldTypeWhat it is
agreement1-byte bits
agreement.buildMatchesbit 0Set where the client’s build is one the server serves.
agreement.reportsToFilebit 1Set to have a client also write its reports to a file of its own, where it does not send them as event reports (features eventReports clear).
agreement.matchedbit 2Set where the match was put together rather than made by hand.
agreement.reportingReadybit 3Set where the reporting settings below are to be used.
agreement.unusedbit 4 to 7Unused; a server writes zero. A client takes the scripted voice-over setting from its own settings.
mapi32Which map to load. Space keys the path origins by the same maps.
seats12 × SeatEvery place at the match, held or empty.
buildtext, 256 bytesWhich build the server serves. Written out in full and padded with zero bytes to the width above.
modetext, 128 bytesWhich way the match is played, written and padded as above.
variants8 × stringThe variations the match is played under, one place each. A place stands empty where none applies.
variantCountu8How many of the places above are filled.
teamNametext, 97 bytesWhat one side is called where it plays as a standing team, written and padded as above.
teamTagtext, 25 bytesThe short form of that name, written and padded as above.
otherTeamNametext, 97 bytesWhat the other side is called, under the same terms.
otherTeamTagtext, 25 bytesThe short form of that one.
metricsHosttext, 256 bytesWhere a client reports figures about the match, written and padded as above.
metricsPathtext, 256 bytesWhat it asks for there, written and padded as above.
metricsPortu16Which port it reaches that at.
reportingHosttext, 256 bytesWhere a client reports how the match went, written and padded as above.
reportingPathtext, 256 bytesWhat it asks for there, written and padded as above.
reportingPortu16Which port it reaches that at.
altReportingHosttext, 256 bytesA second, test place to report to, written and padded as above.
altReportingPathtext, 256 bytesWhat it asks for there, written and padded as above.
altReportingPortu16Which port it reaches that at.
tipi8Which note the client shows before play.
tipColouri8Which colouring it shows it in.
tipDurationi8Which display time to hold the note up for, applying only where tips are enabled and shown somewhere. tip, tipColour and tipDuration each select one of the notes, colourings and display times a client defines, tip counted modulo the number of notes. Where a value selects none, or the time is not above zero, a client shows no note.
tipFlags1-byte bitsHow the note is shown. A client sends these four bytes back in ClientReady, as it has corrected them.
tipFlags.enabledbit 0Set where there is a note. A client shows the note only where this and loadingScreen or inGame are set, and shows none where tip, tipColour or tipDuration names nothing.
tipFlags.replaybit 1Of no effect; a client clears it, with enabled, while playing a replay.
tipFlags.loadingScreenbit 2Set to show the note on the loading screen.
tipFlags.inGamebit 3Set to show the note during play, in a box on the screen.
tipFlags.cyclebit 4Set to have the box during play show every note in turn.
tipFlags.unusedbit 5 to 7Unused; a server writes zero.
features8-byte bitsWhich parts of the match are turned on, one bit each.
features.balanceVoteCommandsbit 0The chat commands /equalize and /noequalize.
features.menuBackbit 1With menuBack2, a second key that closes the pause and options menu. Alone, the minimap’s showing of neutral camps follows the player’s settings rather than the minimap’s own.
features.menuBack2bit 2Of use only with menuBack.
features.quickChatbit 3Quick chat: its keys and its panel. A client given it fails while loading. A server sends it clear.
features.missileWarningbit 4A missile coming at the client’s side, or at no one, can show before it leaves the fog where it is near for its speed and heading that way.
features.audioBackendbit 5Which sound system the client uses; which setting picks which is not recorded.
features.animatedCursorsbit 6Cursors of several frames move on a frame every 0.15 seconds of play; clear, they show their first frame.
features.shopUndobit 7The shop’s undo; clear, it is never enabled.
features.recommendedPagesbit 8Pages of recommended items in the shop for new players.
features.skillshotOutlinebit 9While aiming a line spell, the units it would hit are outlined.
features.championIndicatorbit 10The mark over the player’s champion, where their own setting also asks for it.
features.altBountybit 11Another reckoning of kill and assist gold: kill gold and the assist pool grow with time, a run of assists adds gold, and assists and minion gold shorten a run of deaths.
features.waveOrderbit 12Changes the order of the kinds of minion within a wave.
features.turretRangebit 13Enemy turrets’ ranges, where the player’s setting also asks for them; clear, they are never drawn.
features.bit14bit 14Unused; a server writes zero.
features.skinParticlesbit 15Skin-specific particle effects for units in a skin other than the first.
features.networkMetricsbit 16Reports of network figures from time to time, where reporting is on (agreement’s reportingReady).
features.hardwareMetricsbit 17A report of hardware and frame rate at the end of the match.
features.lagMetricsbit 18Lag figures in the network report.
features.eventReportsbit 19Set, a client sends its reports as event reports; clear, it sends them otherwise, and agreement’s reportsToFile applies.
features.logServerAddressbit 20It changes nothing a client shows.
features.bit21bit 21Unused; a server writes zero.
features.jungleTimersbit 22Timers for the jungle camps on the screen.
features.traceroutebit 23A trace of the route to the server, begun after this message and reported later, where reporting is on.
features.unusedbit 24 to 55Unused; a server writes zero.
features.unusedHighbit 56 to 63Unused; a server writes zero.
disabledItems64 × u32Items nobody can buy in this match, one place each. A place holds zero where nothing is barred.
reportingMessages14 × u8Which of the reports a client sends are wanted, one place each, in this order: ping use, chat filter, damage figures, active item figures, network figures, hardware figures, server debugging, client debugging, item shop, injected modules, suspicious behaviour, skin swaps, failure to connect, traceroute. Any nonzero byte marks a report wanted. Zero has no effect.
Vectors (2)

one-on-4-10, one-on-4-11

In 4.12–4.13

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

It also says which map to load, who is at the match, and everything else settled before play.

FieldTypeWhat it is
agreement1-byte bits
agreement.buildMatchesbit 0Set where the client’s build is one the server serves.
agreement.reportsToFilebit 1Set to have a client also write its reports to a file of its own, where it does not send them as event reports (features eventReports clear).
agreement.matchedbit 2Set where the match was put together rather than made by hand.
agreement.reportingReadybit 3Set where the reporting settings below are to be used.
agreement.unusedbit 4 to 7Unused; a server writes zero. A client takes the scripted voice-over setting from its own settings.
mapi32Which map to load. Space keys the path origins by the same maps.
seats12 × SeatEvery place at the match, held or empty.
buildtext, 256 bytesWhich build the server serves. Written out in full and padded with zero bytes to the width above.
modetext, 128 bytesWhich way the match is played, written and padded as above.
platformtext, 32 bytesWhich platform the match belongs to, written and padded as above.
variants8 × stringThe variations the match is played under, one place each. A place stands empty where none applies.
variantCountu8How many of the places above are filled.
teamNametext, 97 bytesWhat one side is called where it plays as a standing team, written and padded as above.
teamTagtext, 25 bytesThe short form of that name, written and padded as above.
otherTeamNametext, 97 bytesWhat the other side is called, under the same terms.
otherTeamTagtext, 25 bytesThe short form of that one.
metricsHosttext, 256 bytesWhere a client reports figures about the match, written and padded as above.
metricsPathtext, 256 bytesWhat it asks for there, written and padded as above.
metricsPortu16Which port it reaches that at.
reportingHosttext, 256 bytesWhere a client reports how the match went, written and padded as above.
reportingPathtext, 256 bytesWhat it asks for there, written and padded as above.
reportingPortu16Which port it reaches that at.
altReportingHosttext, 256 bytesA second, test place to report to, written and padded as above.
altReportingPathtext, 256 bytesWhat it asks for there, written and padded as above.
altReportingPortu16Which port it reaches that at.
tipi8Which note the client shows before play.
tipColouri8Which colouring it shows it in.
tipDurationi8Which display time to hold the note up for, applying only where tips are enabled and shown somewhere. tip, tipColour and tipDuration each select one of the notes, colourings and display times a client defines, tip counted modulo the number of notes. Where a value selects none, or the time is not above zero, a client shows no note.
tipFlags1-byte bitsHow the note is shown. A client sends these four bytes back in ClientReady, as it has corrected them.
tipFlags.enabledbit 0Set where there is a note. A client shows the note only where this and loadingScreen or inGame are set, and shows none where tip, tipColour or tipDuration names nothing.
tipFlags.replaybit 1Of no effect; a client clears it, with enabled, while playing a replay.
tipFlags.loadingScreenbit 2Set to show the note on the loading screen.
tipFlags.inGamebit 3Set to show the note during play, in a box on the screen.
tipFlags.cyclebit 4Set to have the box during play show every note in turn.
tipFlags.unusedbit 5 to 7Unused; a server writes zero.
features8-byte bitsWhich parts of the match are turned on, one bit each.
features.balanceVoteCommandsbit 0The chat commands /equalize and /noequalize.
features.menuBackbit 1With menuBack2, a second key that closes the pause and options menu. Alone, the minimap’s showing of neutral camps follows the player’s settings rather than the minimap’s own.
features.menuBack2bit 2Of use only with menuBack.
features.quickChatbit 3Quick chat: its keys and its panel. A client given it fails while loading. A server sends it clear.
features.missileWarningbit 4A missile coming at the client’s side, or at no one, can show before it leaves the fog where it is near for its speed and heading that way.
features.audioBackendbit 5Which sound system the client uses; which setting picks which is not recorded.
features.animatedCursorsbit 6Cursors of several frames move on a frame every 0.15 seconds of play; clear, they show their first frame.
features.shopUndobit 7The shop’s undo; clear, it is never enabled.
features.bit8bit 8Unused; a server writes zero.
features.skillshotOutlinebit 9While aiming a line spell, the units it would hit are outlined.
features.championIndicatorbit 10The mark over the player’s champion, where their own setting also asks for it.
features.altBountybit 11Another reckoning of kill and assist gold: kill gold and the assist pool grow with time, a run of assists adds gold, and assists and minion gold shorten a run of deaths.
features.waveOrderbit 12Changes the order of the kinds of minion within a wave.
features.turretRangebit 13Enemy turrets’ ranges, where the player’s setting also asks for them; clear, they are never drawn.
features.bit14bit 14Unused; a server writes zero.
features.skinParticlesbit 15Skin-specific particle effects for units in a skin other than the first.
features.networkMetricsbit 16Reports of network figures from time to time, where reporting is on (agreement’s reportingReady).
features.hardwareMetricsbit 17A report of hardware and frame rate at the end of the match.
features.lagMetricsbit 18Lag figures in the network report.
features.eventReportsbit 19Set, a client sends its reports as event reports; clear, it sends them otherwise, and agreement’s reportsToFile applies.
features.logServerAddressbit 20It changes nothing a client shows.
features.jungleTimersbit 21Timers for the jungle camps on the screen.
features.traceroutebit 22A trace of the route to the server, begun after this message and reported later, where reporting is on.
features.unusedbit 23 to 54Unused; a server writes zero.
features.unusedHighbit 55 to 63Unused; a server writes zero.
disabledItems64 × u32Items nobody can buy in this match, one place each. A place holds zero where nothing is barred.
reportingMessages18 × u8Which of the reports a client sends are wanted, one place each, in this order: game start, game end, ping use, chat filter, damage figures, active item figures, network figures, hardware figures, server debugging, client debugging, item shop, injected modules, suspicious behaviour, skin swaps, failure to connect, traceroute, network instrumentation, peer network instrumentation. Any nonzero byte marks a report wanted. Zero has no effect.
Vectors (1)

one-on-4-12

In 4.14

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

It also says which map to load, who is at the match, and everything else settled before play.

FieldTypeWhat it is
agreement1-byte bits
agreement.buildMatchesbit 0Set where the client’s build is one the server serves.
agreement.reportsToFilebit 1Set to have a client also write its reports to a file of its own, where it does not send them as event reports (features eventReports clear).
agreement.matchedbit 2Set where the match was put together rather than made by hand.
agreement.reportingReadybit 3Set where the reporting settings below are to be used.
agreement.unusedbit 4 to 7Unused; a server writes zero. A client takes the scripted voice-over setting from its own settings.
mapi32Which map to load. Space keys the path origins by the same maps.
seats12 × SeatEvery place at the match, held or empty.
buildtext, 256 bytesWhich build the server serves. Written out in full and padded with zero bytes to the width above.
modetext, 128 bytesWhich way the match is played, written and padded as above.
platformtext, 32 bytesWhich platform the match belongs to, written and padded as above.
variants8 × stringThe variations the match is played under, one place each. A place stands empty where none applies.
variantCountu8How many of the places above are filled.
teamNametext, 97 bytesWhat one side is called where it plays as a standing team, written and padded as above.
teamTagtext, 25 bytesThe short form of that name, written and padded as above.
otherTeamNametext, 97 bytesWhat the other side is called, under the same terms.
otherTeamTagtext, 25 bytesThe short form of that one.
metricsHosttext, 256 bytesWhere a client reports figures about the match, written and padded as above.
metricsPathtext, 256 bytesWhat it asks for there, written and padded as above.
metricsPortu16Which port it reaches that at.
reportingHosttext, 256 bytesWhere a client reports how the match went, written and padded as above.
reportingPathtext, 256 bytesWhat it asks for there, written and padded as above.
reportingPortu16Which port it reaches that at.
altReportingHosttext, 256 bytesA second, test place to report to, written and padded as above.
altReportingPathtext, 256 bytesWhat it asks for there, written and padded as above.
altReportingPortu16Which port it reaches that at.
tipi8Which note the client shows before play.
tipColouri8Which colouring it shows it in.
tipDurationi8Which display time to hold the note up for, applying only where tips are enabled and shown somewhere. tip, tipColour and tipDuration each select one of the notes, colourings and display times a client defines, tip counted modulo the number of notes. Where a value selects none, or the time is not above zero, a client shows no note.
tipFlags1-byte bitsHow the note is shown. A client sends these four bytes back in ClientReady, as it has corrected them.
tipFlags.enabledbit 0Set where there is a note. A client shows the note only where this and loadingScreen or inGame are set, and shows none where tip, tipColour or tipDuration names nothing.
tipFlags.replaybit 1Of no effect; a client clears it, with enabled, while playing a replay.
tipFlags.loadingScreenbit 2Set to show the note on the loading screen.
tipFlags.inGamebit 3Set to show the note during play, in a box on the screen.
tipFlags.cyclebit 4Set to have the box during play show every note in turn.
tipFlags.unusedbit 5 to 7Unused; a server writes zero.
features8-byte bitsWhich parts of the match are turned on, one bit each.
features.balanceVoteCommandsbit 0The chat commands /equalize and /noequalize.
features.menuBackbit 1With menuBack2, a second key that closes the pause and options menu. Alone, the minimap’s showing of neutral camps follows the player’s settings rather than the minimap’s own.
features.menuBack2bit 2Of use only with menuBack.
features.quickChatbit 3Quick chat: its keys and its panel. A client given it fails while loading. A server sends it clear.
features.missileWarningbit 4A missile coming at the client’s side, or at no one, can show before it leaves the fog where it is near for its speed and heading that way.
features.audioBackendbit 5Which sound system the client uses; which setting picks which is not recorded.
features.animatedCursorsbit 6Cursors of several frames move on a frame every 0.15 seconds of play; clear, they show their first frame.
features.shopUndobit 7The shop’s undo; clear, it is never enabled.
features.bit8bit 8Unused; a server writes zero.
features.skillshotOutlinebit 9While aiming a line spell, the units it would hit are outlined.
features.championIndicatorbit 10The mark over the player’s champion, where their own setting also asks for it.
features.altBountybit 11Another reckoning of kill and assist gold: kill gold and the assist pool grow with time, a run of assists adds gold, and assists and minion gold shorten a run of deaths.
features.waveOrderbit 12Changes the order of the kinds of minion within a wave.
features.turretRangebit 13Enemy turrets’ ranges, where the player’s setting also asks for them; clear, they are never drawn.
features.bit14bit 14Unused; a server writes zero.
features.skinParticlesbit 15Skin-specific particle effects for units in a skin other than the first.
features.networkMetricsbit 16Reports of network figures from time to time, where reporting is on (agreement’s reportingReady).
features.hardwareMetricsbit 17A report of hardware and frame rate at the end of the match.
features.lagMetricsbit 18Lag figures in the network report.
features.eventReportsbit 19Set, a client sends its reports as event reports; clear, it sends them otherwise, and agreement’s reportsToFile applies.
features.logServerAddressbit 20It changes nothing a client shows.
features.jungleTimersbit 21Timers for the jungle camps on the screen.
features.traceroutebit 22A trace of the route to the server, begun after this message and reported later, where reporting is on.
features.bit23bit 23Unused; a server writes zero.
features.bit24bit 24Unused; a server writes zero.
features.bit25bit 25Unused; a server writes zero.
features.clockSyncbit 26The game’s clock is nudged to keep with the system’s at normal speed; in a replay, play follows the game’s clock.
features.unusedbit 27 to 58Unused; a server writes zero.
features.unusedHighbit 59 to 63Unused; a server writes zero.
disabledItems64 × u32Items nobody can buy in this match, one place each. A place holds zero where nothing is barred.
reportingMessages18 × u8Which of the reports a client sends are wanted, one place each, in this order: game start, game end, ping use, chat filter, damage figures, active item figures, network figures, hardware figures, server debugging, client debugging, item shop, injected modules, suspicious behaviour, skin swaps, failure to connect, traceroute, network instrumentation, peer network instrumentation. Any nonzero byte marks a report wanted. Zero has no effect.
Vectors (1)

one-on-4-14

In 4.15

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

It also says which map to load, who is at the match, and everything else settled before play.

FieldTypeWhat it is
agreement1-byte bits
agreement.buildMatchesbit 0Set where the client’s build is one the server serves.
agreement.reportsToFilebit 1Set to have a client also write its reports to a file of its own, where it does not send them as event reports (features eventReports clear).
agreement.matchedbit 2Set where the match was put together rather than made by hand.
agreement.reportingReadybit 3Set where the reporting settings below are to be used.
agreement.unusedbit 4 to 7Unused; a server writes zero. A client takes the scripted voice-over setting from its own settings.
mapi32Which map to load. Space keys the path origins by the same maps.
seats12 × SeatEvery place at the match, held or empty.
buildtext, 256 bytesWhich build the server serves. Written out in full and padded with zero bytes to the width above.
modetext, 128 bytesWhich way the match is played, written and padded as above.
platformtext, 32 bytesWhich platform the match belongs to, written and padded as above.
variants8 × stringThe variations the match is played under, one place each. A place stands empty where none applies.
variantCountu8How many of the places above are filled.
teamNametext, 97 bytesWhat one side is called where it plays as a standing team, written and padded as above.
teamTagtext, 25 bytesThe short form of that name, written and padded as above.
otherTeamNametext, 97 bytesWhat the other side is called, under the same terms.
otherTeamTagtext, 25 bytesThe short form of that one.
metricsHosttext, 256 bytesWhere a client reports figures about the match, written and padded as above.
metricsPathtext, 256 bytesWhat it asks for there, written and padded as above.
metricsPortu16Which port it reaches that at.
reportingHosttext, 256 bytesWhere a client reports how the match went, written and padded as above.
reportingPathtext, 256 bytesWhat it asks for there, written and padded as above.
reportingPortu16Which port it reaches that at.
altReportingHosttext, 256 bytesA second, test place to report to, written and padded as above.
altReportingPathtext, 256 bytesWhat it asks for there, written and padded as above.
altReportingPortu16Which port it reaches that at.
tipi8Which note the client shows before play.
tipColouri8Which colouring it shows it in.
tipDurationi8Which display time to hold the note up for, applying only where tips are enabled and shown somewhere. tip, tipColour and tipDuration each select one of the notes, colourings and display times a client defines, tip counted modulo the number of notes. Where a value selects none, or the time is not above zero, a client shows no note.
tipFlags1-byte bitsHow the note is shown. A client sends these four bytes back in ClientReady, as it has corrected them.
tipFlags.enabledbit 0Set where there is a note. A client shows the note only where this and loadingScreen or inGame are set, and shows none where tip, tipColour or tipDuration names nothing.
tipFlags.replaybit 1Of no effect; a client clears it, with enabled, while playing a replay.
tipFlags.loadingScreenbit 2Set to show the note on the loading screen.
tipFlags.inGamebit 3Set to show the note during play, in a box on the screen.
tipFlags.cyclebit 4Set to have the box during play show every note in turn.
tipFlags.unusedbit 5 to 7Unused; a server writes zero.
features8-byte bitsWhich parts of the match are turned on, one bit each.
features.balanceVoteCommandsbit 0The chat commands /equalize and /noequalize.
features.menuBackbit 1With menuBack2, a second key that closes the pause and options menu. Alone, the minimap’s showing of neutral camps follows the player’s settings rather than the minimap’s own.
features.menuBack2bit 2Of use only with menuBack.
features.quickChatbit 3Quick chat: its keys and its panel. A client given it fails while loading. A server sends it clear.
features.missileWarningbit 4A missile coming at the client’s side, or at no one, can show before it leaves the fog where it is near for its speed and heading that way.
features.animatedCursorsbit 5Cursors of several frames move on a frame every 0.15 seconds of play; clear, they show their first frame.
features.shopUndobit 6The shop’s undo; clear, it is never enabled.
features.bit7bit 7Unused; a server writes zero.
features.skillshotOutlinebit 8While aiming a line spell, the units it would hit are outlined.
features.championIndicatorbit 9The mark over the player’s champion, where their own setting also asks for it.
features.altBountybit 10Another reckoning of kill and assist gold: kill gold and the assist pool grow with time, a run of assists adds gold, and assists and minion gold shorten a run of deaths.
features.bit11bit 11Unused; a server writes zero.
features.turretRangebit 12Enemy turrets’ ranges, where the player’s setting also asks for them; clear, they are never drawn.
features.bit13bit 13Unused; a server writes zero.
features.skinParticlesbit 14Skin-specific particle effects for units in a skin other than the first.
features.networkMetricsbit 15Reports of network figures from time to time, where reporting is on (agreement’s reportingReady).
features.hardwareMetricsbit 16A report of hardware and frame rate at the end of the match.
features.lagMetricsbit 17Lag figures in the network report.
features.eventReportsbit 18Set, a client sends its reports as event reports; clear, it sends them otherwise, and agreement’s reportsToFile applies.
features.logServerAddressbit 19It changes nothing a client shows.
features.jungleTimersbit 20Timers for the jungle camps on the screen.
features.traceroutebit 21A trace of the route to the server, begun after this message and reported later, where reporting is on.
features.bit22bit 22Unused; a server writes zero.
features.bit23bit 23Unused; a server writes zero.
features.bit24bit 24Unused; a server writes zero.
features.clockSyncbit 25The game’s clock is nudged to keep with the system’s at normal speed; in a replay, play follows the game’s clock.
features.unusedbit 26 to 57Unused; a server writes zero.
features.unusedHighbit 58 to 63Unused; a server writes zero.
disabledItems64 × u32Items nobody can buy in this match, one place each. A place holds zero where nothing is barred.
reportingMessages18 × u8Which of the reports a client sends are wanted, one place each, in this order: game start, game end, ping use, chat filter, damage figures, active item figures, network figures, hardware figures, server debugging, client debugging, item shop, injected modules, suspicious behaviour, skin swaps, failure to connect, traceroute, network instrumentation, peer network instrumentation. Any nonzero byte marks a report wanted. Zero has no effect.
Vectors (1)

one-on-4-15

In 4.16

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

It also says which map to load, who is at the match, and everything else settled before play.

FieldTypeWhat it is
agreement1-byte bits
agreement.buildMatchesbit 0Set where the client’s build is one the server serves.
agreement.reportsToFilebit 1Set to have a client also write its reports to a file of its own, where it does not send them as event reports (features eventReports clear).
agreement.matchedbit 2Set where the match was put together rather than made by hand.
agreement.reportingReadybit 3Set where the reporting settings below are to be used.
agreement.unusedbit 4 to 7Unused; a server writes zero. A client takes the scripted voice-over setting from its own settings.
mapi32Which map to load. Space keys the path origins by the same maps.
seats12 × SeatEvery place at the match, held or empty.
buildtext, 256 bytesWhich build the server serves. Written out in full and padded with zero bytes to the width above.
modetext, 128 bytesWhich way the match is played, written and padded as above.
platformtext, 32 bytesWhich platform the match belongs to, written and padded as above.
variants8 × stringThe variations the match is played under, one place each. A place stands empty where none applies.
variantCountu8How many of the places above are filled.
teamNametext, 97 bytesWhat one side is called where it plays as a standing team, written and padded as above.
teamTagtext, 25 bytesThe short form of that name, written and padded as above.
otherTeamNametext, 97 bytesWhat the other side is called, under the same terms.
otherTeamTagtext, 25 bytesThe short form of that one.
metricsHosttext, 256 bytesWhere a client reports figures about the match, written and padded as above.
metricsPathtext, 256 bytesWhat it asks for there, written and padded as above.
metricsPortu16Which port it reaches that at.
reportingHosttext, 256 bytesWhere a client reports how the match went, written and padded as above.
reportingPathtext, 256 bytesWhat it asks for there, written and padded as above.
reportingPortu16Which port it reaches that at.
altReportingHosttext, 256 bytesA second, test place to report to, written and padded as above.
altReportingPathtext, 256 bytesWhat it asks for there, written and padded as above.
altReportingPortu16Which port it reaches that at.
tipi8Which note the client shows before play.
tipColouri8Which colouring it shows it in.
tipDurationi8Which display time to hold the note up for, applying only where tips are enabled and shown somewhere. tip, tipColour and tipDuration each select one of the notes, colourings and display times a client defines, tip counted modulo the number of notes. Where a value selects none, or the time is not above zero, a client shows no note.
tipFlags1-byte bitsHow the note is shown. A client sends these four bytes back in ClientReady, as it has corrected them.
tipFlags.enabledbit 0Set where there is a note. A client shows the note only where this and loadingScreen or inGame are set, and shows none where tip, tipColour or tipDuration names nothing.
tipFlags.replaybit 1Of no effect; a client clears it, with enabled, while playing a replay.
tipFlags.loadingScreenbit 2Set to show the note on the loading screen.
tipFlags.inGamebit 3Set to show the note during play, in a box on the screen.
tipFlags.cyclebit 4Set to have the box during play show every note in turn.
tipFlags.unusedbit 5 to 7Unused; a server writes zero.
features8-byte bitsWhich parts of the match are turned on, one bit each.
features.balanceVoteCommandsbit 0The chat commands /equalize and /noequalize.
features.menuBackbit 1With menuBack2, a second key that closes the pause and options menu. Alone, the minimap’s showing of neutral camps follows the player’s settings rather than the minimap’s own.
features.menuBack2bit 2Of use only with menuBack.
features.quickChatbit 3Quick chat: its keys and its panel. A client given it fails while loading. A server sends it clear.
features.missileWarningbit 4A missile coming at the client’s side, or at no one, can show before it leaves the fog where it is near for its speed and heading that way.
features.animatedCursorsbit 5Cursors of several frames move on a frame every 0.15 seconds of play; clear, they show their first frame.
features.shopUndobit 6The shop’s undo; clear, it is never enabled.
features.bit7bit 7Unused; a server writes zero.
features.skillshotOutlinebit 8While aiming a line spell, the units it would hit are outlined.
features.championIndicatorbit 9The mark over the player’s champion, where their own setting also asks for it.
features.altBountybit 10Another reckoning of kill and assist gold: kill gold and the assist pool grow with time, a run of assists adds gold, and assists and minion gold shorten a run of deaths.
features.bit11bit 11Unused; a server writes zero.
features.turretRangebit 12Enemy turrets’ ranges, where the player’s setting also asks for them; clear, they are never drawn.
features.bit13bit 13Unused; a server writes zero.
features.skinParticlesbit 14Skin-specific particle effects for units in a skin other than the first.
features.networkMetricsbit 15Reports of network figures from time to time, where reporting is on (agreement’s reportingReady).
features.hardwareMetricsbit 16A report of hardware and frame rate at the end of the match.
features.lagMetricsbit 17Lag figures in the network report.
features.eventReportsbit 18Set, a client sends its reports as event reports; clear, it sends them otherwise, and agreement’s reportsToFile applies.
features.logServerAddressbit 19It changes nothing a client shows.
features.jungleTimersbit 20Timers for the jungle camps on the screen.
features.traceroutebit 21A trace of the route to the server, begun after this message and reported later, where reporting is on.
features.bit22bit 22Unused; a server writes zero.
features.bit23bit 23Unused; a server writes zero.
features.bit24bit 24Unused; a server writes zero.
features.clockSyncbit 25The game’s clock is nudged to keep with the system’s at normal speed; in a replay, play follows the game’s clock.
features.bit26bit 26Unused; a server writes zero.
features.farmBountybit 27Kill gold also counts assists and minion gold, and a death scales runs down rather than clearing them.
features.turretsPersistbit 28Turrets stay as objects after they are destroyed.
features.stateFlagsbit 29A unit’s can-move, can-attack, can-cast and like states are set on or off rather than counted up and down.
features.unusedbit 30 to 61Unused; a server writes zero.
features.unusedHighbit 62 to 63Unused; a server writes zero.
disabledItems64 × u32Items nobody can buy in this match, one place each. A place holds zero where nothing is barred.
reportingMessages18 × u8Which of the reports a client sends are wanted, one place each, in this order: game start, game end, ping use, chat filter, damage figures, active item figures, network figures, hardware figures, server debugging, client debugging, item shop, injected modules, suspicious behaviour, skin swaps, failure to connect, traceroute, network instrumentation, peer network instrumentation. Any nonzero byte marks a report wanted. Zero has no effect.
Vectors (1)

one-on-4-16

In 4.17

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

It also says which map to load, who is at the match, and everything else settled before play.

FieldTypeWhat it is
agreement1-byte bits
agreement.buildMatchesbit 0Set where the client’s build is one the server serves.
agreement.reportsToFilebit 1Set to have a client also write its reports to a file of its own, where it does not send them as event reports (features eventReports clear).
agreement.matchedbit 2Set where the match was put together rather than made by hand.
agreement.reportingReadybit 3Set where the reporting settings below are to be used.
agreement.unusedbit 4 to 7Unused; a server writes zero. A client takes the scripted voice-over setting from its own settings.
mapi32Which map to load. Space keys the path origins by the same maps.
seats12 × SeatEvery place at the match, held or empty.
buildtext, 256 bytesWhich build the server serves. Written out in full and padded with zero bytes to the width above.
modetext, 128 bytesWhich way the match is played, written and padded as above.
platformtext, 32 bytesWhich platform the match belongs to, written and padded as above.
variants8 × stringThe variations the match is played under, one place each. A place stands empty where none applies.
variantCountu8How many of the places above are filled.
teamNametext, 97 bytesWhat one side is called where it plays as a standing team, written and padded as above.
teamTagtext, 25 bytesThe short form of that name, written and padded as above.
otherTeamNametext, 97 bytesWhat the other side is called, under the same terms.
otherTeamTagtext, 25 bytesThe short form of that one.
metricsHosttext, 256 bytesWhere a client reports figures about the match, written and padded as above.
metricsPathtext, 256 bytesWhat it asks for there, written and padded as above.
metricsPortu16Which port it reaches that at.
reportingHosttext, 256 bytesWhere a client reports how the match went, written and padded as above.
reportingPathtext, 256 bytesWhat it asks for there, written and padded as above.
reportingPortu16Which port it reaches that at.
altReportingHosttext, 256 bytesA second, test place to report to, written and padded as above.
altReportingPathtext, 256 bytesWhat it asks for there, written and padded as above.
altReportingPortu16Which port it reaches that at.
tipi8Which note the client shows before play.
tipColouri8Which colouring it shows it in.
tipDurationi8Which display time to hold the note up for, applying only where tips are enabled and shown somewhere. tip, tipColour and tipDuration each select one of the notes, colourings and display times a client defines, tip counted modulo the number of notes. Where a value selects none, or the time is not above zero, a client shows no note.
tipFlags1-byte bitsHow the note is shown. A client sends these four bytes back in ClientReady, as it has corrected them.
tipFlags.enabledbit 0Set where there is a note. A client shows the note only where this and loadingScreen or inGame are set, and shows none where tip, tipColour or tipDuration names nothing.
tipFlags.replaybit 1Of no effect; a client clears it, with enabled, while playing a replay.
tipFlags.loadingScreenbit 2Set to show the note on the loading screen.
tipFlags.inGamebit 3Set to show the note during play, in a box on the screen.
tipFlags.cyclebit 4Set to have the box during play show every note in turn.
tipFlags.unusedbit 5 to 7Unused; a server writes zero.
features8-byte bitsWhich parts of the match are turned on, one bit each.
features.balanceVoteCommandsbit 0The chat commands /equalize and /noequalize. A server sends it clear to a 4.17 client.
features.menuBackbit 1With menuBack2, a second key that closes the pause and options menu. Alone, the minimap’s showing of neutral camps follows the player’s settings rather than the minimap’s own.
features.menuBack2bit 2Of use only with menuBack.
features.quickChatbit 3Quick chat: its keys and its panel. A 4.17 client given it fails while loading. A server sends it clear to a 4.17 client.
features.missileWarningbit 4A missile coming at the client’s side, or at no one, can show before it leaves the fog where it is near for its speed and heading that way.
features.animatedCursorsbit 5Cursors of several frames move on a frame every 0.15 seconds of play; clear, they show their first frame.
features.shopUndobit 6The shop’s undo; clear, it is never enabled. A server sends it set to a 4.17 client.
features.bit7bit 7Changes only which options the menu shows.
features.skillshotOutlinebit 8While aiming a line spell, the units it would hit are outlined.
features.championIndicatorbit 9The mark over the player’s champion, where their own setting also asks for it.
features.altBountybit 10Another reckoning of kill and assist gold: kill gold and the assist pool grow with time, a run of assists adds gold, and assists and minion gold shorten a run of deaths.
features.bit11bit 11Changes only which options the menu shows.
features.turretRangebit 12Enemy turrets’ ranges, where the player’s setting also asks for them; clear, they are never drawn.
features.bit13bit 13Changes only which options the menu shows.
features.skinParticlesbit 14Skin-specific particle effects for units in a skin other than the first.
features.networkMetricsbit 15Reports of network figures from time to time, where reporting is on (agreement’s reportingReady).
features.hardwareMetricsbit 16A report of hardware and frame rate at the end of the match.
features.lagMetricsbit 17Lag figures in the network report.
features.eventReportsbit 18Set, a client sends its reports as event reports; clear, it sends them otherwise, and agreement’s reportsToFile applies.
features.logServerAddressbit 19It changes nothing a client shows.
features.jungleTimersbit 20Timers for the jungle camps on the screen.
features.traceroutebit 21A trace of the route to the server, begun after this message and reported later, where reporting is on.
features.bit22bit 22Changes only which options the menu shows.
features.bit23bit 23Changes only which options the menu shows.
features.bit24bit 24Changes only which options the menu shows.
features.clockSyncbit 25The game’s clock is nudged to keep with the system’s at normal speed; in a replay, play follows the game’s clock.
features.bit26bit 26Changes only which options the menu shows.
features.farmBountybit 27Kill gold also counts assists and minion gold, and a death scales runs down rather than clearing them.
features.turretsPersistbit 28Turrets stay as objects after they are destroyed.
features.stateFlagsbit 29A unit’s can-move, can-attack, can-cast and like states are set on or off rather than counted up and down.
features.unusedbit 30 to 31Unused; a server writes zero.
features.unusedHighbit 32 to 63Unused; a server writes zero.
disabledItems64 × u32Items nobody can buy in this match, one place each. A place holds zero where nothing is barred.
reportingMessages19 × u8Which of the reports a client sends are wanted, one place each, in this order: game start, game end, ping use, chat filter, damage figures, active item figures, network figures, hardware figures, server debugging, client debugging, item shop, injected modules, suspicious behaviour, skin swaps, failure to connect, traceroute, network instrumentation, peer network instrumentation, and block builder logging. Any nonzero byte marks a report wanted. Zero has no effect.
Vectors (1)

one-on-4-17

In 4.18–4.19

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

It also says which map to load, who is at the match, and everything else settled before play.

FieldTypeWhat it is
agreement1-byte bits
agreement.buildMatchesbit 0Set where the client’s build is one the server serves.
agreement.logMetricsbit 1Set to have the client also write its figures about the match to a file of its own.
agreement.matchedbit 2Set where the match was put together rather than made by hand.
agreement.reportingReadybit 3Set where the reporting settings below are to be used.
agreement.unusedbit 4 to 7Unused; a server writes zero.
mapi32Which map to load. Space keys the path origins by the same maps.
seats12 × SeatEvery place at the match, held or empty.
buildtext, 256 bytesWhich build the server serves. Written out in full and padded with zero bytes to the width above.
modetext, 128 bytesWhich way the match is played, written and padded as above.
platformtext, 32 bytesWhich platform the match belongs to, written and padded as above.
variants8 × stringThe variations the match is played under, one place each. A place stands empty where none applies.
variantCountu8How many of the places above are filled.
teamNametext, 97 bytesWhat one side is called where it plays as a standing team, written and padded as above.
teamTagtext, 25 bytesThe short form of that name, written and padded as above.
otherTeamNametext, 97 bytesWhat the other side is called, under the same terms.
otherTeamTagtext, 25 bytesThe short form of that one.
metricsHosttext, 256 bytesWhere a client reports figures about the match, written and padded as above.
metricsPathtext, 256 bytesWhat it asks for there, written and padded as above.
metricsPortu16Which port it reaches that at.
reportingHosttext, 256 bytesWhere a client reports how the match went, written and padded as above.
reportingPathtext, 256 bytesWhat it asks for there, written and padded as above.
reportingPortu16Which port it reaches that at.
altReportingHosttext, 256 bytesA second such place, written and padded as above.
altReportingPathtext, 256 bytesWhat it asks for there, written and padded as above.
altReportingPortu16Which port it reaches that at.
tipi8Which note the client shows before play.
tipColouri8Which colouring it shows it in.
tipDurationi8How long the note shows: 1 is 10 seconds; no other value is defined. Any other value makes the note invalid; a client then clears the tips bit and returns the value negated in ClientReady, 0 as -128.
tipFlagsi8Bits from the lowest: 0 shows notes at all; 1 is only returned in ClientReady; 2 shows the note on the loading screen; 3 shows it in play; 4 cycles through every note. A note shows only where bit 0 and bit 2 or 3 are set. Bits 5 to 7 are unused. A client watching a recorded match clears bits 0 and 1.
featuresu64Which parts of the match are turned on, one bit each from the lowest: 0 balancing votes, 1 the new options menu, 3 quick chat, 4 warning of missiles from unseen ground, 5 animated cursors, 6 shop undo, 8 marking the targets of line missiles, 9 marking a champion under another’s control, 10 the alternative bounty rules, 12 turret range indicators, 14 particles named per look, 15 network figures, 16 hardware figures, 17 lag figures, 18 a newer reporting library, 19 logging the server’s address, 20 jungle timers, 21 route figures, 24 keeping a recorded match’s clock in step, 26 the active-item display, 27 the minion farming bounty, 28 keeping destroyed lane turrets in the world and 29 unshared character states. Bits 2, 7, 11, 13, 22, 23, 25 and 30 to 63 change nothing. A server sets at least one bit.
disabledItems64 × u32Items nobody can buy in this match, one place each. A place holds zero where nothing is barred.
reportingMessages19 × u8Which of the reports a client sends are wanted, one place each.
Vectors (1)

one-on-4-18

In 4.20

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

It also says which map to load, who is at the match, and everything else settled before play.

FieldTypeWhat it is
agreement1-byte bits
agreement.buildMatchesbit 0Set where the client’s build is one the server serves.
agreement.logMetricsbit 1Set to have the client also write its figures about the match to a file of its own.
agreement.matchedbit 2Set where the match was put together rather than made by hand.
agreement.reportingReadybit 3Set where the reporting settings below are to be used.
agreement.unusedbit 4 to 7Unused; a server writes zero.
mapi32Which map to load. Space keys the path origins by the same maps.
seats12 × SeatEvery place at the match, held or empty.
buildtext, 256 bytesWhich build the server serves. Written out in full and padded with zero bytes to the width above.
modetext, 128 bytesWhich way the match is played, written and padded as above.
platformtext, 32 bytesWhich platform the match belongs to, written and padded as above.
variants8 × stringThe variations the match is played under, one place each. A place stands empty where none applies.
variantCountu8How many of the places above are filled.
teamNametext, 97 bytesWhat one side is called where it plays as a standing team, written and padded as above.
teamTagtext, 25 bytesThe short form of that name, written and padded as above.
otherTeamNametext, 97 bytesWhat the other side is called, under the same terms.
otherTeamTagtext, 25 bytesThe short form of that one.
metricsHosttext, 256 bytesWhere a client reports figures about the match, written and padded as above.
metricsPathtext, 256 bytesWhat it asks for there, written and padded as above.
metricsPortu16Which port it reaches that at.
reportingHosttext, 256 bytesWhere a client reports how the match went, written and padded as above.
reportingPathtext, 256 bytesWhat it asks for there, written and padded as above.
reportingPortu16Which port it reaches that at.
altReportingHosttext, 256 bytesA second such place, written and padded as above.
altReportingPathtext, 256 bytesWhat it asks for there, written and padded as above.
altReportingPortu16Which port it reaches that at.
tipi8Which note the client shows before play.
tipColouri8Which colouring it shows it in.
tipDurationi8How long the note shows: 1 is 10 seconds; no other value is defined. Any other value makes the note invalid; a client then clears the tips bit and returns the value negated in ClientReady, 0 as -128.
tipFlagsi8Bits from the lowest: 0 shows notes at all; 1 is only returned in ClientReady; 2 shows the note on the loading screen; 3 shows it in play; 4 cycles through every note. A note shows only where bit 0 and bit 2 or 3 are set. Bits 5 to 7 are unused. A client watching a recorded match clears bits 0 and 1.
featuresu64Which parts of the match are turned on, one bit each from the lowest: 0 balancing votes, 1 the new options menu, 2 the old options menu, 3 quick chat, 4 warning of missiles from unseen ground, 5 animated cursors, 6 shop undo, 8 marking the targets of line missiles, 9 marking a champion under another’s control, 10 the alternative bounty rules, 12 turret range indicators, 14 particles named per look, 15 network figures, 16 hardware figures, 17 lag figures, 18 a newer reporting library, 19 logging the server’s address, 20 jungle timers, 21 route figures, 24 keeping a recorded match’s clock in step, 26 the active-item display, 27 the minion farming bounty, 28 teleporting to fallen turrets, 29 unshared character states, 30 sight between any units, 31 the old outline under the pointer, 32 the new inventory display. Bits 7, 11, 13, 22, 23, 25 and 33 to 63 change nothing. A server sets at least one bit.
disabledItems64 × u32Items nobody can buy in this match, one place each. A place holds zero where nothing is barred.
reportingMessages18 × u8Which of the reports a client sends are wanted, one place each.
Vectors (1)

one-on-4-20

JoinSide

What a client sends to ask for a seat on one of the two sides while the match is being put together.

Definition.

In every range of this book

Command 100 on roster, sent by the client, reliable.

FieldTypeWhat it is
clientIdu32The client id of the client asking.
sideu32The side it asks for.
Vectors (2)

one-on-4-17, one-on-4-20

Roster

What a server sends to lay out both sides and who is on them, while the match is being put together.

Definition.

In every range of this book

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

FieldTypeWhat it is
sideRoomu32How many seats the first side has room for.
otherSideRoomu32How many the other has room for.
side24 × i64The players on one side, twenty four places. The count below says how many of the leading places carry a player; the rest hold zero. A place cannot be read on its own, because zero is an identifier a match gives out as well as what an unused place holds. It has a player identifier’s width.
otherSide24 × i64The players on the other, under the same reading and its own count.
sideTakenu32How many of the leading places on the first side carry a player.
otherSideTakenu32How many on the other.
Vectors (2)

one-on-4-17, one-on-4-20

SeatName

What a server sends to say what a seat is called, while the match is being put together.

Definition.

In every range of this book

Command 102 on roster, sent by the server, reliable.

FieldTypeWhat it is
playeri64The player this is about. It has a player identifier’s width.
skini32Which look the seat’s champion wears.
nameLengthu32How many bytes the name below occupies, counting the byte that ends it.
nametext, sized by nameLength minus 1What the seat is called. It is not padded.
terminatorbytes, 1A zero byte closing the text, which the length above counts.
Vectors (3)

one-on-4-17, another-on-4-20, one-on-4-20

SeatChampion

What a server sends to say which champion a seat is playing, while the match is being put together.

Definition.

In every range of this book

Command 101 on roster, sent by the server, reliable.

FieldTypeWhat it is
playeri64The player this is about. It has a player identifier’s width.
skini32Which look the champion wears.
assetLengthu32How many bytes the name below occupies, counting the byte that ends it.
assettext, sized by assetLength minus 1The name the client loads the champion’s art and sound under. It is not padded.
terminatorbytes, 1A zero byte closing the text, which the length above counts.
Vectors (3)

one-on-4-17, another-on-4-20, one-on-4-20

LoadingProgress

What a client sends while a match loads, saying how far it has got. The header names no object: it carries zero.

Definition.

In 4.1–4.17

Command 22 on requests, sent by the client, unreliable.

FieldTypeWhat it is
clientIdu32The client id of the client reporting.
playerIdi64Who is reporting. A client sends every bit set, which names nobody.
percentf32How far loading has got, from zero to one hundred.
etaf32How long the client expects still to take, in seconds.
status4-byte bits
status.countbit 0 to 15It rises with each report, not always by one.
status.pingbit 16 to 30Round trip time the client measures, in milliseconds.
status.loadedbit 31Set in every report whose progress stands at one hundred, and in no other.
Vectors (1)

one-on-4-17

In 4.18–4.20

Command 22 on requests, sent by the client, unreliable.

FieldTypeWhat it is
clientIdu32The client id of the client reporting.
playerIdi64Who is reporting. A client sends every bit set, which names nobody.
percentf32How far loading has got, from zero to one hundred.
etaf32How long the client expects still to take, in seconds.
status4-byte bits
status.countbit 0 to 15How many reports have been made.
status.pingbit 16 to 31Round trip time the client measures, in milliseconds.
state1-byte bits
state.loadedbit 0A client sets it only in reports whose progress stands at one hundred.
state.unusedbit 1 to 7Unused; a client may leave any value here, and a server ignores it.
Vectors (2)

finished-on-4-20, in-progress-on-4-20

SeatLoadProgress

What a server sends to tell everyone how far one seat has got through loading, and how it is holding up. A later report supersedes an earlier one, so losing one costs nothing. The header names no object: a server writes zero.

Definition.

In 4.1–4.17

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

BuildsCommand
4.1–4.10148
4.11–4.17149
FieldTypeWhat it is
clientIdu32The client id this is about.
playeri64Who occupies it.
progressf32How far through loading it is, from zero to one hundred.
secondsLeftf32How much longer it is expected to take, in seconds.
status4-byte bits
status.countbit 0 to 15It rises with each report, not always by one.
status.pingbit 16 to 30Round trip time the client measures, in milliseconds.
status.loadedbit 31Set in every report whose progress stands at one hundred, and in no other.
Vectors (2)

one-on-4-10, one-on-4-17

In 4.18–4.20

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

FieldTypeWhat it is
clientIdu32The client id this is about.
playeri64Who occupies it.
progressf32How far through loading it is, from zero to one hundred.
secondsLeftf32How much longer it is expected to take, in seconds.
countu16How many times this has been reported for the seat.
pingu16How long a message takes to reach the seat and come back, in milliseconds.
state1-byte bits
state.readybit 0Set where the seat has finished loading.
state.unusedbit 1 to 7Unused; a server writes zero.
Vectors (2)

another-on-4-20, one-on-4-20

SpawnStart

What a server sends to open the run of units a client is about to be told about. The header names no object: a server writes zero.

Definition.

In 4.1–4.17

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

BuildsCommand
4.1–4.1097
4.11–4.1798
FieldTypeWhat it is
botsOnOneSideu8How many bots play on side 100. A client adds it to that side’s head count, which picks the set of spawn positions and facings it places champions by (CreateChampion’s spawnIndex).
botsOnTheOtheru8The other. It shares the reading above.
Vectors (2)

one-on-4-10, one-on-4-17

In 4.18–4.20

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

FieldTypeWhat it is
firstCountu8How many seats on side 100 nobody holds. Added to that side’s players, it chooses the layout of the side’s starting places.
secondCountu8The same for side 200.
Vectors (1)

one-on-4-20

SpawnEnd

What a server sends to close the run of units it opened with. The header names no object: a server writes zero.

Definition.

In every range of this book

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

No body.

Vectors (2)

one-on-4-17, one-on-4-20

StartGame

What a server sends to begin play. The header names no object: it carries zero.

Definition.

In 4.1–4.3

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

A client past spawning ignores it.

FieldTypeWhat it is
rules1-byte bits
rules.pausingbit 0Set where holding the match is allowed.
rules.noticebit 1Set to have a client show its own notice in chat and note the time the match stands at.
rules.unusedbit 2 to 7Unused; a server writes zero.
Vectors (1)

one-on-4-1

In 4.4–4.17

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

BuildsCommand
4.4–4.1091
4.11–4.1792

A client past spawning ignores it.

FieldTypeWhat it is
rules1-byte bits
rules.pausingbit 0Set where holding the match is allowed.
rules.unusedbit 1 to 7Unused; a server writes zero.
Vectors (2)

one-on-4-10, one-on-4-17

In 4.18–4.20

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

FieldTypeWhat it is
rules1-byte bits
rules.pausingbit 0Set where holding the match is allowed.
rules.unusedbit 1 to 7Unused; a server writes zero.
Vectors (1)

one-on-4-20

ClientReady

What a client sends once it has loaded and is ready to play. The header names no object: it carries zero.

Definition.

In 4.1–4.4

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

The tip fields carry VersionSync’s tip bytes, each one outside its valid range negated (0 as -128), and tips cleared where any is. Playing a replay, a client sends all four as zero.

FieldTypeWhat it is
maskedStatusu32It varies from client to client; a server ignores it.
masku32A random value the client picks to mask the one above.
tipChosenu8Which tip the client is set to show.
tipColouru8How it is coloured.
tipDurationu8How long it stays, as an entry among the display times in the client’s own settings rather than a length of time.
settings1-byte bits
settings.tipsbit 0Set while tips are wanted at all.
settings.reportingbit 1Set while the client reports on itself.
settings.loadingTipsbit 2Set while tips are wanted while loading.
settings.playingTipsbit 3Set while tips are wanted during play.
settings.debugbit 4Set while the client runs in a debugging state.
settings.unusedbit 5 to 7A client returns them as the server sent them.
Vectors (1)

one-on-4-1

In 4.5–4.12

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

BuildsCommand
4.5–4.1081
4.11–4.1282

The tip fields carry VersionSync’s tip bytes, each one outside its valid range negated (0 as -128), and tips cleared where any is. Playing a replay, a client sends all four as zero.

FieldTypeWhat it is
tipChosenu8Which tip the client is set to show.
tipColouru8How it is coloured.
tipDurationu8How long it stays, as an entry among the display times in the client’s own settings rather than a length of time.
settings1-byte bits
settings.tipsbit 0Set while tips are wanted at all.
settings.reportingbit 1Set while the client reports on itself.
settings.loadingTipsbit 2Set while tips are wanted while loading.
settings.playingTipsbit 3Set while tips are wanted during play.
settings.debugbit 4Set while the client runs in a debugging state.
settings.unusedbit 5 to 7A client returns them as the server sent them.
Vectors (2)

one-on-4-10, one-on-4-11

In 4.13–4.17

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

The tip fields carry VersionSync’s tip bytes, each one outside its valid range negated (0 as -128), and tips cleared where any is. Playing a replay, a client sends all four as zero. The three module fields are always zero.

FieldTypeWhat it is
moduleOneu32One of three values a client reports about software it has detected alongside itself. A client sends zero.
tipChosenu8Which tip the client is set to show.
tipColouru8How it is coloured.
tipDurationu8How long it stays, as an entry among the display times in the client’s own settings rather than a length of time.
settings1-byte bits
settings.tipsbit 0Set while tips are wanted at all.
settings.reportingbit 1Set while the client reports on itself.
settings.loadingTipsbit 2Set while tips are wanted while loading.
settings.playingTipsbit 3Set while tips are wanted during play.
settings.debugbit 4Set while the client runs in a debugging state.
settings.unusedbit 5 to 7A client returns them as the server sent them.
moduleTwou32The second of the three. A client sends zero.
moduleThreeu32The third. A client sends zero.
Vectors (1)

one-on-4-17

In 4.18–4.20

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

FieldTypeWhat it is
moduleOneu32One of three values a client reports about software it has detected alongside itself. A client sends zero.
tipChosenu8Which tip the client is set to show.
tipColouru8How it is coloured.
tipDurationu8How long it stays.
settings1-byte bits
settings.tipsbit 0Set while tips are wanted at all.
settings.reportingbit 1Set while the client reports on itself.
settings.loadingTipsbit 2Set while tips are wanted while loading.
settings.playingTipsbit 3Set while tips are wanted during play.
settings.debugbit 4Set while the client runs in a debugging state.
settings.unusedbit 5 to 7Unused; a client may leave any value here, and a server ignores it.
moduleTwou32The second of the three. A client sends zero.
moduleThreeu32The third. A client sends zero.
Vectors (2)

all-clear-on-4-20, one-set-on-4-20

CharacterSelected

What a client sends once a character is settled on. It carries nothing of its own. The header names no object: it carries zero.

Definition.

In every range of this book

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

BuildsCommand
4.1–4.10189
4.11–4.20190

No body.

Vectors (3)

bare-on-4-10, one-on-4-17, bare-on-4-20

MatchIdentity

What a server sends to tell a client which match this is and what its player is called. The header carries zero.

Definition.

In 4.1–4.10

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

FieldTypeWhat it is
gamei64The match’s identifier.
platformtext, 32 bytesWhich platform the match belongs to, written and padded as above.
nametext, 128 bytesThe player’s name, padded with zero bytes.
Vectors (1)

one-on-4-10

In 4.11

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

FieldTypeWhat it is
gamei64The match’s identifier.
labeltext, 32 bytesA text a client writes to its log and keeps, ended by a zero byte within the field.
platformtext, 32 bytesWhich platform the match belongs to, written and padded as above.
Vectors (1)

one-on-4-11

In 4.12–4.20

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

FieldTypeWhat it is
gamei64The match’s identifier.
nametext, 128 bytesThe player’s name, padded with zero bytes.
Vectors (2)

one-on-4-17, one-on-4-20

MatchStarted

What a server sends to set when the match began. The header names no object: it carries zero.

Definition.

In every range of this book

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

BuildsCommand
4.1–4.10193
4.11–4.20194
FieldTypeWhat it is
startedAtf32When the match began, as a moment on the match clock, in seconds.
Vectors (4)

another-on-4-10, one-on-4-10, one-on-4-17, one-on-4-20

GameOptions

What a client sends when a setting that a server needs to know about changes. The header names the sender’s champion.

Definition.

In 4.1–4.17

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

BuildsCommand
4.1–4.1070
4.11–4.1771
FieldTypeWhat it is
options1-byte bits
options.autoAttackbit 0Set while the client attacks without being told to.
options.unusedbit 1 to 7Always clear: a client writes the whole byte as 0 or 1.
Vectors (2)

one-on-4-10, one-on-4-17

In 4.18–4.20

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

FieldTypeWhat it is
options1-byte bits
options.autoAttackbit 0Set while the client attacks without being told to.
options.unusedbit 1 to 7Unused; a client writes zero.
Vectors (1)

auto-attack-on-4-20

ModuleData

What a server sends to carry data to a module of the client’s own. A client takes it even before it is ready to play. With kind 4, or any kind other than 1 and 2, a client acts on what the data carries as on a message that had arrived. What kinds 1 and 2 do is not shown. A server need send none.

Definition.

In 4.1–4.4

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

FieldTypeWhat it is
kindu8What the data is for.
lengthu16How many bytes of data follow; at most 1024.
databytes, sized by lengthData for a module of the client’s own, which the message only carries.
Vectors (1)

one-on-4-1

ModulePacket

What a client sends to carry data from a module of its own, often a message of its own that the module has taken over. A server need do nothing with it. The header carries zero.

Definition.

In 4.1–4.4

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

FieldTypeWhat it is
kindu8What the data is for.
lengthu16How many bytes of data follow; at most 1024.
databytes, sized by lengthData for a module of the client’s own, which the message only carries.
Vectors (1)

one-on-4-1

StatsRequest

What a client sends about itself. The header names the sender’s champion.

Definition.

In 4.1–4.4

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

No body.

Vectors (2)

another-on-4-1, one-on-4-1

In 4.5–4.7

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

It says what the client has detected running alongside it.

FieldTypeWhat it is
moduleOneu32One of three values a client reports about software it has detected alongside itself. A client sends zero.
Vectors (2)

another-on-4-5, one-on-4-5

In 4.8–4.11

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

BuildsCommand
4.8–4.1085
4.1186

It says what the client has detected running alongside it, and which appearance it believes it is wearing.

FieldTypeWhat it is
moduleOneu32One of three values a client reports about software it has detected alongside itself. A client sends zero.
appearanceu32The appearance the client believes it is wearing, by the number it knows it as.
appearanceChecku32A value standing for that appearance’s content.
Vectors (4)

asking-on-4-10, one-on-4-10, asking-on-4-11, one-on-4-11

In 4.12–4.20

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

It says what the client has detected running alongside it, and which appearance it believes it is wearing.

FieldTypeWhat it is
moduleOneu32One of three values a client reports about software it has detected alongside itself. A client sends zero.
moduleTwou32The second of the three. A client sends zero.
moduleThreeu32The third. A client sends zero.
appearanceu32The appearance the client believes it is wearing, by the number it knows it as.
appearanceChecku32A value standing for that appearance’s content.
Vectors (2)

one-on-4-17, asking-on-4-20