csgogsi
COUNTER-STRIKE / GAME STATE LABThe game changes. Your overlay follows.
Play a scripted GSI sample and watch incoming updates drive a broadcast overlay. Follow the round, inspect the payloads, and see the events emitted by csgogsi - all in your browser.
Inside the broadcast
de_mirage · round 20Events, as they happen
select to inspectCallbacks emitted by csgogsi. Select one to revisit its triggering update.
- Press play. The first phase change starts the story.
Stream activity
scripted payload cadenceInside the update
Update #1 · 0.00s · highlighted fields changed since the previous update.
Incoming GSI JSON
{
"state": "carried",
"position": "100, -900, 0",
"player": "sample-5"
}
After CSGOGSI.digest()
{
"state": "carried",
"position": [
100,
-900,
0
],
"player": {
"steamid": "sample-5",
"name": "Ember",
"defaultName": "Ember",
"observer_slot": 6,
"stats": {
"kills": 13,
"assists": 2,
"deaths": 7,
"mvps": 1,
"score": 20
},
"weapons": [
{
"name": "weapon_ak47",
"paintkit": "default",
"type": "Rifle",
"ammo_clip": 30,
"ammo_clip_max": 30,
"ammo_reserve": 90,
"state": "active",
"id": "weapon_0"
}
],
"state": {
"health": 100,
"armor": 87,
"helmet": true,
"defusekit": false,
"flashed": 0,
"smoked": 0,
"burning": 0,
"money": 2800,
"round_kills": 0,
"round_killhs": 0,
"round_totaldmg": 0,
"equip_value": 4200,
"adr": 0
},
"position": [
-50,
-900,
0
],
"forward": [
1,
0,
0
],
"team": {
"score": 9,
"logo": null,
"consecutive_round_losses": 1,
"timeouts_remaining": 3,
"matches_won_this_series": 0,
"side": "T",
"name": "EMBER",
"country": null,
"id": null,
"orientation": "right",
"extra": {
}
},
"avatar": null,
"country": null,
"realName": null,
"extra": {
}
},
"site": null
}
INSIDE THE UPDATE
From game state to your next overlay.
GSI payload → CSGOGSI.digest() → state + eventsThese scripted spectator samples run through the real csgogsi library. Select an event to pause at its triggering update. The inspector shows complete payloads and normalized output, with changed fields highlighted.
A live integration needs a configured game client and an HTTP receiver that forwards updates to your browser. This showcase runs locally with sample data; no game connection is required.