Skip to content

Protocol 15 #19

@Barbosik

Description

@Barbosik

May be it will be interesting for someone.
Here is the latest protocol 15:

1) Cell Update message 0x10

A little change in the structure of cell update message:

Offset Value Type Description
0 0x10 byte Cell Update message code
1 xx uint16 Eat Record Count
3 xx record list Eat Records
xx xx record list Cell Update Records. Ends with 4-zero bytes
xx xx uint16 Remove Record Count
xx xx record list Remove Records

Structure of Eat Record:

Offset Type Description
0 uint32 Hunter Cell Id
4 uint32 Prey Cell Id

Structure of Cell Update Record:

Offset Value Type Description
0 xx uint32 Cell ID (0x00000000 is used as terminator)
4 xx int32 Coordinate X
8 xx int32 Coordinate Y
12 xx uint16 Cell size
14 xx byte Flags
xx xx byte (optional) Extended Flags (Present when bit 7 of Flags is set to 1)
xx xx 3 byte (optional) Color (r,g,b components)
xx xx string (optional) Skin name (zero-terminated string)
xx xx string (optional) Cell name (zero-terminated string, UTF8 encoding)
xx xx uint32 (optional) PlayerId - it is resent when bit isPlayerIdPresent of Extended Flags is set to 1. It contains pleayer ID (do not confuse with cell ID, this is player ID)

Structure of Remove Record:

Offset Type Description
0 uint32 Cell ID (which should be removed)

The Flags:

Bit Hex Mask Description
0 0x01 isVirus
1 0x02 isColorPresent (3 bytes with R,G,B components included into update)
2 0x04 isSkinPresent (zero terminated string with skin name included into update)
3 0x08 isNamePresent (zero terminated string with skin name included into update, UTF8 encoding)
4 0x10 isAgitated (if 1 then increases the amplitude of the waves on a blob outline)
5 0x20 isEject (if 1 then this is not a player cell, just W ejected blob)
6 0x40 isEjectEnemy (if 1 then this is W ejected blob, but it's set to 0 for self ejected blobs)
7 0x80 isExtendedFlags (if 1 then Extended Flags field is present)

The Extended Flags:

Bit Hex Mask Description
0 0x01 isPellet (if 1 then this is pellet cell)
1 0x02
2 0x04 isPlayerIdPresent (if 1 then PlayerId field is present in the record)
3 0x08
4 0x10
5 0x20
6 0x40
7 0x80

If someone knows some more details, please let me know,
I will update the table.

2) Leaderboard FFA message 0x35

Offset Value Type Description
0 0x35 byte Leaderboard FFA message code
3 xx record list FFA Records

3) Leaderboard FFA teams message 0x36

Offset Value Type Description
0 0x36 byte Leaderboard FFA message code
1 xx uint16 ?? probably the count of facebook friends
3 xx record list FFA Records

The structure of FFA Record is the following:

Offset Type Description
0 byte RecordFlags
xx utf8 zero string (optional) Cell Name (present when isNamePresent is set)
xx uint32 (optional) Player ID (present when isPlayerIdPresent is set)

RecordFlags description:

Bit Hex Mask Description
0 0x01 (not used) ?probably isOrderPresent?
1 0x02 (optional) isNamePresent
2 0x04 (optional) isPlayerIdPresent (usually appears with isNamePresent)
3 0x08 (optional) isMe (usually appears without isNamePresent and without isPlayerIdPresent, because it's already known for the client )
4 0x10 (optional) ?probably isFriend?
5 0x20
6 0x40
7 0x80

That's it :)
Please let me know if you know more details.

History:
26.05.2018: updated description for Extended flags and leaderboard RecordFlags description

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions