API für Rocket League-Statistiken

In diesem Dokument werden die Funktionen der API für Rocket League-Spieldaten beschrieben. Zunächst müssen die Spieler dieses Feature im Spiel aktivieren, indem sie die Datei „DefaultStatsAPI.ini“ bearbeiten, so wie unten erläutert. Sobald es aktiviert ist, wird auf dem Rechner des Spielers ein WebSocket geöffnet, über das Spieldaten und -ereignisse übertragen werden. Programme von Drittanbietern können diese Daten für eine Vielzahl von Anwendungen nutzen, beispielsweise für benutzerdefinierte HUDs von Sendern.

Übersicht

Die API für Statistiken sendet während eines laufenden Spiels JSON-Nachrichten über ein lokales Socket. Nachrichten werden sowohl in einem konfigurierbaren Zeitabstand als auch bei bestimmten Match-Ereignissen gesendet. Ereignisdaten werden immer im selben Tick gesendet, in dem das Ereignis eintritt, unabhängig von der PacketSendRate des Benutzers.
Hinweis: Alle Konfigurationen müssen vor dem Start des Clients vorgenommen werden – Änderungen an der ini-Datei während des Betriebs erfordern einen Neustart.
Sichtbarkeit des Feldes:
  • Markierte Felder BEDINGUNGSABHÄNGIG nur angezeigt, wenn relevant.
  • Markierte Felder ZUSCHAUER nur angezeigt, wenn der Client als Zuschauer dabei ist oder zum Team des Spielers gehört.

Konfigurierung

Vor dem Start des Clients die Datei <Install Dir>\TAGame\Config\DefaultStatsAPI.ini bearbeiten.
EinstellungTypStandardBeschreibung
PacketSendRatefloat0 (deaktiviert)Anzahl der UpdateState-Pakete, die pro Sekunde gesendet werden. Zum Aktivieren des WebSockets muss der Wert größer als 0 sein. und darf 120 nicht überschreiten.
Portint49123Lokaler Port, auf dem das Socket läuft.

Nachrichtenformat

Jede Nachricht ist wie folgt aufgebaut:
{
  "Event": "EventName",
  "Data":  { /* event-specific payload */ }
}

Tick

Sendung X-mal pro Sekunde, basierend auf der Einstellung „PacketSendRate“ des Spielers.

Beispiel

