gameevents.proto
Source 2 base game-event protobuf messages. Provides the Source 1-legacy game-event bridge (CMsgSource1LegacyGameEvent), sound-system events (SoS), and surface-decal events. Identified by the EBaseGameEvents enum (200–212).
CS2 build 25218825 · Steam date 2026-09-09 · platform windows-x86_64 · schema format 2.2
Group: Game eventsMessages: 15 top-level, 18 totalEnums: 1 top-level, 1 total
Imports: networkbasetypes.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
EBaseGameEvents
Schema entity: EBaseGameEvents
| Name | Number | Message |
|---|---|---|
GE_VDebugGameSessionIDEvent | 200 | CMsgVDebugGameSessionIDEvent |
GE_PlaceDecalEvent | 201 | CMsgPlaceDecalEvent |
GE_ClearWorldDecalsEvent | 202 | CMsgClearWorldDecalsEvent |
GE_ClearEntityDecalsEvent | 203 | CMsgClearEntityDecalsEvent |
GE_ClearDecalsForEntityEvent | 204 | CMsgClearDecalsForEntityEvent |
GE_Source1LegacyGameEventList | 205 | CMsgSource1LegacyGameEventList |
GE_Source1LegacyListenEvents | 206 | CMsgSource1LegacyListenEvents |
GE_Source1LegacyGameEvent | 207 | CMsgSource1LegacyGameEvent |
GE_SosStartSoundEvent | 208 | CMsgSosStartSoundEvent |
GE_SosStopSoundEvent | 209 | CMsgSosStopSoundEvent |
GE_SosSetSoundEventParams | 210 | CMsgSosSetSoundEventParams |
GE_SosSetLibraryStackFields | 211 | CMsgSosSetLibraryStackFields |
GE_SosStopSoundEventHash | 212 | CMsgSosStopSoundEventHash |
GE_ClothStiffenAnimEvent | 213 | CMsgClothStiffenAnimEvent |
GE_ClothEffectAnimEvent | 214 | CMsgClothEffectAnimEvent |
Messages
CMsgVDebugGameSessionIDEvent
Debug event that reports the current game-session ID string to a specific client. Used during development to trace session continuity.
Wire id: EBaseGameEvents.GE_VDebugGameSessionIDEvent = 200
| Field | Number | Label | Type | Default | Description |
|---|---|---|---|---|---|
clientid | 1 | optional | int32 | Slot index of the client receiving the session-ID debug information. | |
gamesessionid | 2 | optional | string | Unique string identifier for the current game session. |
CMsgPlaceDecalEvent
Instructs clients to paint a decal (bullet hole, blood splatter, spray) onto a surface or entity in the world.
Wire id: EBaseGameEvents.GE_PlaceDecalEvent = 201
| Field | Number | Label | Type | Default | Description |
|---|---|---|---|---|---|
position | 1 | optional | CMsgVector | World-space hit position where the decal should be placed. | |
normal | 2 | optional | CMsgVector | Surface normal at the hit position; orients the decal correctly. | |
saxis | 3 | optional | CMsgVector | Secondary axis vector for texture alignment. | |
boneindex | 4 | optional | int32 | Bone index when the decal is attached to an animated model (-1 for world surfaces). | |
flags | 5 | optional | uint32 | Decal flags bitmask (temporary, permanent, etc.). | |
color | 6 | optional | fixed32 | RGBA colour tint applied to the decal texture. | |
random_seed | 7 | optional | int32 | Random seed used to select from a decal group variant. | |
decal_group_name | 8 | optional | uint32 | Hash of the decal group name (e.g. 'BulletImpactConcrete'). | |
size_override | 9 | optional | float | Override size in world units (0 = use default decal size). | |
entityhandle | 10 | optional | uint32 | 16777215 | Entity handle to attach the decal to (0xFFFFFF = world). |
material_id | 11 | optional | uint64 | Material ID of the surface at the hit point. | |
sequence_name | 12 | optional | uint32 | Hash of the decal sequence name for animated decals. | |
triangleindex | 13 | optional | int32 | Mesh triangle index for precise placement on complex geometry. | |
position_objectspace | 14 | optional | CMsgVector | ||
normal_objectspace | 15 | optional | CMsgVector |
CMsgClearWorldDecalsEvent
Removes all world-surface decals matching the given flags (e.g. clears bullet holes at round start).
Wire id: EBaseGameEvents.GE_ClearWorldDecalsEvent = 202
| Field | Number | Label | Type | Default | Description |
|---|---|---|---|---|---|
flagstoclear | 1 | optional | uint32 | Bitmask of decal flags; decals with any matching flag will be removed. |
CMsgClearEntityDecalsEvent
Removes all decals painted on entity surfaces that match the given flags.
Wire id: EBaseGameEvents.GE_ClearEntityDecalsEvent = 203
| Field | Number | Label | Type | Default | Description |
|---|---|---|---|---|---|
flagstoclear | 1 | optional | uint32 | Bitmask of decal flags to clear from all entity surfaces. |
CMsgClearDecalsForEntityEvent
Removes all decals on a specific entity that match the given flags.
Wire id: EBaseGameEvents.GE_ClearDecalsForEntityEvent = 204
| Field | Number | Label | Type | Default | Description |
|---|---|---|---|---|---|
flagstoclear | 1 | optional | uint32 | Bitmask of decal flags to clear. | |
entityhandle | 2 | optional | uint32 | 16777215 | Handle of the specific entity whose decals should be cleared. |
CMsgSource1LegacyGameEventList
Sent once at the start of a connection to register all Source 1 game-event schemas with the client. The client uses this list to decode subsequent CMsgSource1LegacyGameEvent messages by ID.
This is the Source 2 equivalent of the Source 1 'svc_GameEventList' message. All classic CS:GO game events (player_death, bomb_planted, etc.) are transmitted through this bridge.
Wire id: EBaseGameEvents.GE_Source1LegacyGameEventList = 205
| Field | Number | Label | Type | Default | Description |
|---|---|---|---|---|---|
descriptors | 1 | repeated | CMsgSource1LegacyGameEventList.descriptor_t |
CMsgSource1LegacyGameEventList.key_t
Referenced by (1): CMsgSource1LegacyGameEventList.descriptor_t
| Field | Number | Label | Type | Default | Description |
|---|---|---|---|---|---|
type | 1 | optional | int32 | ||
name | 2 | optional | string |
CMsgSource1LegacyGameEventList.descriptor_t
Referenced by (1): CMsgSource1LegacyGameEventList
| Field | Number | Label | Type | Default | Description |
|---|---|---|---|---|---|
eventid | 1 | optional | int32 | ||
name | 2 | optional | string | ||
keys | 3 | repeated | CMsgSource1LegacyGameEventList.key_t |
CMsgSource1LegacyListenEvents
Registers which Source 1 game-events a specific client wishes to receive. Used by plugins and spectators to opt in to event streams.
Wire id: EBaseGameEvents.GE_Source1LegacyListenEvents = 206
| Field | Number | Label | Type | Default | Description |
|---|---|---|---|---|---|
playerslot | 1 | optional | int32 | Player slot that is registering these event listeners. | |
eventarraybits | 2 | repeated | uint32 | Packed bitmask array; bit N set means listen for game-event with ID N. |
CMsgSource1LegacyGameEvent
Carries a single Source 1 game-event (player_death, weapon_fire, bomb_planted, etc.) over the Source 2 network layer. The event-type name and all key–value pairs are encoded inside the keys list.
CS2 game events (player_death, round_start, bomb_exploded, etc.) are all transmitted as CMsgSource1LegacyGameEvent messages. Use the event_name field to identify them and CMsgSource1LegacyGameEventList to decode keys.
Wire id: EBaseGameEvents.GE_Source1LegacyGameEvent = 207
| Field | Number | Label | Type | Default | Description |
|---|---|---|---|---|---|
event_name | 1 | optional | string | String name of the game event (e.g. 'player_death', 'bomb_planted'). | |
eventid | 2 | optional | int32 | Numeric event ID assigned during registration via CMsgSource1LegacyGameEventList. | |
keys | 3 | repeated | CMsgSource1LegacyGameEvent.key_t | Typed key–value pairs carrying event-specific data (integers, floats, strings, booleans). | |
server_tick | 4 | optional | int32 | Server tick on which the event was fired. | |
passthrough | 5 | optional | int32 | Passthrough flag used internally by the event system. |
CMsgSource1LegacyGameEvent.key_t
Referenced by (1): CMsgSource1LegacyGameEvent
| 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 |
CMsgSosStartSoundEvent
Starts a named sound event through the SoS (Sound Operating System) layer, associated with an optional source entity.
Wire id: EBaseGameEvents.GE_SosStartSoundEvent = 208
| Field | Number | Label | Type | Default | Description |
|---|---|---|---|---|---|
soundevent_guid | 1 | optional | int32 | Unique integer handle for this sound instance (used to stop or modify it later). | |
soundevent_hash | 2 | optional | fixed32 | CRC32 hash of the sound event name string. | |
source_entity_index | 3 | optional | int32 | -1 | Entity index of the sound source (-1 = world/positional). |
seed | 4 | optional | int32 | Random seed for sound variation selection. | |
packed_params | 5 | optional | bytes | Packed binary parameters for the sound event (volume, pitch, position, etc.). | |
start_time | 6 | optional | float | Game time at which the sound should start playing (allows latency compensation). |
CMsgSosStopSoundEvent
Stops a specific sound instance identified by its GUID.
Wire id: EBaseGameEvents.GE_SosStopSoundEvent = 209
| Field | Number | Label | Type | Default | Description |
|---|---|---|---|---|---|
soundevent_guid | 1 | optional | int32 | GUID of the sound instance to stop (matches soundevent_guid from CMsgSosStartSoundEvent). |
CMsgSosStopSoundEventHash
Stops all sound instances matching the given sound-event hash on the specified source entity.
Wire id: EBaseGameEvents.GE_SosStopSoundEventHash = 212
| Field | Number | Label | Type | Default | Description |
|---|---|---|---|---|---|
soundevent_hash | 1 | optional | fixed32 | CRC32 hash of the sound event name to stop. | |
source_entity_index | 2 | optional | int32 | -1 | Entity index to restrict the stop to (-1 = stop all matching sounds). |
CMsgSosSetSoundEventParams
Updates runtime parameters of an active sound event without restarting it (e.g. volume fade, pitch shift on a looping ambient sound).
Wire id: EBaseGameEvents.GE_SosSetSoundEventParams = 210
| Field | Number | Label | Type | Default | Description |
|---|---|---|---|---|---|
soundevent_guid | 1 | optional | int32 | GUID of the active sound instance to modify. | |
packed_params | 5 | optional | bytes | New packed parameter values to apply to the running sound. |
CMsgSosSetLibraryStackFields
Modifies fields in a named sound library stack (a group of sound layers), allowing global sound-mix changes from the server.
Wire id: EBaseGameEvents.GE_SosSetLibraryStackFields = 211
| Field | Number | Label | Type | Default | Description |
|---|---|---|---|---|---|
stack_hash | 1 | optional | fixed32 | CRC32 hash of the sound library stack name to modify. | |
packed_fields | 5 | optional | bytes | Packed binary field values to apply to the stack. |
CMsgClothStiffenAnimEvent
Wire id: EBaseGameEvents.GE_ClothStiffenAnimEvent = 213
| Field | Number | Label | Type | Default | Description |
|---|---|---|---|---|---|
source_entity_index | 1 | optional | int32 | -1 | |
vertex_set_hash | 2 | optional | int32 | ||
intensity | 3 | optional | float | ||
length | 4 | optional | float | ||
speed_in | 5 | optional | float | ||
speed_out | 6 | optional | float |
CMsgClothEffectAnimEvent
Wire id: EBaseGameEvents.GE_ClothEffectAnimEvent = 214
| Field | Number | Label | Type | Default | Description |
|---|---|---|---|---|---|
source_entity_index | 1 | optional | int32 | -1 | |
effect_name_hash | 2 | optional | int32 | ||
operation | 3 | optional | int32 | ||
flags | 4 | optional | int32 | ||
tags | 5 | optional | string | ||
pte | 6 | optional | CMsgVector |
Reference graph
Message reference graph (5 edges)
flowchart LR
n0["CMsgPlaceDecalEvent"]
n1["CMsgVector"]
n0 --> n1
n2["CMsgSource1LegacyGameEventList"]
n3["CMsgSource1LegacyGameEventList.descriptor_t"]
n2 --> n3
n4["CMsgSource1LegacyGameEventList.key_t"]
n3 --> n4
n5["CMsgSource1LegacyGameEvent"]
n6["CMsgSource1LegacyGameEvent.key_t"]
n5 --> n6
n7["CMsgClothEffectAnimEvent"]
n7 --> n1