Replication
With Replication a server states what has changed about the units a client
can see: for each unit, the groups of values it carries and which values of
each follow. What the values are follows from the unit.
In 1.0.0.130–1.0.0.140
The groups follow in the order 0 to 4, and nothing gives a group’s length: each value is four bytes, so a group takes four bytes for its set of values and four for each bit that set has set.
Each value is a 32-bit float or a 32-bit unsigned integer, as its row in the tables below says, and travels as it stands.
A client passes over a set bit its table has no row for, and a group its table has none of, by their four bytes each, without taking anything from them. It passes over the values of a unit whose kind has no table the same way, and still answers the batch.
What settles a reading
A run is a sequence of values with nothing between them, in the order the set bits name them, lowest first.
The bit that names a value means different things for different units. Champions, turrets, minions and units belonging to no side, and buildings each answer to a table of their own, so the same bit in the same group is one value on one unit and another on the next. A sending end MUST write the table the unit it names answers to.
Props answer to a table of their own as well.
Which table a unit answers to follows from the message that put it on the field (see Units). A building, which no message creates, answers to the building table.
The building table is the same on every map.
Which batches a client takes
A client answers a batch with TransientAck where it holds every unit the
batch names, whether or not it took the values. Ordering says
which batches a client takes, and what that requires of a server.
Reading the tables
Each row gives the group and bits that name a value and what the value is.
In 1.0.0.130–1.0.0.140
Each row also gives the type a value is written in.
In 1.0.0.140
A champion
Group Bits Value Type 0 0 Gold in hand float 0 1 to 2 Which slots can be cast from: the champion’s own, then the second set u32 0 3 to 6 What the spell in slots 0 to 3 costs float 0 7 to 14 What the spell in slots 42 to 49 costs float 0 15 to 16 What the spell in slots 0 and 1 of the second set costs float 1 0 What the champion is doing, as a set of bits u32 1 1 to 3 Whether it is proof against spells, proof against all harm, and proof against strikes u32 1 4 Damage it deals by striking float 1 5 Damage its spells deal before modifiers float 1 6 How often it turns a blow aside float 1 7 How often it strikes critically float 1 8 Armour float 1 9 Spell resistance float 1 10 to 11 How fast health and resource return float 1 12 How far it strikes from float 1 13 to 15 Flat and percent modifiers on the damage it strikes with, then the flat modifier on its spells’ damage float 1 16 to 17 Flat and percent reduction of the spell damage it takes float 1 18 A multiplier on how fast it strikes float 1 19 A flat addition to how far it casts float 1 20 A modifier on its cooldowns float 1 21 to 22 How much armour it cuts through, flat then as a percent float 1 23 to 24 How much spell resistance it cuts through, flat then as a percent float 1 25 Life steal float 1 26 Spell vamp float 3 0 to 1 Health and resource as they stand float 3 2 to 3 Health and resource at their greatest float 3 4 Experience float 3 5 to 6 A flat and a percent addition to how far it sees float 3 7 How fast it moves float 3 8 A value whose meaning is not recorded float 3 9 Level u32 3 10 Kills taken from no side u32 Bit n of either set of slots that can be cast from stands for slot n. What the second set and slots 42 to 49 hold is not recorded, and a server writes zero in their costs. Which bit of what a champion is doing means what is not recorded either.
A turret
Group Bits Value Type 1 0 to 1 Health as it stands, then at its greatest float 1 2 What the turret is doing, as a set of bits u32 1 3 to 5 Whether it is proof against spells, proof against all harm, and proof against strikes u32 1 6 Damage it deals by striking float 1 7 to 8 Armour and spell resistance float 1 9 A multiplier on how fast it strikes float 1 10 to 12 Flat and percent modifiers on the damage it strikes with, then the flat modifier on its spells’ damage float 1 13 How fast health returns float 3 0 to 1 A flat and a percent addition to how far it sees float 3 2 How fast it moves float 3 3 A value whose meaning is not recorded float A minion, and a unit belonging to no side
Group Bits Value Type 1 0 to 1 Health and resource as they stand float 1 2 to 3 Health and resource at their greatest float 1 4 What the unit is doing, as a set of bits u32 1 5 to 7 Whether it is proof against spells, proof against all harm, and proof against strikes u32 1 8 Damage it deals by striking float 1 9 to 10 Armour and spell resistance float 1 11 A multiplier on how fast it strikes float 1 12 to 14 Flat and percent modifiers on the damage it strikes with, then the flat modifier on its spells’ damage float 1 15 to 16 How fast health and resource return float 1 17 to 18 Flat and percent reduction of the spell damage it takes float 3 0 to 1 A flat and a percent addition to how far it sees float 3 2 How fast it moves float 3 3 A value whose meaning is not recorded float A building
Inhibitors, nexuses and the buildings minions come from share one table. It has no value for health at its greatest.
Group Bits Value Type 1 0 Health as it stands float 1 1 Whether it is proof against all harm u32 A prop
Group Bits Value Type 1 0 Health as it stands float 1 1 Health as it stands, again float 1 2 Whether it is proof against all harm u32 3 0 to 1 A flat and a percent addition to how far it sees float 3 2 How fast it moves float 3 3 A value whose meaning is not recorded float
Values stated outside a batch
Besides its batches, a server states some values with messages of their own.
In 1.0.0.140
A server grants experience with
ExperienceGained, and MUST name a champion in it: a client fails on one naming any other unit.GoldGainedshows the gold gained over the unit and grants none: a champion’s gold in hand follows group 0 bit 0 of its batches alone.
A server can send the gold a unit earns to another with GoldRedirect. A level
gained is LevelUp, which on its own is enough for a client to show the new
level on its champion’s portrait. A server sets a champion’s tallies for the
scoreboard with ChampionStats. A server can also add to a unit’s shield
(ShieldAdded), change how its health bar or resource bar is shown
(HealthBar, ResourceDisplay), change the sort of resource it has
(ResourceKindChanged), set the highest level a champion reaches
(LevelCap), and count minions killed, scores and deeds (MinionKillCount,
ScoreAdded, StatisticIncremented).
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).
Replication
What a server sends to say what has changed about units a client can see. It is the most frequent thing a server sends. The header names no object: a server writes zero.
In every range of this book
Carried on transient, sent by the server, unreliable, under these commands:
| Builds | Command |
|---|---|
| 1.0.0.130–1.0.0.131 | 204 |
| 1.0.0.132–1.0.0.134 | 205 |
| 1.0.0.135 | 207 |
| 1.0.0.136–1.0.0.137 | 205 |
| 1.0.0.138 | 207 |
| 1.0.0.139–1.0.0.140 | 206 |
| 1.0.0.141–1.0.0.142 | 208 |
| 1.0.0.143 | 208 |
| 1.0.0.144–1.0.0.149 | 196 |
| 1.0.0.150–3.1.0.0 | 193 |
| Field | Type | What it is |
|---|---|---|
| syncId | u32 | Names this batch of changes. Replication says which batches a client takes values from. |
| unitCount | u8 | How many units follow. |
| units | count in unitCount × Replication |
TransientAck
What a client sends to say a batch of changes arrived, naming which batch. The header names no object: it carries zero.
In 1.0.0.130–1.0.0.138
Carried on requests, sent by the client, unsequenced, under these commands:
| Builds | Command |
|---|---|
| 1.0.0.130–1.0.0.131 | 176 |
| 1.0.0.132–1.0.0.134 | 177 |
| 1.0.0.135 | 179 |
| 1.0.0.136–1.0.0.137 | 177 |
| 1.0.0.138 | 179 |
It is sent for a batch whose values the client dropped as well as for one it took.
| Field | Type | What it is |
|---|---|---|
| syncId | u32 | Which batch is being acknowledged, as the batch named itself. |
Vectors (5)
one-on-1-0-0-131, one-on-1-0-0-134, one-on-1-0-0-135, one-on-1-0-0-136, one-on-1-0-0-138
In 1.0.0.139–1.0.0.143
Command 178 on requests, sent by the client, unsequenced.
A client sends it for a batch it took and for one whose values it dropped, but sends none for a batch where any entry names a unit it does not hold.
| Field | Type | What it is |
|---|---|---|
| syncId | u32 | Which batch is being acknowledged, as the batch named itself. |
Vectors (1)
In 1.0.0.144–3.1.0.0
Carried on requests, sent by the client, unsequenced, under these commands:
| Builds | Command |
|---|---|
| 1.0.0.144–1.0.0.149 | 168 |
| 1.0.0.150–3.1.0.0 | 165 |
It is sent for a batch whose values the client dropped as well as for one it took.
| Field | Type | What it is |
|---|---|---|
| syncId | u32 | Which batch is being acknowledged, as the batch named itself. |
Vectors (2)
GoldGained
What a server sends to show a unit gaining gold. The header names the unit whose death earned the gold, as source does.
In 1.0.0.130–1.0.0.143
Command 37 on events, sent by the server, reliable.
A client only floats the amount as text: the gold the unit holds does not change. Where unit is the client’s own champion, amount is above 0.5 and source names a unit the client holds other than its own player, the text floats over source; otherwise it floats over unit, as a gain where amount is above zero and a loss where it is below.
| Field | Type | What it is |
|---|---|---|
| unit | u32 | The unit granted it. |
| source | u32 | What it came from, or zero where nothing did. |
| amount | f32 | How much. |
Vectors (1)
In 1.0.0.144–3.1.0.0
Command 34 on events, sent by the server, reliable.
It grants the unit gold.
| Field | Type | What it is |
|---|---|---|
| unit | u32 | The unit granted it. |
| source | u32 | What it came from, or zero where nothing did. |
| amount | f32 | How much. |
ExperienceGained
What a server sends to say a unit gained experience. The header names no object: a server writes zero.
In 1.0.0.130–1.0.0.143
Command 17 on events, sent by the server, reliable.
A client floats the amount over the champion, except while watching a match. Where the unit is the client’s own champion below its highest level, it also shows the amount on its experience display.
| Field | Type | What it is |
|---|---|---|
| unit | u32 | The unit granted it. A server names a champion: a client fails for any other unit. |
| amount | f32 | How much. |
Vectors (1)
In 1.0.0.144–3.1.0.0
Command 16 on events, sent by the server, reliable.
Where the unit is the client’s own champion below its highest level, a client also shows the amount on its experience display.
| Field | Type | What it is |
|---|---|---|
| unit | u32 | The unit granted it. |
| amount | f32 | How much. |
GoldRedirect
What a server sends to send the gold a unit earns to another. The header names the unit.
In every range of this book
Command 7 on events, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| target | u32 | The unit that receives the gold. |
LevelUp
What a server sends when a unit gains a level. The header names the unit this is about. On its own, with no replication behind it, it is enough for a client to show the new level on the champion’s portrait and offer the unspent points.
In every range of this book
Carried on events, sent by the server, reliable, under these commands:
| Builds | Command |
|---|---|
| 1.0.0.130–1.0.0.131 | 69 |
| 1.0.0.132–1.0.0.143 | 70 |
| 1.0.0.144–1.0.0.149 | 65 |
| 1.0.0.150–3.1.0.0 | 62 |
A client applies it only to a champion, and ignores it for any other unit.
| Field | Type | What it is |
|---|---|---|
| level | u8 | The level now reached. |
| pointsToSpend | u8 | How many spell points are left unspent. |
Vectors (3)
ChampionStats
What a server sends to set a champion’s tallies for the scoreboard. The header names the champion.
In 1.0.0.130–1.0.0.137
Carried on events, sent by the server, reliable, under these commands:
| Builds | Command |
|---|---|
| 1.0.0.130–1.0.0.131 | 75 |
| 1.0.0.132–1.0.0.137 | 76 |
| Field | Type | What it is |
|---|---|---|
| size | u32 | The whole length of what follows the header, these four bytes included, as a whole 32-bit count. A mismatch has no effect, and does not limit what a client takes. |
| values | bytes, sized by size minus 4 | One value per tally of the match’s mode, the tallies in ascending byte order of their names. An int takes 4 bytes, a float 4, a bool 1, a 64-bit int 8, and text a 16-bit length below 255 then that many bytes. Bytes left over have no effect. A nonzero count of champion kills marks first blood taken. |
Vectors (2)
In 1.0.0.138–1.0.0.143
Command 77 on events, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| size | u32 | The whole length of what follows the header, these four bytes included, as a whole 32-bit count. A mismatch has no effect, and does not limit what a client takes. |
| values | bytes, sized by size minus 4 | One value per tally of the match’s mode, the tallies in ascending byte order of their names. An int takes 4 bytes, a float 4, a bool 1, a 64-bit int 8, and text a 16-bit length below 255 then that many bytes. Bytes left over have no effect. A count of champion kills above zero marks first blood taken. |
Vectors (1)
In 1.0.0.144–3.1.0.0
Carried on events, sent by the server, reliable, under these commands:
| Builds | Command |
|---|---|
| 1.0.0.144–1.0.0.149 | 71 |
| 1.0.0.150–3.1.0.0 | 68 |
| Field | Type | What it is |
|---|---|---|
| size | u32 | The whole length of what follows the header, these four bytes included, as a whole 32-bit count. A mismatch has no effect, and does not limit what a client takes. |
| values | bytes, sized by size minus 4 | One value per tally of the match’s mode, the tallies in ascending byte order of their names. An int takes 4 bytes, a float 4, a bool 1, a 64-bit int 8, and text a 16-bit length below 255 then that many bytes. Bytes left over have no effect. A nonzero count of champion kills marks first blood taken. |
Vectors (2)
ShieldAdded
What a server sends to add to a unit’s shield. The header names the unit.
In every range of this book
Carried on events, sent by the server, reliable, under these commands:
| Builds | Command |
|---|---|
| 1.0.0.130–1.0.0.131 | 105 |
| 1.0.0.132–1.0.0.137 | 106 |
| 1.0.0.138–1.0.0.143 | 108 |
| 1.0.0.144–1.0.0.149 | 102 |
| 1.0.0.150–3.1.0.0 | 99 |
Both physical and magical set adds amount to the shield that takes either kind of damage; one of them, to that kind’s shield; neither, to nothing. A negative amount lowers it, and any shield left below 0.001 becomes zero. noFade clear does not restart a fade already stopped.
| Field | Type | What it is |
|---|---|---|
| flags | 1-byte bits | Which shield. |
| flags.physical | bit 0 | Set where the shield turns aside physical damage. |
| flags.magical | bit 1 | Set where it turns aside magical damage. Both set means either. |
| flags.noFade | bit 2 | Set where the shield does not fade. |
| flags.unused | bit 3 to 7 | Unused; a server writes zero. |
| amount | f32 | How much is added. |
Vectors (5)
one-on-1-0-0-131, one-on-1-0-0-136, one-on-1-0-0-143, one-on-1-0-0-149, one-on-1-0-0-154
HealthBar
What a server sends about a unit’s health bar. The header names the unit.
In 1.0.0.130–1.0.0.143
Carried on events, sent by the server, reliable, under these commands:
| Builds | Command |
|---|---|
| 1.0.0.130–1.0.0.131 | 215 |
| 1.0.0.132–1.0.0.134 | 216 |
| 1.0.0.135 | 218 |
| 1.0.0.136–1.0.0.137 | 216 |
| 1.0.0.138 | 218 |
| 1.0.0.139–1.0.0.140 | 217 |
| 1.0.0.141–1.0.0.143 | 219 |
| Field | Type | What it is |
|---|---|---|
| show | u8 | Set to show the bar, clear to hide it. Zero hides it, any other value shows it. |
In 1.0.0.144–3.1.0.0
Carried on events, sent by the server, reliable, under these commands:
| Builds | Command |
|---|---|
| 1.0.0.144–1.0.0.149 | 206 |
| 1.0.0.150–3.1.0.0 | 203 |
| Field | Type | Present when | What it is |
|---|---|---|---|
| flags | 1-byte bits | What changes. | |
| flags.show | bit 0 | Set to show the bar, clear to hide it. | |
| flags.changeType | bit 1 | Set where the bar’s type changes; the type and side below apply only then. | |
| flags.unused | bit 2 to 7 | Unused; a server writes zero. | |
| barType | u8 | flags.changeType set | Which sort of bar, applying only where changeType is set and side is the client’s player’s side or zero: 1 a unit’s, 2 a champion’s; any other value only makes sure the unit has a bar. |
| side | i32 | flags.changeType set | The side that sees the change, or 0 for every side. |
Vectors (4)
another-on-1-0-0-149, one-on-1-0-0-149, another-on-1-0-0-154, one-on-1-0-0-154
ScoreAdded
What a server sends to add to a player’s score. The header names no object: a server writes zero.
In every range of this book
Carried on events, sent by the server, reliable, under these commands:
| Builds | Command |
|---|---|
| 1.0.0.130–1.0.0.131 | 226 |
| 1.0.0.132–1.0.0.134 | 227 |
| 1.0.0.135 | 229 |
| 1.0.0.136–1.0.0.137 | 227 |
| 1.0.0.138 | 229 |
| 1.0.0.139–1.0.0.140 | 228 |
| 1.0.0.141–1.0.0.143 | 230 |
| 1.0.0.144–1.0.0.149 | 217 |
| 1.0.0.150–3.1.0.0 | 214 |
A client ignores the message where player names no champion it holds.
| Field | Type | What it is |
|---|---|---|
| champion | u32 | The champion whose score it is. |
| category | u8 | Which part of the score. Values: 0 offense, 1 defense, 2 combat, 3 objective. |
| event | u8 | What earned it. |
| flags | 1-byte bits | How it is shown. |
| flags.callout | bit 0 | Set where the client announces it. |
| flags.unused | bit 1 to 7 | Unused; a server writes zero. |
| points | f32 | How much is added. |
StatisticIncremented
What a server sends to add one to a champion’s count of a deed, as counted for the end of a match. Nothing shows at once. A client ignores it where the id names no champion. The header carries zero.
In every range of this book
Carried on events, sent by the server, reliable, under these commands:
| Builds | Command |
|---|---|
| 1.0.0.130–1.0.0.131 | 227 |
| 1.0.0.132–1.0.0.134 | 228 |
| 1.0.0.135 | 230 |
| 1.0.0.136–1.0.0.137 | 228 |
| 1.0.0.138 | 230 |
| 1.0.0.139–1.0.0.140 | 229 |
| 1.0.0.141–1.0.0.143 | 231 |
| 1.0.0.144–1.0.0.149 | 218 |
| 1.0.0.150–3.1.0.0 | 215 |
| Field | Type | What it is |
|---|---|---|
| champion | u32 | The champion. |
| statistic | u8 | Which count. A value past those named has no defined effect. Values: 0 pointCaptured, 1 pointNeutralised, 2 killWhileAttackingPoint, 3 teamObjective, 4 defendedPointNeutralised, 5 killWhileDefendingPoint, 6 timeDefendingPoint, 7 lastStand, 8 captureAssist, 9 neutraliseAssist. |
GoldEarned
What a server sends about gold a champion earned. The header carries zero.
In 1.0.0.130–1.0.0.131
Command 242 on events, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| owner | u32 | The champion credited. |
| amount | f32 | How much gold. |
Vectors (1)
In 1.0.0.132–1.0.0.138
Carried on events, sent by the server, reliable, under these commands:
| Builds | Command |
|---|---|
| 1.0.0.132–1.0.0.134 | 243 |
| 1.0.0.135 | 240 |
| 1.0.0.136–1.0.0.137 | 238 |
| 1.0.0.138 | 240 |
A server sends it to clients watching a match.
| Field | Type | What it is |
|---|---|---|
| owner | u32 | The champion credited. |
| amount | f32 | How much gold. 0.95 is what a champion earns for each step it stands still. |
Vectors (4)
one-on-1-0-0-134, one-on-1-0-0-135, one-on-1-0-0-136, one-on-1-0-0-138
In 1.0.0.139–1.0.0.140
Command 239 on events, sent by the server, reliable.
A client adds the amount to the champion’s tally of gold earned; the gold the champion holds does not change. It applies the message whether or not it is watching a match.
| Field | Type | What it is |
|---|---|---|
| owner | u32 | The champion credited. |
| amount | f32 | How much gold. |
Vectors (1)
In 1.0.0.141–3.1.0.0
Carried on events, sent by the server, reliable, under these commands:
| Builds | Command |
|---|---|
| 1.0.0.141–1.0.0.143 | 241 |
| 1.0.0.144–1.0.0.149 | 228 |
| 1.0.0.150–3.1.0.0 | 225 |
A server sends it to clients watching a match. It credits the champion with the gold.
| Field | Type | What it is |
|---|---|---|
| owner | u32 | The champion credited. |
| amount | f32 | How much gold. 0.95 is what a champion earns for each step it stands still. |
Vectors (3)
ResourceColours
What a server sends to give a unit’s resource bar colours of its own, or to take them back. The header names the unit.
In every range of this book
Carried on events, sent by the server, reliable, under these commands:
| Builds | Command |
|---|---|
| 1.0.0.130–1.0.0.131 | 153 |
| 1.0.0.132–1.0.0.134 | 154 |
| 1.0.0.135 | 156 |
| 1.0.0.136–1.0.0.137 | 154 |
| 1.0.0.138 | 156 |
| 1.0.0.139–1.0.0.143 | 155 |
| 1.0.0.144–1.0.0.149 | 147 |
| 1.0.0.150–3.1.0.0 | 144 |
| Field | Type | What it is |
|---|---|---|
| unused | u32 | Unused; its bytes carry no meaning. The header names the unit. |
| on | u8 | Nonzero gives the bar the two colours below; zero takes them back, and a client reads neither. |
| fill | u32 | The colour the bar fills with up to the unit’s current amount, with its alpha in the top byte, which the bar’s own fading scales. |
| lost | u32 | The colour of what the unit has just lost, drawn from its current amount up to a mark that falls back toward it over time; alpha as above. |
StatTick
What a server sends to advance every unit’s stats by a span of time. The header carries zero.
In every range of this book
Carried on events, sent by the server, reliable, under these commands:
| Builds | Command |
|---|---|
| 1.0.0.130–1.0.0.143 | 42 |
| 1.0.0.144–3.1.0.0 | 39 |
A client takes it and changes nothing it shows.
| Field | Type | What it is |
|---|---|---|
| seconds | f32 | The span, in seconds. |