Skip to content

Game Running Status + Session Metrics (Anti-Cheat-Safe) #120

@ntatschner

Description

@ntatschner

Problem

StarStats currently can't reliably detect when Star Citizen is running, and has no concept of session length, kill/death counts, or mission completions. Any approach that touches game memory or hooks risks anti-cheat flagging — the bar is "signals derivable from public process metadata or public log lines, no exception".

Approach

Process-list + Game.log-tail detection only. No memory reads, no hooks, no DLL injection.

Surfaces:

  • session timer (game start → last log activity)
  • kills / deaths parsed from Game.log
  • missions completed parsed from Game.log

Anti-cheat posture: every detection signal must be derivable from public process metadata or public log lines. No exception.

Acceptance criteria

  • Detection uses tasklist / process enumeration only — no memory access of any kind
  • Log parsing reads Game.log from disk after RSI writes it; no in-game hook
  • Session start fires on first parseable log activity after process appears; session end on process exit OR N minutes of log silence
  • K/D/missions counted by line-pattern match against documented Game.log event shapes
  • Every detection signal is auditably derivable from public surfaces (documented in spec)
  • Anti-cheat review: feature-flagged off by default until EAC posture is independently confirmed

Risks / Open questions

  • RSI may change Game.log line formats between patches — needs version-aware parser + graceful fallback
  • Session-end heuristic via log silence has false negatives (game crashed, log buffered)
  • Even read-only access to Game.log while the game is running may interact poorly with file locking on some Windows builds
  • Public-signals-only posture must be enforced by code review, not just policy — worth a clippy lint or static check
Original draft notes

Process-list + Game.log-tail detection only — no memory reads, no hooks, no DLL injection. Surfaces:

  • session timer (game start → last log activity)
  • kills / deaths parsed from Game.log
  • missions completed parsed from Game.log

Anti-cheat posture: every detection signal must be derivable from public process metadata or public log lines. No exception.


Tracking

Metadata

Metadata

Assignees

No one assigned

    Labels

    channel/alphaTargets the alpha release channel (early testing)channel/betaTargets the beta release channel (pre-release, opted-in users)channel/liveTargets the live release channel (stable, end-user-facing)channel/rcTargets the rc (release candidate) channel — final stabilization before livesurface/tray-whats-newsurface/web-roadmap

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions