FILE
VERSION: 0.5
Revised:
1.9
Updates
by D1st0rt:
-
Spelling/Grammar
-
S2C 0x20
-
C2S 0x06
-
S2C 0x06
-
S2C 0x07
Originally
Created by: SOS
The
following has been added by: Admiral Kirk
-
Added color coding.
-
Re-wrote Packet formats to something more readable.
-
Dredged through Snrrrubs Packet info to fill out the ranks
-
Dredged through Catid's clientprot.cpp for more Prot info
-
Bugged Snrrrub and Catid for yet more info :P
-
Corrected minor errors.
-
Added Directory Protocol Information
This
is a WOP (Work In Progress) the packet lists are not
yet
complete. I will be updating this periodically.
Huge
thanks to Catid, Snrrrub,
Coconut Emulator, nintendo64,
Kavar!,
Ave-iator and anyone else who figured out this
stuff.
General notes:
Maximum packet size is 520
All strings are padded with 0x00 characters
C2S
-- SubSpace
0x00 Start
of a special header
Scroll
down(Near the end) to the core packets section
0x01 Arena
login
Offset Length Description
0 1 Type
Byte 0x01
1 1 Ship
type *1
2 2 Allow
audio *2
4 2 X
Resolution
6 2 Y
Resolution
8 2 Main
arena number *3
10 16 Arena
name (Optional)
*1 - Ship type is 0 for warbird up to 8 for spectator
*2 - When Allow audio = 0, remote messages
aren't heard in private
arenas
(1.34.11f)
*3 - Set to Pub Number for Specific Pub, Set
to 0xFFFF for Random
Pub,
Set to 0xFFFD for private arena. Arena name is only used
with
private arenas.
0x02 Leave
arena
Offset Length Description
0 1 Type
Byte 0x02
0x03 Position
packet
Offset Length Description
0 1 Type
Byte 0x03
1 1 Direction (0 ... 360)
2 4 Timestamp
6 2 X
Velocity
8 2 Y
Pixels (0 ...
16384)
10 1 Checksum
11 1 Togglables
*1
12 2 X
Pixels (0 ...
16384)
14 2 Y
Velocity
16 2 Bounty
18 2 Energy
20 2 Weapon
Info *2
22 2 Energy
*4 (Optional)
24 2 S2C
Latency *4 (Optional)
26 2 Timer
*4 (Optional)
28 4 Item
info *3 *4 (Optional)
*1 - Togglables:
Each
value is one bit in a byte
Bit
1 - Stealth
Bit
2 - Cloak
Bit
4 - XRadar
Bit
8 - Antiwarp
Bit
16 - Flash (Play the cloak/warp flash)
Bit
32 - Safety (In safe)
Bit
64 - UFO (Using UFO)
Bit
128 - ?
*2 - Weapon info:
Unsigned
Integer Values or Booleans
Weapon
type :5 bits *a1
Weapon
level :2 bits
Bouncing
(Boolean) :1 bit
EMP (Boolean) :1 bit
Is
bomb (Boolean) :1 bit
Shrapnel :5 bits
Alternate
(Boolean) :1 bit *a2
*a1 - Weapon types:
0x00 - None
0x01 - Bullet
0x02 - Bouncing bullet
0x03 - Bomb
0x04 - Proximity bomb
0x05 - Repel
0x06 - Decoy
0x07 - Burst
0x08 - Thor
*a2 - (Bombs -> Mines; Bullets -> Multifire)
*3 - Item info:
Unsigned
Integer Values or Booleans
Shields
(Boolean) :1 bit
Super
(Boolean) :1 bit
Burst
Count :4 bits
Repel
Count :4 bits
Thor
Count :4 bits
Brick
Count :4 bits
Decoy
Count :4 bits
Rocket
Count :4 bits
Portal
Count :4 bits
?
Unknown :2 bits
*4 - These are supposed to be optional, but I'm not
certain
what
dictates if you should send them or not.
0x04 Unknown
0x05 Death message
Offset Length Description
0 1 Type
Byte 0x05
1 2 Killer's
Player ID
3 2 Your
bounty at time of death
0x06 Chat message
Offset Length Description
0 1 Type
Byte 0x06
1 1 Chat
Type *1
2 1 Sound
Byte
3 2 Target
Player's Player ID *2
5 * Text...
*1 - Chat types:
0x00 - Message in green text
[*arena,
*zone, ...]
0x01 - Public macro
0x02 - Public message
0x03 - Team message
[//
or ']
0x04 - Player to all members of another team
["Whatever]
0x05 - Private message
[/Whatever]
0x06 - Red warning message
[MODERATOR
WARNING: Whatever -Whoever]
0x07 - Remote private message *3
[(Whoever)>
Whatever]
0x08 - Red server errors, without a name tag
(S2C
only)
0x09 - Channel message *3
[X;Whatever]
*2 - Target player's player ID is 0x00 for the
Following
Chat
Types: 0x00, 0x01, 0x02, 0x03, 0x06, 0x07, 0x08
0x09.
It is PlayerID for 0x05 and 0x04
*3 - These are formatted
much as you’d expect. To send a Remote
Message, you include the name of the person you are
sending
the message to in the Text of the message like
so: ":Name:Message" and with Channel
Messages you include
the Number of the Channel you are sending to, like
so:
"#;Message".
0x07 Unknown
0x08 Spectate player
Offset Length Description
0 1 Type
Byte 0x08
1 2 Spectated
Player's Player ID
0x09 Password packet
Offset Length Description
0 1 Type
Byte 0x09
1 1 New
user (Boolean) *1
2 32 Name
*2
34 32 Password
*2
66 4 MachineID
*3
70 1 ConnectType
*4
71 2 Timezone
bias *5
73 2 ?
Unknown
75 2 Client
version *6
77 4 Mem
Checksums (0x01BC)
or (444)
81 4 Mem
Checksums (0x022B)
or (555)
85 4 PermissionID
89 12 ?
Unknown
*1 - New user is 1 if you want to create a new user,
otherwise 0
*2 - Name and password are trimmed down to 20/24
characters on
some
servers/billers
*3 - MachineID is the drive serial of C:
*4 - Connect types:
0x00 - Unknown
0x01 - SlowModem
0x02 - FastModem
0x03 - UnknownModem
0x04 - UnknownNotRAS
*5 - Time Zone Bias
240 = Eastern Standard Time (Safe Value)
*6 - Client versions:
0x24 - Continuum .36
0x86 - Subspace 1.34 And 1.35
0x0A Unknown
0x0B SSUpdate.EXE Request
Offset Length Description
0 1 Type
Byte 0x0B
0x0C Map.lvl Request
Offset Length Description
0 1 Type
Byte 0x0C
0x0D News.txt Request
Offset Length Description
0 1 Type
Byte 0x0D
0x0E Voice Message
Offset Length Description
0 1 Type
Byte 0x0E
1 4 Size
of Wav File (In Bytes)
5 * Wav
File...
0x0F Frequency Change
Offset Length Description
0 1 Type
Byte 0x0F
1 2 New
Frequency
0x10 Attach request
Offset Length Description
0 1 Type
Byte 0x10
1 2 Player
ID of Turretee
0x11 Unknown
0x12 Unknown
0x13 Flag request
Offset Length Description
0 1 Type
Byte 0x13
1 2 Flag
ID
0x14 Unknown
0x15 Drop Flags
Offset Length Description
0 1 Type
Byte 0x15
0x16 File transfer
Offset Length Description
0 1 Type
Byte 0x16
1 16 File
Name
17 * ZLib
Compressed File...
0x17 Registration Form Response (This one is big!)
Offset Length Description
0 1 Type
Byte 0x17
1 32 Real
Name *1
33 64 E-Mail
*1
97 32 City
*1
129 24 State
*1
153 1 Sex
*2
154 1 Age
155 1 Connecting
From: Home (Boolean)
156 1 Connecting
From: Work (Boolean)
157 1 Connecting
From: School (Boolean)
158 4 Processor
Type
162 4 ?
Unknown
166 40 Windows
Registration: Real Name
206 40 Windows
Registration: Organization
The
follow are registry entries and can be found in the following key:
System\CurrentControlSet\Services\Class\
246 40 Display\0000:DriverDesc
286 40 Monitor\0000:DriverDesc
326 40 Modem\0000:DriverDesc
366 40 Modem\0001:DriverDesc
406 40 Mouse\0000:DriverDesc
446 40 Net\0000:DriverDesc
486 40 Net\0001:DriverDesc
526 40 Printer\0000:DriverDesc
566 40 MEDIA\0000:DriverDesc
606 40 MEDIA\0001:DriverDesc
646 40 MEDIA\0002:DriverDesc
686 40 MEDIA\0003:DriverDesc
726 40 MEDIA\0004:DriverDesc
*1 - Real name, E-mail, City, State are
null-terminated strings
*2 - Sex is either 'F' or 'M'
0x18 Set ship type
Offset Length Description
0 1 Type
Byte 0x18
1 1 Ship
Type *1
*1 - Ship type is 0 for Warbird through 8 for
Spectator
0x19 Set personal banner
Offset Length Description
0 1 Type
Byte 0x19
1 96 Banner
Data *1
*1 - Banner data is the value for each pixel in the
banner
(Banner
size is 12x8 pixels = 96 pixels) Uncompressed
BMP
Files follow this format.
0x1A Security checksum *1
Offset Length Description
0 1 Type
Byte 0x1A
1 4 Weapon
Count
5 4 Settings
Checksum *2
9 4 Subspace.EXE
Checksum
13 4 Map.LVL
Checksum
17 4 S2CSlowTotal
21 4 S2CFastTotal
25 2 S2CSlowCurrent
27 2 S2CFastCurrent
29 2 S2CRelOut
(?Unsure?)
31 2 Ping
33 2 Ping
Average
35 2 Ping
Low
37 2 Ping
High
39 1 Slow
Frame Detected (Boolean)
*1 - The checksums are generated after a server-sent
seed
*2 - Settings checksum is the checksum of the contents
of the settings packet
0x1B Security violation
Offset Length Description
0 1 Type
Byte 0x1B
1 1 Violation
ID *1
*1 - Violation IDs:
These
may only be sent in response to a security checksum request
0x00 - Nothing wrong
0x01 - Slow framerate
0x02 - Current energy is higher than top energy
0x03 - Top energy higher than max energy
0x04 - Max energy without getting prizes
0x05 - Recharge rate higher than max recharge rate
0x06 - Max recharge rate without getting prizes
0x07 - Too many burst used(More than you have)
0x08 - Too many repel used
0x09 - Too many decoy used(More than you have)
0x0A - Too many thor used(More than you have)
0x0B - Too many wall blocks used(More than you have)
0x0C - Stealth on but never greened it
0x0D - Cloak on but never greened it
0x0E - XRadar on but never greened it
0x0F - AntiWarp on but never greened it
0x10 - Proximity bombs but never greened it
0x11 - Bouncing bullets but never greened it
0x12 - Max guns without greening
0x13 - Max bombs without greening
0x14 - Shields or Super on longer than possible
These
can be sent any time
0x15 - Saved ship weapon limits too high
(burst/repel/etc)
0x16 - Saved ship weapon level too high (guns/bombs)
0x17 - Login checksum mismatch (program exited)
0x18 - Something... I don’t know what
0x19 - Saved ship checksum mismatch
These
may only be sent in response to a security checksum request
0x1A - Softice Debugger Running
0x1B - Data checksum mismatch
0x1C - Parameter mismatch
.... - Unknown integrity violation
0x3C - Unknown integrity violation (High latency in
Continuum)
0x1C Drop Brick
Offset Length Description
0 1 Type
Byte 0x1C
1 2 X
Tiles
3 2 Y
Tiles
0x1D Unknown
0x1E End Personal KoTH Timer
Offset Length Description
0 1 Type
Byte 0x1E
0x1F Fire a Ball
Offset Length Description
0 1 Type
Byte 0x1F
1 1 Ball
ID
2 2 X
Pixels
4 2 Y
Pixels
6 2 X
Velocity
8 2 Y
Velocity
10 2 Your
Player ID
12 4 Timestamp
0x20 Ball request
Offset Length Description
0 1 Type
Byte 0x20
1 1 Ball
ID
2 4 Timestamp
0x21 Unknown
0x22 Unknown
-- Continuum
0x23 Unknown
0x24 Password packet *1
Offset Length Description
0 1 Type Byte
1 1 Boolean: New user
2 32 Name
34 32 Password
66 4 Machine ID
70 1 ConnectType (*info)
71 2 Time Zone Bias
73 2 ?
75 2 Client Version
77 87 ?
*1 - Don’t use this, its just here for completeness.
Use
the 0x09 Password Packet instead.
S2C
-- SubSpace
0x01 PlayerID Change
Offset Length Description
0 1 Type
Byte 0x01
1 2 New
Player ID *1
*1 - This is used to notify you of what your Player ID is.
0x02 You are now in the game
Offset Length Description
0 1 Type
Byte 0x02 *1
*1 - At this point you can start sending position packets.
0x03 Player(s) Entering *1
Offset Length Description
0 1 Type
Byte 0x03
1 1 Ship
Type
2 1 ?
Unknown (0x00)
3 20 Name
23 20 Squad
43 4 Flag
Points
47 4 Kill
Points
51 2 User
ID
53 2 Wins
55 2 Losses
57 6 Audio
and Other Stuff
*1 - Upon entering an arena
(or possibly some other instances) several
of these packets (including the Type Byte) are
stacked on top
of each other and sent as one packet. Be sure to
process this
packet in 64 byte chunks until there are no chunks
left.
0x04 Player Leaving
Offset Length Description
0 1 Type
Byte 0x04
1 2 Player
ID
0x05 Large Position Packet (Weapons Packet)
Offset Length Description
0 1 Type Byte
0x05
1 1 Direction (0 ... 360)
2 2 Time
Stamp
4 2 X
Pixels (0 ...
16384)
6 2 Y
Velocity
8 2 Player
ID
10 2 X
Velocity
12 1 Checksum
13 1 Togglables
*1
14 1 Ping
15 2 Y
Pixels (0 ...
16384)
17 2 Bounty
19 1 Weapon
Parameters
20 1 Weapon
Type
21 2 Energy
*2 *3 (Optional)
23 2 S2C
Lag *2 (Optional)
25 2 Timer
*2 (Optional)
27 4 Item
Info *2 (Optional)
*1 - Bit flags for the Togglables byte in bit order.
Stealth : 1;
Cloaked : 2;
XRadar : 4; // XRadar calcs
are done client-side
Antiwarp : 8; // Ditto
WarpFlash : 16; // Uncloaking,
portaling, etc.
UNKNOWN1 : 32; // ?
UFO : 64; // *ufo -
Illegal usage caught in sg9+
UNKNOWN2 : 128; // ?
*2 - This data is only sent if the ExtraPositionData
flag is
set
to true in the zone settings.
*3 - This data is sent if either the ExtraPositionData
flag is
set
to true, or if you are using the Energy Password.
0x06 Player Death
Offset Length Description
0 1 Type
Byte 0x06
1 1 ID
of green left by death
2 2 Killer
ID
4 2 Killed
ID
6 2 Bounty
*1
8 2 Number
of flags transferred
*1 - Add this to the Killers Kill Points.
0x07 Chat
Offset Length Description
0 1 Type Byte 0x07
1 1 Chat Type *1
2 1 Sound Byte
3 2 Originator ID *2
5 * Chat Message
*1 - Chat types:
0x00 -
Message in green text
[*arena,
*zone, ...]
0x01 - Public macro
0x02 - Public message
0x03 - Team message
[//
or ']
0x04 - Player to all members of another team
["Whatever]
0x05 - Private message
[/Whatever]
0x06 - Red warning message
[MODERATOR
WARNING: Whatever -Whoever]
0x07 - Remote private message
[(Whoever)>
Whatever]
0x08 - Red server errors, without a name tag
(S2C
only)
0x09 - Channel message
[;X;Whatever]
*2 - Target player's player ID is 0 for public
messages (0x02)
0x08 Player got a Prize
Offset Length Description
0 1 Type
Byte 0x08
1 4 Timestamp
5 2 X
Tiles
7 2 Y
Tiles
9 2 Prize
11 2 Player
ID
0x09 Player Score Update
Offset Length Description
0 1 Type
Byte 0x09
1 2 Player
ID
3 4 Flag
Points
7 4 Kill
Points
11 2 Wins
13 2 Losses
0x0A Password Packet Response
Offset Length Description
0 1 Type
Byte 0x0A
1 1 Login
Response *1
2 4 Server
Version *2
6 4 ?
Unknown
10 4 Subspace.exe
Checksum *3
14 4 ?
Unknown
18 1 ?
Unknown
19 1 Registration
Form Request (Boolean)
20 4 ?
Unknown
24 4 News.txt
Checksum *4
28 8 ?
Unknown
*1 - The following is a list of what all the
different Response
codes
mean.
0x00
- Login OK
0x01
- Unregistered Player *a1
0x02 - Bad Password
0x03 - Arena is Full
0x04 - Locked Out of Zone
0x05 - Permission Only Arena
0x06 - Permission to Spectate Only
0x07 - Too many points to Play here
0x08 - Connection is too Slow
0x09 - Permission Only Arena
0x0A - Server is Full
0x0B - Invalid Name
0x0C - Offensive Name
0x0D - No Active Biller *a2
0x0E - Server Busy, try Later
0x10 - Restricted Zone *a3
0x11 - Demo Version Detected
0x12 - Too many Demo users
0x13 - Demo Versions not Allowed
0xFF - Restricted Zone, Mod Access Required
*a1 - Some Billers require you to register and will
kick you out after a short time if you
do not
send the Registration form.
*a2 - You can still log in, but scores are not being
permanently recorded.
*a3 - This restriction is usually based on insufficient
hours of Usage.
*2 - Returns
the Major and the Minor version as a single number
(so
1.34.12a returns 134) does not return Sub Version..
*3 - Compare
against local Subspace.exe to determine if an Update
is
needed. (obviously useless with a bot)
*4 - Compare
against local News.txt to determine if there is a new
News.txt
to be downloaded.
0x0B Soccer Goal Made
Offset Length Description
0 1 Type
Byte 0x0B
1 2 Score
Frequency
3 4 Team
Points
0x0C Player Voice
Offset Length Description
0 1 Type
Byte 0x0C
1 2 Player
ID
3 * Wav
File...
0x0D Player Changed Frequency
Offset Length Description
0 1 Type
Byte 0x0D
1 2 Player
ID
3 2 Frequency
0x0E Create Turret Link
Offset Length Description
0 1 Type
Byte 0x0E
1 2 Turreter
Requester Player ID
3 2 Turreter
Destination Player ID *1
*1 - If this value is left blank, you will be detached from
whoever you are attached to.
0x0F Arena Settings
Offset Length Description
0 1 Type Byte 0x0F
1 1428 Arena Settings Struct *1
*1 - Very large Struct, included with this document is
a C++ Struct that details it.
0x10 File Transfer
Offset Length Description
0 1 Type
Byte 0x10
1 16 File
Name *1
17 * File
Data... *2
*1 - If no File Name is specified, then it's the
News.txt
*2 - If the file is the News.txt it must be
Uncompressed first.
According
to Snrrrub, all other files are sent Uncompressed.
0x11 Unknown
0x12 Flag Position
Offset Length Description
0 1 Type
Byte 0x12
1 2 Flag
ID
3 2 X
Tiles
5 2 Y
Tiles
7 2 Owner
*1
*1 - The Team number that owns the flag.
(I forget what it is for Neutral)
0x13 Flag Claim
Offset Length Description
0 1 Type
Byte 0x13
1 2 Flag
ID
3 2 Player
ID
0x14 Flag Victory
Offset Length Description
0 1 Type
Byte 0x14
1 2 Team
3 4 Jackpot
Points
0x15 Destroy Turret Link
Offset Length Description
0 1 Type
Byte 0x15
1 2 Turret
Driver Player ID *1
*1 - This is sent from a client that has turret(s) attached
to it and wants to get rid of them. Upon receiving
this
packet, you should check to see if you are attached
to
Player ID and if so, detach.
0x16 Drop Flag
Offset Length Description
0 1 Type
Byte 0x16
1 2 Carrier
Player ID
0x17 Unknown
0x18 Synchronization Request *2
Offset Length Description
0 1 Type
Byte 0x18
1 4 Prize
Seed Value *1
5 4 Door
Seed Value *1
9 4 Timestamp
13 4 Checksum
Key *2
*1 - Seed values are used in Random Number Generators
to
determine
the location of Prizes and the timing for
door
switching.
*2 - When this packet is received, a Security Checksum
packet
(0x1A)
should be returned using the Server Checksum Key.
0x19 Request File *1
Offset Length Description
0 1 Type
Byte 0x19
1 256 Local
File Name
257 16 Remote
File Name
*1 - Sent when the server wants a file from the client
(as
in *putfile). The file requested should be in
the
same directory as the EXE
0x1A Reset Score(s)
Offset Length Description
0 1 Type
Byte 0x1A
1 2 Player
ID *1
*1 - If player ID = 0xFFFF then reset everyone's
scores.
0x1B Personal Ship Reset
Offset Length Description
0 1 Type
Byte 0x1B
0x1C Put Player in Spectator Mode
Offset Length Description
0 1 Type
Byte 0x1C
One of the following: *1
1 <- 2 Player ID *2
1 <- 1 Bool: Request Extra Pos Info
*1 - Only one type of 1C is sent, check length to determine
which one was sent. Length = 2 or 3.
*2 - I can only assume if the ID is yours, you should
spec yourself.
(This packet brought to you
by: KrispyKreme)
0x1D Player Team and Ship Changed
Offset Length Description
0 1 Type Byte 0x1D
1 1 Ship Type
2 2 Player ID
4 2 Frequency
0x1E Personal Banner Changed *1
Offset Length Description
0 1 Type
Byte 0x1E
1 1 Bool:
?Unknown? (0x00)
*1 - This means that your banner was successfully
changed
0x1F Player Banner Changed
Offset Length Description
0 1 Type Byte 0x1F
1 2 Player ID
3 96 Player Banner (Bitmap)
0x20 Collected Prize (Client got one)
Offset Length Description
0 1 Type Byte 0x20
1 2 Prize Type *1
*1 - Listed here
from 0 to 28: Unknown, Recharge, Energy,
Rotation,
Stealth, Cloak, XRadar, Warp, Guns, Bombs,
BBullets,
Thruster, TopSpeed, FullCharge, EngineShutdown,
Multifire,
Proximity, Super, Shields, Antiwarp, Repel,
Burst,
Decoy, Thor, Multiprize, Brick, Rocket, Portal.
0x21 Brick Dropped
Offset Length Description
0 1 Type Byte 0x21
The following are repeated
until the end of the message
>1 2 X1 Tiles
>3 2 Y1 Tiles
>5 2 X2 Tiles
>7 2 Y2 Tiles
>9 2 Team
>11 2 Brick ID (sent more than once)
>13 4 Timestamp
0x22 Turf Flag Update
Offset Length Description
0 1 Type
Byte 0x22
The following are repeated
until the end of the message
>1 2 Team
for Flag X
0x23 Flag Reward Granted
Offset Length Description
0 1 Type Byte 0x23
1 2 Team
3 2 Points
Awarded
The following are repeated
until the end of the message
>5 2 Team
*1 (Optional)
>7 2 Points
Awarded *1 (Optional)
*1 - The Team and Points Awarded field are repeated
until
all
Point notifications are made. This packet can be
of
any length.
0x24 Speed Game Over
Offset Length Description
0 1 Type
Byte 0x24
1 1 Best
2 2 Your
Rank
4 4 Your
Score
8 4 Player
1 Score
12 4 Player
2 Score
16 4 Player
3 Score
20 4 Player
4 Score
24 4 Player
5 Score
28 2 Player
1 ID
30 2 Player
2 ID
32 2 Player
3 ID
34 2 Player
4 ID
36 2 Player
5 ID
0x25 Toggle UFO Ship
Offset Length Description
0 1 Type Byte 0x24
1 1 Boolean: Available?
0x26 Unknown
0x27 Keep-Alive
Offset Length Description
0 1 Type
Byte 0x27
0x28 Small Position Packet
Offset Length Description
0 1 Type
Byte 0x28
1 1 Direction (0 ... 360)
2 2 Timestamp
4 2 X
Pixels (0 ...
16384)
6 1 Ping
7 1 Bounty
8 1 Player
ID *1
9 1 Togglables
*2
10 2 Y
Velocity *3
12 2 Y
Pixels (0 ...
16384)
14 2 X Velocity *3
16 2 Energy *4 *5 (Optional)
18 2 S2C Lag *4 (Optional)
20 2 Timers *4 (Optional)
22 4 Items *4 *6 (Optional)
*1 - Since the Player ID here is only one byte, this
packet
is only capable of addressing the first
256
clients in a zone.
*2 - Togglables:
Each
value is one bit in a byte
Bit
1 - Stealth
Bit
2 - Cloak
Bit
4 - XRadar
Bit
8 - Antiwarp
Bit
16 - Flash (Play the cloak/warp flash)
Bit
32 - Safety (In safe)
Bit
64 - UFO (Using UFO)
Bit
128 - ?
*3 - Velocities are measured in Pixels per 10 Seconds.
*4 - These values are only received if the
ExtraPositionData
variable
in the Settings is set to True.
*5 - This value is sent if either the
ExtraPositionData value is
set
to True in the settings or if you are using the Energy
Password.
*6 - Item Info
Unsigned
Integer Values or Booleans
Shields
(Boolean) :1 bit
Super
(Boolean) :1 bit
Burst
Count :4 bits
Repel
Count :4 bits
Thor
Count :4 bits
Brick
Count :4 bits
Decoy
Count :4 bits
Rocket
Count :4 bits
Portal
Count :4 bits
?
Unknown :2 bits
0x29 Map Information
Offset Length Description
0 1 Type
Byte 0x29
1 16 Map
File Name
17 4 Map
Checksum *1
*1 - If the Mapfile does not exist, send a Request Map
packet.
If
it does exist, check its checksum against the one that
came
in this packet, if they do not match, Request the map.
If
they do match, load the map.
0x2A Compressed Map File
Offset Length Description
0 1 Type
Byte 0x2A
1 16 Map
File Name
17 * ZLib Compressed Map File
0x2B Set Personal KotH Timer
Offset Length Description
0 1 Type Byte 0x2B
1 4 New Timer Value
0x2C KotH Game Reset
Offset Length Description
0 1 Type Byte 0x2C
1 1 Adding KoTH Timer
2 4 Timer Value
6 2 Player ID
0x2D Unknown
0x2E Power-Ball Position Update
Offset Length Description
0 1 Type Byte 0x2E
1 1 Powerball ID
2 2 X Pixels
4 2 Y Pixels
6 2 X Velocity
8 2 Y Velocity
10 2 Owner ID
12 4 Timestamp
0x2F Arena Directory Listing
Offset Length Description
0 1 Type
Byte 0x2F
The following are repeated
until the end of the message
>1 * Arena
Name (Null Terminated) *1
>? 2 Arena
Population
*1 - Arena Name and Arena Population are repeated
until
all arenas are enumerated
0x30 Got Zone Banner Advertisements
Offset Length Description
0 1 Type
Byte 0x30
1 1 Display
Mode
2 2 Width
4 2 Height
6 4 Duration
10 * Banner
*1
*1 - No one seams to have any clue how to determine
the
end
of this field. Nor does anyone know how this
file
is packed. (W*H+10 != Len) ZLib??
0x31 You are now past the login sequence
Offset Length Description
0 1 Type
Byte 0x31
-- Continuum
0x32 Change Personal Ship Coordinates
Offset Length Description
0 1 Type
Byte 0x32
1 2 X
Tiles
3 2 Y
Tiles
0x33 Custom Login Failure Message
Offset Length Description
0 1 Type Byte 0x33
1 ? Message *1
*1 - Null 0x00 terminated text message.
0x34 Continuum Version Packet
Offset Length Description
0 1 Type Byte 0x34
1 2 Version number
3 4 Checksum
Core
-- Bi-Directional
0x01 Encryption Request
Offset Length Description
0 1 Type
Byte 0x01
1 4 Client
Encryption Key
5 2 Protocol
Version *1
*1 - Protocol versions:
0x0001 - Subspace
0x0010 - Continuum
0x02 Encryption Response
Offset Length Description
0 1 Type
Byte 0x02
1 4 Server
Encryption Key
0x03 Reliable Message
Offset Length Description
0 1 Type
Byte 0x03
1 4 ACK
ID
5 * Reliable
Packet...
0x04 Reliable ACK
Offset Length Description
0 1 Type
Byte 0x04
1 4 ACK
ID
0x05 Sync Request
Offset Length Description
0 1 Type
Byte 0x05
1 4 Timestamp
5 4 Total
Packets Sent
9 4 Total
Packets Received
0x06 Sync Response
Offset Length Description
0 1 Type
Byte 0x06
1 4 Received
Timestamp
5 4 Local
Timestamp
0x07 Disconnect
Offset Length Description
0 1 Type
Byte 0x07
0x08 Small Chunk Body
Offset Length Description
0 1 Type
Byte 0x08
1 * Data...
*1
*1 - Store the data in a buffer until you get a tail
0x09 Small Chunk Tail
Offset Length Description
0 1 Type
Byte 0x09
1 * Data...
*1
*1 - Now process the buffer
0x0A HUGE Chunk
Offset Length Description
0 1 Type
Byte 0x0A
1 4 Total
Length
5 * Data...
*1
*1 - Store data in a buffer until buffer
length
= Total Length.
0x0E Cluster *1
Offset Length Description
0 1 Type
Byte 0x0F
The following are repeated
until the end of the message
>1 1 Packet
Length
>2 * Packet...
*1 - Packet Length and Packet are repeated for each
packet
in
the packet cluster. This packet can be any length
up
to a maximum of 512 bytes.
Directory Server Protocol
-------------------------
This protocol uses the same core elements as the regular
subspace protocol. Such as Enc Request starting the connection
and the use of 0E and 0A and reliable packets. Major difference
is this connection is un-encrypted, which means that the
directory
server responds with the same exact key you send it, signifying
that encryption should be disabled. The request should be sent
reliably, and the response will be sent reliably in an 0x0A
huge
chunk packet. Sometimes if the tail is small enough it will be
sent in an 0x0E along with the ACK for your initial request.
(Odd that it should answer the request before ACKing it.)
C2S
---
0x01 Server List Request
Offset Length Description
0 1 Type
Byte 0x01
1 4 Minimum
# of Players to be listed
S2C
---
0x01 Server List Response
Offset Length Description
0 1 Type Byte 0x01
The following are repeated
until the end of the message
>1 4 Zone IP *1
>5 2 Zone Base Port
>7 2 Zone Number of Players
>9 2 Zone Keeping Score (Bool)
>11 4 Zone Server Version
>15 64 Zone Name
>79 * Zone Description (NULL Terminated)
*1 - From this point until the end of the packet is
repeated for every zone.