The Latest Agario Protocol Decoded
2
stars
4
forks
source link
Agar.io Protocol v13
Types
- Unsigned Char (uint8)
- Unsigned Short (uint16)
- Unsigned Int (uint32)
- Signed Char (int8)
- Signed Short (int16)
- Signed Int (int32)
- Float (float32)
- Double (float64)
- Null Terminated UTF8 String (null_utf8)
Client -> Server
Spawn (0x00)
Data Type |
Value |
Description |
uint8 |
0x00 |
Opcode |
null_utf8 |
... |
Player Name |
Spectate (0x01)
Data Type |
Value |
Description |
uint8 |
0x01 |
Opcode |
Set Target (0x10)
Data Type |
Value |
Description |
uint8 |
0x10 |
Opcode |
int32 |
... |
Target X |
int32 |
... |
Target Y |
int32 |
0 or DKS |
Part Of Integrity Checks |
Split (0x11)
Data Type |
Value |
Description |
uint8 |
0x11 |
Opcode |
Eject Mass (0x15)
Data Type |
Value |
Description |
uint8 |
0x15 |
Opcode |
Captcha Response (0x56)
Data Type |
Value |
Description |
uint8 |
0x56 |
Opcode |
null_utf8 |
... |
Generated Access Token |
Login Token (0x66)
Data Type |
Value |
Description |
uint8 |
0x66 |
Opcode |
... |
... |
Generated Access Token |
Auth Response (0x71)
Data Type |
Value |
Description |
uint8 |
0x71 |
Opcode |
... |
... |
Generated Auth Response |
Response to Ping (0xe3)
Data Type |
Value |
Description |
uint8 |
0xe3 |
Opcode |
... |
... |
Ping Data |
Establish Connection (0xfe)
Data Type |
Value |
Description |
uint8 |
0xfe |
Opcode |
uint32 |
... |
Protocol Version (0x0d) |
EKS/DKS (0xff)
Data Type |
Value |
Description |
uint8 |
0xff |
Opcode |
int32 |
0 |
EKS/DKS |
Server -> Client
World Update (0x10)
Data Type |
Value |
Description |
uint8 |
0x10 |
Opcode |
uint16 |
0 |
Eat Record Length |
... |
... |
Eat Record |
... |
... |
Update Record (read untill cell id == 0) |
uint16 |
0 |
Remove Record Length |
... |
... |
Remove Record |
Eat Record
Data Type |
Value |
Description |
uint32 |
0 |
Eater ID |
uint32 |
0 |
Victim ID |
Remove Record
Data Type |
Value |
Description |
uint32 |
0 |
Removing Cell ID |
Update Cell Record
Data Type |
Value |
Description |
uint32 |
... |
Cell ID |
int32 |
... |
Cell X |
int32 |
... |
Cell Y |
uint16 |
... |
Cell Radius |
uint8 |
... |
Cell Flags |
uint8 |
... |
Cell Flags 2 (read if flags & 0x80) |
uint8 |
0 |
Cell Color (RED) (read if flags & 0x02) |
uint8 |
0 |
Cell Color (GREEN) (read if flags & 0x02) |
uint8 |
0 |
Cell Color (BLUE) (read if flags & 0x02) |
null_utf8 |
... |
Cell Skin (read if flags & 0x04) |
null_utf8 |
... |
Cell Name (read if flags & 0x08) |
null_utf8 |
... |
Cell Account (read if flags_2 & 0x04) |
Flags
Mask |
Description |
0x01 |
Virus |
0x02 |
Has Color |
0x04 |
Has Skin |
0x08 |
Has Name |
0x10 |
Agitated |
0x20 |
Ejected Mass |
0x80 |
Read Next Byte as flags |
Flags (for flags_2)
Mask |
Description |
0x01 |
Food |
0x02 |
Is Friend |
0x04 |
Has Account Name |
Spectator Position Update (0x11)
Data Type |
Value |
Description |
uint8 |
0x11 |
Opcode |
float32 |
... |
X coordinate |
float32 |
... |
Y coordinate |
float32 |
... |
Zoom Factor |
Reset (0x12)
Data Type |
Value |
Description |
uint8 |
0x12 |
Opcode |
Add Cell To Owned Cells (0x20)
Data Type |
Value |
Description |
uint8 |
0x20 |
Opcode |
uint32 |
... |
Cell ID |
### Leaderboard List (0x33 |
0x34) |
Data Type |
Value |
Description |
--- |
--- |
--- |
uint8 |
0x33 or 0x34 |
Opcode |
uint16 |
... |
Friend Count (read if op == 0x34) |
... |
... |
LB Record |
LB Record
Mask |
Description |
0x01 |
place |
0x02 |
player name |
0x04 |
player account id |
0x08 |
its meh |
0x10 |
its friend |
Data Type |
Value |
Description |
uint8 |
... |
Flags |
uint16 |
... |
(Read if flags & 0x01) Player Place |
null_utf8 |
... |
(Read if flags & 0x02) Player Name |
null_utf8 |
... |
(Read if flags & 0x04) Player Account |
Leaderboard RGB (0x32)
Data Type |
Value |
Description |
uint8 |
0x32 |
Opcode |
uint32 |
... |
Length |
float32 |
... |
Red |
float32 |
... |
Green |
float32 |
... |
Blue |
Initial Border and Dynamic Border (0x40)
Data Type |
Value |
Description |
uint8 |
0x40 |
Opcode |
float64 |
... |
minx |
float64 |
... |
miny |
float64 |
... |
maxx |
float64 |
... |
maxy |
uint32 |
... |
Gamemode |
null_utf8 |
... |
Server Name |
Captcha Request (0x55)
Data Type |
Value |
Description |
uint8 |
0x55 |
Opcode |
Shop Info (0x66)
Data Type |
Value |
Description |
uint8 |
0x66 |
Opcode |
... |
... |
Info about Shop |
Logged In (0x67)
Data Type |
Value |
Description |
uint8 |
0x67 |
Opcode |
Log Out (0x68)
Data Type |
Value |
Description |
uint8 |
0x68 |
Opcode |
Player Banned (0x69)
Data Type |
Value |
Description |
uint8 |
0x69 |
Opcode |
null_utf8 |
... |
Account Name/IP |
Auth (0x70)
Data Type |
Value |
Description |
uint8 |
0x70 |
Opcode |
null_utf8 |
... |
Random String |
Outdated Client (request to update agario.core.js) (0x80)
Data Type |
Value |
Description |
uint8 |
0x80 |
Opcode |
Show Arrow (0xa0)
Data Type |
Value |
Description |
uint8 |
0xa0 |
Opcode |
int16 |
... |
x |
int16 |
... |
y |
null_str8 |
... |
(optional) (sent only once) player name |
Remove Arrow (0xa1)
Data Type |
Value |
Description |
uint8 |
0xa1 |
Opcode |
Ping (0xe2)
Data Type |
Value |
Description |
uint8 |
0xe2 |
Opcode |
... |
... |
Random Data |
DKS2 (0xf1)
Data Type |
Value |
Description |
uint8 |
0xf1 |
Opcode |
int32 |
DKS2 |
DKS2 |
Compressed (0xff)
Data Type |
Value |
Description |
uint8 |
0xff |
Opcode |
uint32 |
... |
Decompressed Length |
... |
... |
Sub-Packet |