Skip to content

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

NameNumberMessage
GE_VDebugGameSessionIDEvent200CMsgVDebugGameSessionIDEvent
GE_PlaceDecalEvent201CMsgPlaceDecalEvent
GE_ClearWorldDecalsEvent202CMsgClearWorldDecalsEvent
GE_ClearEntityDecalsEvent203CMsgClearEntityDecalsEvent
GE_ClearDecalsForEntityEvent204CMsgClearDecalsForEntityEvent
GE_Source1LegacyGameEventList205CMsgSource1LegacyGameEventList
GE_Source1LegacyListenEvents206CMsgSource1LegacyListenEvents
GE_Source1LegacyGameEvent207CMsgSource1LegacyGameEvent
GE_SosStartSoundEvent208CMsgSosStartSoundEvent
GE_SosStopSoundEvent209CMsgSosStopSoundEvent
GE_SosSetSoundEventParams210CMsgSosSetSoundEventParams
GE_SosSetLibraryStackFields211CMsgSosSetLibraryStackFields
GE_SosStopSoundEventHash212CMsgSosStopSoundEventHash
GE_ClothStiffenAnimEvent213CMsgClothStiffenAnimEvent
GE_ClothEffectAnimEvent214CMsgClothEffectAnimEvent

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

FieldNumberLabelTypeDefaultDescription
clientid1optionalint32Slot index of the client receiving the session-ID debug information.
gamesessionid2optionalstringUnique 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

FieldNumberLabelTypeDefaultDescription
position1optionalCMsgVectorWorld-space hit position where the decal should be placed.
normal2optionalCMsgVectorSurface normal at the hit position; orients the decal correctly.
saxis3optionalCMsgVectorSecondary axis vector for texture alignment.
boneindex4optionalint32Bone index when the decal is attached to an animated model (-1 for world surfaces).
flags5optionaluint32Decal flags bitmask (temporary, permanent, etc.).
color6optionalfixed32RGBA colour tint applied to the decal texture.
random_seed7optionalint32Random seed used to select from a decal group variant.
decal_group_name8optionaluint32Hash of the decal group name (e.g. 'BulletImpactConcrete').
size_override9optionalfloatOverride size in world units (0 = use default decal size).
entityhandle10optionaluint3216777215Entity handle to attach the decal to (0xFFFFFF = world).
material_id11optionaluint64Material ID of the surface at the hit point.
sequence_name12optionaluint32Hash of the decal sequence name for animated decals.
triangleindex13optionalint32Mesh triangle index for precise placement on complex geometry.
position_objectspace14optionalCMsgVector
normal_objectspace15optionalCMsgVector

CMsgClearWorldDecalsEvent

Removes all world-surface decals matching the given flags (e.g. clears bullet holes at round start).

Wire id: EBaseGameEvents.GE_ClearWorldDecalsEvent = 202

FieldNumberLabelTypeDefaultDescription
flagstoclear1optionaluint32Bitmask 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

FieldNumberLabelTypeDefaultDescription
flagstoclear1optionaluint32Bitmask 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

FieldNumberLabelTypeDefaultDescription
flagstoclear1optionaluint32Bitmask of decal flags to clear.
entityhandle2optionaluint3216777215Handle 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

FieldNumberLabelTypeDefaultDescription
descriptors1repeatedCMsgSource1LegacyGameEventList.descriptor_t

CMsgSource1LegacyGameEventList.key_t

Referenced by (1): CMsgSource1LegacyGameEventList.descriptor_t

FieldNumberLabelTypeDefaultDescription
type1optionalint32
name2optionalstring

CMsgSource1LegacyGameEventList.descriptor_t

Referenced by (1): CMsgSource1LegacyGameEventList

FieldNumberLabelTypeDefaultDescription
eventid1optionalint32
name2optionalstring
keys3repeatedCMsgSource1LegacyGameEventList.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

FieldNumberLabelTypeDefaultDescription
playerslot1optionalint32Player slot that is registering these event listeners.
eventarraybits2repeateduint32Packed 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

FieldNumberLabelTypeDefaultDescription
event_name1optionalstringString name of the game event (e.g. 'player_death', 'bomb_planted').
eventid2optionalint32Numeric event ID assigned during registration via CMsgSource1LegacyGameEventList.
keys3repeatedCMsgSource1LegacyGameEvent.key_tTyped key–value pairs carrying event-specific data (integers, floats, strings, booleans).
server_tick4optionalint32Server tick on which the event was fired.
passthrough5optionalint32Passthrough flag used internally by the event system.

CMsgSource1LegacyGameEvent.key_t

Referenced by (1): CMsgSource1LegacyGameEvent

FieldNumberLabelTypeDefaultDescription
type1optionalint32
val_string2optionalstring
val_float3optionalfloat
val_long4optionalint32
val_short5optionalint32
val_byte6optionalint32
val_bool7optionalbool
val_uint648optionaluint64

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

FieldNumberLabelTypeDefaultDescription
soundevent_guid1optionalint32Unique integer handle for this sound instance (used to stop or modify it later).
soundevent_hash2optionalfixed32CRC32 hash of the sound event name string.
source_entity_index3optionalint32-1Entity index of the sound source (-1 = world/positional).
seed4optionalint32Random seed for sound variation selection.
packed_params5optionalbytesPacked binary parameters for the sound event (volume, pitch, position, etc.).
start_time6optionalfloatGame 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

FieldNumberLabelTypeDefaultDescription
soundevent_guid1optionalint32GUID 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

FieldNumberLabelTypeDefaultDescription
soundevent_hash1optionalfixed32CRC32 hash of the sound event name to stop.
source_entity_index2optionalint32-1Entity 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

FieldNumberLabelTypeDefaultDescription
soundevent_guid1optionalint32GUID of the active sound instance to modify.
packed_params5optionalbytesNew 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

FieldNumberLabelTypeDefaultDescription
stack_hash1optionalfixed32CRC32 hash of the sound library stack name to modify.
packed_fields5optionalbytesPacked binary field values to apply to the stack.

CMsgClothStiffenAnimEvent

Wire id: EBaseGameEvents.GE_ClothStiffenAnimEvent = 213

FieldNumberLabelTypeDefaultDescription
source_entity_index1optionalint32-1
vertex_set_hash2optionalint32
intensity3optionalfloat
length4optionalfloat
speed_in5optionalfloat
speed_out6optionalfloat

CMsgClothEffectAnimEvent

Wire id: EBaseGameEvents.GE_ClothEffectAnimEvent = 214

FieldNumberLabelTypeDefaultDescription
source_entity_index1optionalint32-1
effect_name_hash2optionalint32
operation3optionalint32
flags4optionalint32
tags5optionalstring
pte6optionalCMsgVector

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