Modern Replay
Capture
- Normal sampling fills a bounded rolling buffer per
(server, session, steam) - Meaningful detection / investigation open triggers capture
- Pre-window preserved; post-window continues briefly
- Finalize → validate → checksum → store
AcReplay
Format (v2)
{
"version": 2,
"subjectSteamId64": "...",
"epoch": 0,
"triggerOffsetMs": 5000,
"frames": [{ "t": 0, "x": 0, "y": 0, "z": 0, "yaw": 0, "pitch": 0, "speed": 0 }],
"actors": [
{ "steamId64": "...", "role": "suspect", "frames": [] },
{ "steamId64": "...", "role": "target", "frames": [] }
],
"markers": [{ "t": 5000, "kind": "detection", "label": "..." }],
"privacy": { "chat": false, "voice": false, "screen": false, "clientFiles": false }
}
v1 payloads remain readable (subject frames only).
Viewer
- Cameras: Free, Suspect POV, Target POV, Follow Suspect
- Speeds: 0.25× / 0.5× / 1× / 2×
- Analysis: aim/eye angles, angular velocity (derived), speed, detection markers
- Bookmarks: staff notes at offsets (RBAC
detections.review)
Retention
- Default expiry from risk module
replayRetentionDays retentionProtected+ open / in_review / escalated / resolved_cheating prevent silent deletion- Purge expires visualization payload only — detections & investigations remain