networkbasetypes.proto
Foundational proto-type definitions shared across all CS2 network and game-event messages. Provides compact vector, angle, quaternion, colour, and player-info structs used as fields in higher-level messages.
CS2 build 25218825 · Steam date 2026-09-09 · platform windows-x86_64 · schema format 2.2
Group: CS2 wire formatMessages: 24 top-level, 27 totalEnums: 3 top-level, 3 total
Imports: valveextensions.proto, google/protobuf/descriptor.proto, network_connection.proto
Wire ids
Every message in this file that a wire-id enum constant maps to, by the join rule described on the Protobufs index.
Enums
SignonState_t
Schema entity: SignonState_t
| Name | Number | Message |
|---|---|---|
SIGNONSTATE_NONE | 0 | |
SIGNONSTATE_CHALLENGE | 1 | |
SIGNONSTATE_CONNECTED | 2 | |
SIGNONSTATE_NEW | 3 | |
SIGNONSTATE_PRESPAWN | 4 | |
SIGNONSTATE_SPAWN | 5 | |
SIGNONSTATE_FULL | 6 | |
SIGNONSTATE_CHANGELEVEL | 7 |
NET_Messages
Schema entity: NET_Messages
| Name | Number | Message |
|---|---|---|
net_NOP | 0 | CNETMsg_NOP |
net_Disconnect_Legacy | 1 | |
net_SplitScreenUser | 3 | CNETMsg_SplitScreenUser |
net_Tick | 4 | CNETMsg_Tick |
net_StringCmd | 5 | CNETMsg_StringCmd |
net_SetConVar | 6 | CNETMsg_SetConVar |
net_SignonState | 7 | CNETMsg_SignonState |
net_SpawnGroup_Load | 8 | CNETMsg_SpawnGroup_Load |
net_SpawnGroup_ManifestUpdate | 9 | CNETMsg_SpawnGroup_ManifestUpdate |
net_SpawnGroup_SetCreationTick | 11 | CNETMsg_SpawnGroup_SetCreationTick |
net_SpawnGroup_Unload | 12 | CNETMsg_SpawnGroup_Unload |
net_SpawnGroup_LoadCompleted | 13 | CNETMsg_SpawnGroup_LoadCompleted |
net_DebugOverlay | 15 | CNETMsg_DebugOverlay |
SpawnGroupFlags_t
Schema entity: SpawnGroupFlags_t
| Name | Number | Message |
|---|---|---|
SPAWN_GROUP_LOAD_ENTITIES_FROM_SAVE | 1 | |
SPAWN_GROUP_DONT_SPAWN_ENTITIES | 2 | |
SPAWN_GROUP_SYNCHRONOUS_SPAWN | 4 | |
SPAWN_GROUP_IS_INITIAL_SPAWN_GROUP | 8 | |
SPAWN_GROUP_CREATE_CLIENT_ONLY_ENTITIES | 16 | |
SPAWN_GROUP_BLOCK_UNTIL_LOADED | 64 | |
SPAWN_GROUP_LOAD_STREAMING_DATA | 128 | |
SPAWN_GROUP_CREATE_NEW_SCENE_WORLD | 256 |
Messages
CMsgVector
Compact three-component world-space position or direction vector transmitted over the CS2 network. Used for shot origins, positions, normals, etc.
Referenced by (54): CCLCMsg_HltvFixupOperatorTick, CCSPredictionEvent_PlayerTeleport, CCSUsrMsg_Damage, CCSUsrMsg_DamagePrediction, CCSUsrMsg_ShootInfo, CEntityMessageDoSpark, CEntityMessagePropagateForce, CMsgClothEffectAnimEvent, CMsgEffectData, CMsgPlaceDecalEvent, CMsgPlayerBulletHit, CMsgTEArmorRicochet, CMsgTEBeamEntPoint, CMsgTEBeamPoints, CMsgTEBloodStream, CMsgTEBubbleTrail, CMsgTEBubbles, CMsgTEDecal, CMsgTEDust, CMsgTEEnergySplash, CMsgTEExplosion, CMsgTEFireBullets, CMsgTEGlowSprite, CMsgTEImpact, CMsgTELargeFunnel, CMsgTEMuzzleFlash, CMsgTEPhysicsProp, CMsgTEShatterSurface, CMsgTESmoke, CMsgTESparks, CMsgTEWorldDecal, CMsgTransform, CNETMsg_DebugOverlay, CNETMsg_SpawnGroup_Load, CP2P_VRAvatarPosition.COrientation, CSGOInputHistoryEntryPB, CSVCMsg_BSPDecal, CUserMessageScreenTilt, CUserMessageShakeDir, CUserMessage_PlayResponseConditional, CUserMsg_ParticleManager.AddFan, CUserMsg_ParticleManager.CreateParticle, CUserMsg_ParticleManager.SetParticleClusterGrowth, CUserMsg_ParticleManager.SetParticleNamedValueContext.TransformContextValue, CUserMsg_ParticleManager.SetParticleNamedValueContext.VectorContextValue, CUserMsg_ParticleManager.UpdateEntityPosition, CUserMsg_ParticleManager.UpdateFan, CUserMsg_ParticleManager.UpdateParticleEnt, CUserMsg_ParticleManager.UpdateParticleFallback, CUserMsg_ParticleManager.UpdateParticleFwd_OBSOLETE, CUserMsg_ParticleManager.UpdateParticleOffset, CUserMsg_ParticleManager.UpdateParticleOrient_OBSOLETE, CUserMsg_ParticleManager.UpdateParticleTransform, CUserMsg_ParticleManager.UpdateParticle_OBSOLETE
| Field | Number | Label | Type | Default | Description |
|---|---|---|---|---|---|
x | 1 | optional | float | X component of the vector (world units). | |
y | 2 | optional | float | Y component of the vector (world units). | |
z | 3 | optional | float | Z component of the vector (world units, positive = up). | |
w | 4 | optional | float |
CMsgVector2D
Two-component vector for screen-space or 2D positions.
Referenced by (1): CCSUsrMsg_HudMsg
| Field | Number | Label | Type | Default | Description |
|---|---|---|---|---|---|
x | 1 | optional | float | X component. | |
y | 2 | optional | float | Y component. |
CMsgQAngle
Euler angle triplet (pitch, yaw, roll) used to represent orientations in CS2 network messages. Pitch = up/down, Yaw = left/right, Roll = tilt.
Referenced by (20): CBaseUserCmdPB, CCLCMsg_HltvFixupOperatorTick, CCSPredictionEvent_PlayerTeleport, CCSUsrMsg_DamagePrediction, CCSUsrMsg_ShootInfo, CEntityMessageFixAngle, CMsgEffectData, CMsgTEFireBullets, CMsgTEFireBullets.Extra, CMsgTEMuzzleFlash, CMsgTEPhysicsProp, CMsgTEShatterSurface, CNETMsg_SpawnGroup_Load, CP2P_VRAvatarPosition.COrientation, CSGOInputHistoryEntryPB, CSVCMsg_CrosshairAngle, CSVCMsg_FixAngle, CUserMsg_ParticleManager.SetParticleNamedValueContext.TransformContextValue, CUserMsg_ParticleManager.UpdateParticleEnt, CUserMsg_ParticleManager.UpdateParticleOffset
| Field | Number | Label | Type | Default | Description |
|---|---|---|---|---|---|
x | 1 | optional | float | Pitch angle in degrees (positive = look down). | |
y | 2 | optional | float | Yaw angle in degrees (positive = turn left). | |
z | 3 | optional | float | Roll angle in degrees. |
CMsgQuaternion
Unit quaternion representation of a 3D rotation, used when higher precision or gimbal-lock avoidance is needed.
Referenced by (2): CMsgTransform, CUserMsg_ParticleManager.UpdateParticleTransform
| Field | Number | Label | Type | Default | Description |
|---|---|---|---|---|---|
x | 1 | optional | float | Quaternion X component. | |
y | 2 | optional | float | Quaternion Y component. | |
z | 3 | optional | float | Quaternion Z component. | |
w | 4 | optional | float | Quaternion W (scalar) component. |
CMsgTransform
Combined position and orientation transform message.
Referenced by (1): CCSUsrMsg_ShootInfo
| Field | Number | Label | Type | Default | Description |
|---|---|---|---|---|---|
position | 1 | optional | CMsgVector | World-space translation vector. | |
scale | 2 | optional | float | ||
orientation | 3 | optional | CMsgQuaternion | Rotation quaternion. |
CMsgRGBA
32-bit RGBA colour value transmitted as four separate byte-range integers.
Referenced by (3): CCSUsrMsg_Fade, CCSUsrMsg_HudMsg, CNETMsg_DebugOverlay
| Field | Number | Label | Type | Default | Description |
|---|---|---|---|---|---|
r | 1 | optional | int32 | Red channel (0–255). | |
g | 2 | optional | int32 | Green channel (0–255). | |
b | 3 | optional | int32 | Blue channel (0–255). | |
a | 4 | optional | int32 | Alpha channel (0 = fully transparent, 255 = fully opaque). |
CMsgPlayerInfo
Compact player-identification record stored in the 'userinfo' string table. Every connected client has an entry here; used to resolve entity handles to Steam IDs and display names in demo parsers.
| Field | Number | Label | Type | Default | Description |
|---|---|---|---|---|---|
name | 1 | optional | string | Steam display name of the player (UTF-8, up to 32 bytes). | |
xuid | 2 | optional | fixed64 | Steam's internal 64-bit XUID (may differ from SteamID64 for certain account types). | |
userid | 3 | optional | int32 | Session-scoped integer user ID assigned by the server (unique per connection). | |
steamid | 4 | optional | fixed64 | 64-bit SteamID64 of the player. | |
fakeplayer | 5 | optional | bool | True when this slot is occupied by a bot rather than a human player. | |
ishltv | 6 | optional | bool | True when this slot is a GOTV/HLTV proxy connection. |
CEntityMsg
Wrapper that targets an entity-specific message to a specific entity handle.
Referenced by (5): CEntityMessageDoSpark, CEntityMessageFixAngle, CEntityMessagePlayJingle, CEntityMessagePropagateForce, CEntityMessageScreenOverlay
| Field | Number | Label | Type | Default | Description |
|---|---|---|---|---|---|
target_entity | 1 | optional | uint32 | 16777215 | Packed entity handle of the target entity (0xFFFFFF = broadcast). |
CMsg_CVars
List of convar name–value pairs, used to synchronise convar state between client and server (e.g. in CNETMsg_SetConVar).
Referenced by (1): CNETMsg_SetConVar
| Field | Number | Label | Type | Default | Description |
|---|---|---|---|---|---|
cvars | 1 | repeated | CMsg_CVars.CVar |
CMsg_CVars.CVar
Referenced by (1): CMsg_CVars
| Field | Number | Label | Type | Default | Description |
|---|---|---|---|---|---|
name | 1 | optional | string | ||
value | 2 | optional | string |
CNETMsg_NOP
No-operation message; sent as a heartbeat or padding packet.
Wire id: NET_Messages.net_NOP = 0
(no fields)
CNETMsg_SplitScreenUser
Wire id: NET_Messages.net_SplitScreenUser = 3
| Field | Number | Label | Type | Default | Description |
|---|---|---|---|---|---|
slot | 1 | optional | int32 |
CNETMsg_Tick
Per-tick synchronisation heartbeat sent from the server to all clients. Carries host-performance metrics alongside the current tick number.
Wire id: NET_Messages.net_Tick = 4
| Field | Number | Label | Type | Default | Description |
|---|---|---|---|---|---|
tick | 1 | optional | uint32 | Current server tick number. | |
host_computationtime | 4 | optional | uint32 | Server computation time for this tick in microseconds. | |
host_computationtime_std_deviation | 5 | optional | uint32 | Standard deviation of recent computation times in microseconds. | |
legacy_host_loss | 7 | optional | uint32 | ||
host_unfiltered_frametime | 8 | optional | uint32 | Unsmoothed frame time in microseconds. | |
hltv_replay_flags | 9 | optional | uint32 | GOTV replay control flags. | |
expected_long_tick | 10 | optional | uint32 | Tick number that is expected to take longer than usual (pre-warned to clients). | |
expected_long_tick_reason | 11 | optional | string | ||
host_frame_dropped_pct_x10 | 12 | optional | uint32 | Percentage of server frames dropped, multiplied by 10 (e.g. 15 = 1.5%). | |
host_frame_irregular_arrival_pct_x10 | 13 | optional | uint32 |
CNETMsg_StringCmd
Client→Server string command (e.g. 'joingame', 'spectate', 'changeteam'). The server whitelists valid commands; arbitrary console commands are not accepted.
Wire id: NET_Messages.net_StringCmd = 5
| Field | Number | Label | Type | Default | Description |
|---|---|---|---|---|---|
command | 1 | optional | string | ||
prediction_sync | 2 | optional | uint32 |
CNETMsg_SetConVar
Pushes a list of convar values from the server to the client (or from client to server when the client is reporting user settings).
Wire id: NET_Messages.net_SetConVar = 6
| Field | Number | Label | Type | Default | Description |
|---|---|---|---|---|---|
convars | 1 | optional | CMsg_CVars |
CNETMsg_SignonState
Reports the current connection stage of the client or server during the multi-step sign-on sequence.
Wire id: NET_Messages.net_SignonState = 7
| Field | Number | Label | Type | Default | Description |
|---|---|---|---|---|---|
signon_state | 1 | optional | SignonState_t | SIGNONSTATE_NONE | SignonState_t enum: NONE=0, CHALLENGE=1, CONNECTED=2, NEW=3, PRESPAWN=4, SPAWN=5, FULL=6, CHANGELEVEL=7. |
spawn_count | 2 | optional | uint32 | Incremented each map load; used to detect map changes. | |
num_server_players | 3 | optional | uint32 | Number of player slots currently occupied on the server. | |
players_networkids | 4 | repeated | string | List of SteamID strings for currently connected players. | |
map_name | 5 | optional | string | Current map name. | |
addons | 6 | optional | string | Comma-separated list of workshop addons loaded on this server. |
CSVCMsg_GameEvent
Referenced by (1): CSVCMsgList_GameEvents.event_t
| Field | Number | Label | Type | Default | Description |
|---|---|---|---|---|---|
event_name | 1 | optional | string | ||
eventid | 2 | optional | int32 | ||
keys | 3 | repeated | CSVCMsg_GameEvent.key_t |
CSVCMsg_GameEvent.key_t
Referenced by (1): CSVCMsg_GameEvent
| Field | Number | Label | Type | Default | Description |
|---|---|---|---|---|---|
type | 1 | optional | int32 | ||
val_string | 2 | optional | string | ||
val_float | 3 | optional | float | ||
val_long | 4 | optional | int32 | ||
val_short | 5 | optional | int32 | ||
val_byte | 6 | optional | int32 | ||
val_bool | 7 | optional | bool | ||
val_uint64 | 8 | optional | uint64 |
CSVCMsgList_GameEvents
| Field | Number | Label | Type | Default | Description |
|---|---|---|---|---|---|
events | 1 | repeated | CSVCMsgList_GameEvents.event_t |
CSVCMsgList_GameEvents.event_t
Referenced by (1): CSVCMsgList_GameEvents
| Field | Number | Label | Type | Default | Description |
|---|---|---|---|---|---|
tick | 1 | optional | int32 | ||
event | 2 | optional | CSVCMsg_GameEvent |
CNETMsg_SpawnGroup_Load
Wire id: NET_Messages.net_SpawnGroup_Load = 8
| Field | Number | Label | Type | Default | Description |
|---|---|---|---|---|---|
worldname | 1 | optional | string | ||
entitylumpname | 2 | optional | string | ||
entityfiltername | 3 | optional | string | ||
spawngrouphandle | 4 | optional | uint32 | ||
spawngroupownerhandle | 5 | optional | uint32 | ||
world_offset_pos | 6 | optional | CMsgVector | ||
world_offset_angle | 7 | optional | CMsgQAngle | ||
spawngroupmanifest | 8 | optional | bytes | ||
flags | 9 | optional | uint32 | ||
tickcount | 10 | optional | int32 | ||
manifestincomplete | 11 | optional | bool | ||
localnamefixup | 12 | optional | string | ||
parentnamefixup | 13 | optional | string | ||
manifestloadpriority | 14 | optional | int32 | ||
worldgroupid | 15 | optional | uint32 | ||
creationsequence | 16 | optional | uint32 | ||
savegamefilename | 17 | optional | string | ||
spawngroupparenthandle | 18 | optional | uint32 | ||
leveltransition | 19 | optional | bool | ||
worldgroupname | 20 | optional | string |
CNETMsg_SpawnGroup_ManifestUpdate
Wire id: NET_Messages.net_SpawnGroup_ManifestUpdate = 9
| Field | Number | Label | Type | Default | Description |
|---|---|---|---|---|---|
spawngrouphandle | 1 | optional | uint32 | ||
spawngroupmanifest | 2 | optional | bytes | ||
manifestincomplete | 3 | optional | bool |
CNETMsg_SpawnGroup_SetCreationTick
Wire id: NET_Messages.net_SpawnGroup_SetCreationTick = 11
| Field | Number | Label | Type | Default | Description |
|---|---|---|---|---|---|
spawngrouphandle | 1 | optional | uint32 | ||
tickcount | 2 | optional | int32 | ||
creationsequence | 3 | optional | uint32 |
CNETMsg_SpawnGroup_Unload
Wire id: NET_Messages.net_SpawnGroup_Unload = 12
| Field | Number | Label | Type | Default | Description |
|---|---|---|---|---|---|
spawngrouphandle | 1 | optional | uint32 | ||
flags | 2 | optional | uint32 | ||
tickcount | 3 | optional | int32 |
CNETMsg_SpawnGroup_LoadCompleted
Wire id: NET_Messages.net_SpawnGroup_LoadCompleted = 13
| Field | Number | Label | Type | Default | Description |
|---|---|---|---|---|---|
spawngrouphandle | 1 | optional | uint32 |
CSVCMsg_GameSessionConfiguration
Referenced by (1): CSVCMsg_ServerInfo
| Field | Number | Label | Type | Default | Description |
|---|---|---|---|---|---|
is_multiplayer | 1 | optional | bool | ||
is_loadsavegame | 2 | optional | bool | ||
is_background_map | 3 | optional | bool | ||
is_headless | 4 | optional | bool | ||
min_client_limit | 5 | optional | uint32 | ||
max_client_limit | 6 | optional | uint32 | ||
max_clients | 7 | optional | uint32 | ||
tick_interval | 8 | optional | fixed32 | ||
hostname | 9 | optional | string | ||
savegamename | 10 | optional | string | ||
s1_mapname | 11 | optional | string | ||
gamemode | 12 | optional | string | ||
server_ip_address | 13 | optional | string | ||
data | 14 | optional | bytes | ||
is_localonly | 15 | optional | bool | ||
is_transition | 16 | optional | bool | ||
previouslevel | 17 | optional | string | ||
landmarkname | 18 | optional | string | ||
no_steam_server | 19 | optional | bool |
CNETMsg_DebugOverlay
Wire id: NET_Messages.net_DebugOverlay = 15
| Field | Number | Label | Type | Default | Description |
|---|---|---|---|---|---|
etype | 1 | optional | int32 | ||
vectors | 2 | repeated | CMsgVector | ||
colors | 3 | repeated | CMsgRGBA | ||
dimensions | 4 | repeated | float | ||
times | 5 | repeated | float | ||
bools | 6 | repeated | bool | ||
uint64s | 7 | repeated | uint64 | ||
strings | 8 | repeated | string |
Reference graph
Message reference graph (11 edges)
flowchart LR
n0["CMsgTransform"]
n1["CMsgVector"]
n0 --> n1
n2["CMsgQuaternion"]
n0 --> n2
n3["CMsg_CVars"]
n4["CMsg_CVars.CVar"]
n3 --> n4
n5["CNETMsg_SetConVar"]
n5 --> n3
n6["CSVCMsg_GameEvent"]
n7["CSVCMsg_GameEvent.key_t"]
n6 --> n7
n8["CSVCMsgList_GameEvents"]
n9["CSVCMsgList_GameEvents.event_t"]
n8 --> n9
n9 --> n6
n10["CNETMsg_SpawnGroup_Load"]
n10 --> n1
n11["CMsgQAngle"]
n10 --> n11
n12["CNETMsg_DebugOverlay"]
n12 --> n1
n13["CMsgRGBA"]
n12 --> n13