{
  "Event": "UpdateState",
  "Data": {
    "MatchGuid": "A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6",
    "Players": [
      {
        "Name": "PlayerA",
        "PrimaryId": "Steam|123|0",
        "Shortcut": 1,
        "TeamNum": 0,
        "Score": 125,
        "Goals": 1,
        "Shots": 2,
        "Assists": 0,
        "Saves": 1,
        "Touches": 14,
        "CarTouches": 3,
        "Demos": 0,
        "bHasCar": true,
        "Speed": 1200,
        "Boost": 45,
        "bBoosting": true,
        "bOnGround": true,
        "bOnWall": false,
        "bPowersliding": false,
        "bDemolished": true,
        "Attacker": {
          "Name": "PlayerB",
          "Shortcut": 2,
          "TeamNum": 1
        },
        "bSupersonic": true
      }
    ],
    "Game": {
      "Teams": [
        {
          "Name": "Blue",
          "TeamNum": 0,
          "Score": 1,
          "ColorPrimary": "0000FF",
          "ColorSecondary": "0000AA"
        }
      ],
      "TimeSeconds": 180,
      "bOvertime": false,
      "Frame": 120,
      "Elapsed": 50.2,
      "Ball": {
        "Speed": 850.5,
        "TeamNum": 0
      },
      "bReplay": false,
      "bHasWinner": true,
      "Winner": "Blue",
      "Arena": "Stadium_P",
      "bHasTarget": true,
      "Target": {
        "Name": "PlayerA",
        "Shortcut": 1,
        "TeamNum": 0
      }
    }
  }
}
SpielfeldTypBeschreibung
PlayersarrayEin Eintrag pro Spieler im Match.
NamestringAnzeigename.
PrimaryIdstringPlattform-ID im Format „Plattform|Uid|Splitscreen“ (z. B. „Steam|123|0“, „Epic|456|0“).
ShortcutintSchnellzugriffsnummer für Zuschauer.
TeamNumintTeam-Index (0 = Blau, 1 = Orange).
ScoreintGesamtergebnis des Matches.
GoalsintIn diesem Match erzielte Tore.
ShotsintIn diesem Match erfolgte Torschüsse.
AssistsintIn diesem Match verdiente Vorlagen.
SavesintIn diesem Match erzielte Paraden.
TouchesintBallberührungen insgesamt:
CarTouchesintBerührungen durch die Karosserie (nicht durch den Ball).
DemosintZerstörungen verursacht.
bHasCarboolZUSCHAUERGilt, wenn der Spieler gerade ein Fahrzeug hat.
SpeedfloatZUSCHAUERFahrzeuggeschwindigkeit in Unreal Units pro Sekunde.
BoostintZUSCHAUERRaketenspur-Menge 0–100.
bBoostingboolZUSCHAUERGilt, wenn der Spieler gerade eine Raketenspur nutzt.
bOnGroundboolZUSCHAUERGilt, wenn mindestens drei Räder den Spielbereich berühren.
bOnWallboolZUSCHAUERGilt, wenn das Fahrzeug gerade an einer Wand fährt.
bPowerslidingboolZUSCHAUERGilt, wenn der Spieler gerade die Handbremse zieht.
bDemolishedboolZUSCHAUERWahr, wenn das Fahrzeug derzeit zerstört ist.
bSupersonicboolZUSCHAUERWahr, wenn das Fahrzeug mit Überschallgeschwindigkeit fährt.
AttackerobjectBEDINGUNGSABHÄNGIGDer Spieler, der diesen Spieler zerstört hat. Nur bei Zerstörung vorhanden.
NamestringName des Spielers, der diesen Spieler zerstört hat.
ShortcutintZuschauer-Tastenkürzel für den Angreifer.
TeamNumintTeam-Index des Angreifers.
GameobjectMatch-Metadaten.
TeamsarrayEin Eintrag pro Team, sortiert nach TeamNum.
NamestringTeamname.
TeamNumintTeam-Index.
ScoreintTeam-Tore.
ColorPrimarystringHex-Farbcode (ohne #) für die Hauptfarbe des Teams.
ColorSecondarystringHex-Farbcode für die Zweitfarbe des Teams.
TimeSecondsintVerbleibende Sekunden im Match.
bOvertimeboolWahr, wenn das Match in die Verlängerung geht.
BallobjectAktueller Status des Balls.
SpeedfloatAktuelle Ballgeschwindigkeit in Unreal Units pro Sekunde.
TeamNumintIndex des letzten Teams, das den Ball berührt hat. 255, wenn der Ball nicht berührt wurde.
bReplayboolWahr, wenn eine Torwiederholung oder eine Spielverlaufswiederholung aktiv ist.
bHasWinnerboolWahr, wenn ein Team gewonnen hat.
WinnerstringName des Gewinnerteams. Leere Zeile, wenn es noch keinen Gewinner gibt.
ArenastringAsset-Name der aktuellen Karte (z. B. „Stadium_P“).
bHasTargetboolWahr, wenn der Kunde gerade ein bestimmtes Fahrzeug ansieht.
TargetobjectBEDINGUNGSABHÄNGIGPlayer currently being viewed. Members are an empty string or 0 if the player does not have a spectator target.
NamestringName des Spielers, der gerade angezeigt wird.
ShortcutintZuschauer-Tastenkürzel für den angezeigten Spieler.
TeamNumintTeamindex des angezeigten Spielers.
FrameintBEDINGUNGSABHÄNGIGAktuelle Frame-Nummer, wenn eine Wiederholung aktiv ist.
ElapsedfloatBEDINGUNGSABHÄNGIGSekunden, die seit Spielbeginn vergangen sind, wenn eine Wiederholung aktiv ist.

Events

Sendung eines Frames nachdem der Ball getroffen wurde.

Beispiel

{
  "Event": "BallHit",
  "Data": {
    "MatchGuid": "A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6",
    "Players": [
      {
        "Name": "PlayerA",
        "Shortcut": 1,
        "TeamNum": 0
      }
    ],
    "Ball": {
      "PreHitSpeed": 0,
      "PostHitSpeed": 1450.2,
      "Location": {
        "X": -512,
        "Y": 100,
        "Z": 200
      }
    }
  }
}
SpielfeldTypBeschreibung
PlayersarraySpieler, die den Ball in diesem Frame treffen.
NamestringAnzeigename.
ShortcutintSchnellzugriff für Zuschauer.
TeamNumintTeam-Index (0 = Blau, 1 = Orange).
BallobjectStatus des Balls im Moment des Treffers.
PreHitSpeedfloatBallgeschwindigkeit vor dem Treffer (Unreal Units/Sekunde).
PostHitSpeedfloatBallgeschwindigkeit nach dem Treffer (Unreal Units/Sekunde).
LocationvectorWeltkoordinaten (X, Y, Z) des Balls beim Aufprall.
MatchGuidstringNur für Online- oder LAN-Matches festgelegt.

Sendung nach Änderung der Spielzeit.

Beispiel

{
  "Event": "ClockUpdatedSeconds",
  "Data": {
    "MatchGuid": "A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6",
    "TimeSeconds": 180,
    "bOvertime": false
  }
}
SpielfeldTypBeschreibung
TimeSecondsintVerbleibende Sekunden im Match.
bOvertimeboolWahr, wenn das Spiel in der Verlängerung ist.
MatchGuidstringNur für Online- oder LAN-Matches festgelegt.

Sendung zu Beginn jeder Runde, sobald der Countdown startet.

Beispiel

{
  "Event": "CountdownBegin",
  "Data": {
    "MatchGuid": "A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6"
  }
}
SpielfeldTypBeschreibung
MatchGuidstringNur für Online- oder LAN-Matches festgelegt.

Sendung nach einem Lattentreffer.

Beispiel

{
  "Event": "CrossbarHit",
  "Data": {
    "MatchGuid": "A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6",
    "BallLocation": {
      "X": 120,
      "Y": -2944,
      "Z": 320
    },
    "BallSpeed": 870.3,
    "ImpactForce": 127.5,
    "BallLastTouch": {
      "Player": {
        "Name": "PlayerA",
        "Shortcut": 1,
        "TeamNum": 0
      },
      "Speed": 120
    }
  }
}
SpielfeldTypBeschreibung
BallSpeedfloatBallgeschwindigkeit beim Aufprall.
ImpactForcefloatAufprallkraft des Balls relativ zur Normalen der Latte.
BallLastTouchobjectDie letzte Berührung des Balls, bevor er an die Latte prallte.
PlayerobjectDer Spieler, der den Ball zuletzt berührt hat.
NamestringAnzeigename.
ShortcutintSchnellzugriff für Zuschauer.
TeamNumintTeam-Index (0 = Blau, 1 = Orange).
SpeedfloatDie Ballgeschwindigkeit, die sich aus diesem Treffer ergibt.
BallLocationvectorDie Weltkoordinaten (X, Y, Z) des Balls zum Zeitpunkt des Aufpralls.
MatchGuidstringNur für Online- oder LAN-Matches festgelegt.

Sendung nach Ende der Torwiederholung.

Beispiel

{
  "Event": "GoalReplayEnd",
  "Data": {
    "MatchGuid": "A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6"
  }
}
SpielfeldTypBeschreibung
MatchGuidstringNur für Online- oder LAN-Matches festgelegt.

Sendung zu Beginn einer Torwiederholung.

Beispiel

{
  "Event": "GoalReplayStart",
  "Data": {
    "MatchGuid": "A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6"
  }
}
SpielfeldTypBeschreibung
MatchGuidstringNur für Online- oder LAN-Matches festgelegt.

Sendung beim Explodieren des Balls während einer Torwiederholung. Bei Überspringen der Wiederholung wird dieses Ereignis nicht ausgelöst.

Beispiel

{
  "Event": "GoalReplayWillEnd",
  "Data": {
    "MatchGuid": "A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6"
  }
}
SpielfeldTypBeschreibung
MatchGuidstringNur für Online- oder LAN-Matches festgelegt.

Sendung bei Torerfolg.

Beispiel

{
  "Event": "GoalScored",
  "Data": {
    "MatchGuid": "A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6",
    "GoalSpeed": 87.3,
    "GoalTime": 127.5,
    "ImpactLocation": {
      "X": 0,
      "Y": -2944,
      "Z": 320
    },
    "Scorer": {
      "Name": "PlayerA",
      "Shortcut": 1,
      "TeamNum": 0
    },
    "Assister": {
      "Name": "PlayerC",
      "Shortcut": 3,
      "TeamNum": 0
    },
    "BallLastTouch": {
      "Player": {
        "Name": "PlayerA",
        "Shortcut": 1,
        "TeamNum": 0
      },
      "Speed": 125
    }
  }
}
SpielfeldTypBeschreibung
GoalSpeedfloatBallgeschwindigkeit (Unreal Units/Sekunde) beim Überqueren der Torlinie.
GoalTimefloatDauer der vorherigen Runde in Sekunden.
ImpactLocationvectorDie Weltkoordinaten (X, Y, Z) des Balls zum Zeitpunkt des Tores.
ScorerobjectDer Spieler, der das Tor geschossen hat.
NamestringAnzeigenamen des Torjägers.
ShortcutintSchnellzugriff für Zuschauer.
TeamNumintTeamindex des Torjägers.
BallLastTouchobjectDie letzte Ballberührung vor dem Tor.
PlayerobjectDer Spieler, der den Ball zuletzt berührt hat.
NamestringName des Spielers, der den Ball zuletzt berührt hat.
ShortcutintSchnellzugriff für Zuschauer.
TeamNumintTeam-Index.
SpeedfloatDie Ballgeschwindigkeit, die sich aus dieser Berührung ergibt.
AssisterobjectBEDINGUNGSABHÄNGIGGleiche Form wie Scorer. Nur dann aufgeführt, wenn eine Vorlage verzeichnet wurde.
MatchGuidstringNur für Online- oder LAN-Matches festgelegt.

Sendung, sobald alle Teams erstellt und übernommen wurden.

Beispiel

{
  "Event": "MatchCreated",
  "Data": {
    "MatchGuid": "A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6"
  }
}
SpielfeldTypBeschreibung
MatchGuidstringNur für Online- oder LAN-Matches festgelegt.

Sendung bei Beginn des ersten Countdowns.

Beispiel

{
  "Event": "MatchInitialized",
  "Data": {
    "MatchGuid": "A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6"
  }
}
SpielfeldTypBeschreibung
MatchGuidstringNur für Online- oder LAN-Matches festgelegt.

Sendung beim Verlassen des Spiels.

Beispiel

{
  "Event": "MatchDestroyed",
  "Data": {
    "MatchGuid": "A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6"
  }
}
SpielfeldTypBeschreibung
MatchGuidstringNur für Online- oder LAN-Matches festgelegt.

Sendung nach Spielende und Feststellung des Siegers.

Beispiel

{
  "Event": "MatchEnded",
  "Data": {
    "MatchGuid": "A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6",
    "WinnerTeamNum": 0
  }
}
SpielfeldTypBeschreibung
MatchGuidstringNur für Online- oder LAN-Matches festgelegt.
WinnerTeamNumintTeamindex des Gewinnerteams.

Sendung bei Spielunterbrechung durch einen Match-Administrator.

Beispiel

{
  "Event": "MatchPaused",
  "Data": {
    "MatchGuid": "A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6"
  }
}
SpielfeldTypBeschreibung
MatchGuidstringNur für Online- oder LAN-Matches festgelegt.

Sendung beim Fortsetzen des Spiels durch einen Match-Administrator.

Beispiel

{
  "Event": "MatchUnpaused",
  "Data": {
    "MatchGuid": "A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6"
  }
}
SpielfeldTypBeschreibung
MatchGuidstringNur für Online- oder LAN-Matches festgelegt.

Sendung beim Erreichen des Podiums nach Spielende.

Beispiel

{
  "Event": "PodiumStart",
  "Data": {
    "MatchGuid": "A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6"
  }
}
SpielfeldTypBeschreibung
MatchGuidstringNur für Online- oder LAN-Matches festgelegt.

Sendung nach Initialisierung einer Wiederholung. Dies gilt nicht für Torwiederholungen, sondern nur für Wiederholungen über das Menü „Matchverlauf“.

Beispiel

{
  "Event": "ReplayCreated",
  "Data": {
    "MatchGuid": "A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6"
  }
}
SpielfeldTypBeschreibung
MatchGuidstringNur für Online- oder LAN-Matches festgelegt.

Sendung beim Eintritt des Spiels in den aktiven Zustand (nach Ablauf des Countdowns).

Beispiel

{
  "Event": "RoundStarted",
  "Data": {
    "MatchGuid": "A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6"
  }
}
SpielfeldTypBeschreibung
MatchGuidstringNur für Online- oder LAN-Matches festgelegt.

Sendung bei Erhalt einer Statistik.

Beispiel

{
  "Event": "StatfeedEvent",
  "Data": {
    "MatchGuid": "A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6",
    "EventName": "Demolish",
    "Type": "Demolition",
    "MainTarget": {
      "Name": "PlayerA",
      "Shortcut": 1,
      "TeamNum": 0
    },
    "SecondaryTarget": {
      "Name": "PlayerB",
      "Shortcut": 2,
      "TeamNum": 1
    }
  }
}
SpielfeldTypBeschreibung
EventNamestringAsset-Name des StatEvent (z. B. „Demolish“, „Save“).
TypestringLokalisiertes Display-Label für die Statistik (z. B. „Demolition“).
MainTargetobjectSpieler, der diese Statistik erzielt hat.
NamestringAnzeigename.
ShortcutintSchnellzugriff für Zuschauer.
TeamNumintTeam-Index (0 = Blau, 1 = Orange).
MatchGuidstringNur für Online- oder LAN-Matches festgelegt.
SecondaryTargetobjectBEDINGUNGSABHÄNGIGSpieler, der an der Statistik beteiligt ist (z. B. der zerstörte Spieler). Gleiche Form wie MainTarget.