API de statistiques de Rocket League

Ce document présente les capacités de l'API de données de jeu de Rocket League. Tout d'abord, les joueurs doivent demander au jeu d'activer cette fonctionnalité en modifiant leur DefaultStatsAPI.ini, comme expliqué ci-dessous. Une fois activée, cette fonctionnalité ouvrira un websocket sur la machine du joueur. Celle-ci émet des données et des événements de gameplay. Les programmes tiers peuvent récupérer ces données pour alimenter des applications variées, telles que des ATH de diffuseur personnalisées.

Vue d'ensemble

L'API de statistiques diffuse des messages JSON sur un socket local pendant un match. Les messages sont envoyés à la fois à un taux périodique configurable et lorsque des événements de match spécifiques se produisent. Les données d'événement sont toujours émises au moment même où l'événement se produit, indépendamment du PacketSendRate de l'utilisateur.
Remarque : Toute configuration doit être effectuée avant que le client ne démarre. Les modifications du fichier ini alors que le client s'exécute nécessitent un redémarrage.
Visibilité du champ :
  • Champs marqués CONDITIONNEL ne sont présents que lorsqu'ils sont pertinents.
  • Champs marqués SPECTATEUR sont seulement présents si le client est un spectateur ou s'il fait partie de l'équipe du joueur.

Configuration

Modifier <Install Dir>\TAGame\Config\DefaultStatsAPI.ini avant de lancer le client.
ParamètreTypePar défautDescription
PacketSendRatefloat0 (désactivé)Nombre de paquets UpdateState diffusés par seconde. Doit être > 0 pour activer le websocket. Limité à 120.
Portint49123Port local surveillé par le socket.

Format de message

Chaque message suit cette structure d'enveloppe :
{
  "Event": "EventName",
  "Data":  { /* event-specific payload */ }
}

Moment

Envoyé x fois par seconde en fonction de la préférence PacketSendRate du joueur.

Exemple

{
  "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
      }
    }
  }
}
ChampTypeDescription
PlayersarrayUne entrée par joueur dans la partie.
NamestringAfficher le nom.
PrimaryIdstringIdentificateur de la plateforme au format Platform|Uid|Splitscreen (par ex. "Steam|123|0", "Epic|456|0").
ShortcutintNuméro de raccourci du spectateur.
TeamNumintIndex d'équipe (0 = bleu, 1 = orange).
ScoreintScore total du match.
GoalsintButs marqués pendant ce match.
ShotsintTirs tentés lors de ce match.
AssistsintPasses décisives gagnées lors de ce match.
SavesintArrêts effectués pendant ce match.
TouchesintTotal des touchers de ballon.
CarTouchesintTouchers par le châssis de la voiture (et pas le ballon).
DemosintDémolitions infligées.
bHasCarboolSPECTATEURVrai si le joueur dispose actuellement d'un véhicule.
SpeedfloatSPECTATEURVitesse du véhicule en unités Unreal/seconde.
BoostintSPECTATEURMontant de turbo 0–100.
bBoostingboolSPECTATEURVrai si le joueur utilise actuellement un turbo.
bOnGroundboolSPECTATEURVrai si au moins trois roues touchent le monde.
bOnWallboolSPECTATEURVrai si le véhicule est sur un mur.
bPowerslidingboolSPECTATEURVrai si le joueur maintient le frein à main.
bDemolishedboolSPECTATEURVrai si le véhicule est actuellement détruit.
bSupersonicboolSPECTATEURVrai si le véhicule est à vitesse supersonique.
AttackerobjectCONDITIONNELLe joueur qui a détruit ce joueur. Présent uniquement lorsque détruit.
NamestringNom du joueur qui a détruit ce joueur.
ShortcutintRaccourci spectateur de l'attaquant.
TeamNumintIndex d'équipe de l'attaquant.
GameobjectMétadonnées du match.
TeamsarrayUne entrée par équipe, organisé par TeamNum.
NamestringNom de l'équipe.
TeamNumintIndex d'équipe.
ScoreintNombre de buts de l'équipe.
ColorPrimarystringCode couleur hexadécimal (sans #) pour la couleur principale de l'équipe.
ColorSecondarystringCode de couleur hexagonale pour la couleur secondaire de l'équipe.
TimeSecondsintSecondes, restantes dans ce match.
bOvertimeboolVrai si le match est en prolongation.
BallobjectÉtat actuel de la balle.
SpeedfloatVitesse actuelle de la balle en Unreal Units/secondes.
TeamNumintIndex de la dernière équipe à toucher le ballon. 255 si la balle n'a pas été touchée.
bReplayboolVrai si un replay de but ou d'historique est actif.
bHasWinnerboolVrai si une équipe a gagné.
WinnerstringNom de l'équipe gagnante. Chaîne vide si aucun gagnant pour le moment.
ArenastringNom de l'actif de la carte actuelle (par exemple : « Stadium_P »).
bHasTargetboolVrai si le client regarde actuellement un véhicule spécifique.
TargetobjectCONDITIONNELPlayer currently being viewed. Members are an empty string or 0 if the player does not have a spectator target.
NamestringNom du joueur consulté.
ShortcutintRaccourci spectateur du joueur observé.
TeamNumintIndex de l'équipe du joueur observé.
FrameintCONDITIONNELNuméro de frame actuel si un replay est actif.
ElapsedfloatCONDITIONNELSecondes écoulées depuis le début du match si un replay est active.

Événements

Un cadre envoyé après que le ballon a été frappé.

Exemple

{
  "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
      }
    }
  }
}
ChampTypeDescription
PlayersarrayJoueurs ayant frappé la balle dans cette frame.
NamestringAfficher le nom.
ShortcutintRaccourci de spectateur.
TeamNumintIndex d'équipe (0 = bleu, 1 = orange).
BallobjectÉtat de la balle au moment du contact.
PreHitSpeedfloatVitesse de la balle avant le contact (Unreal Units/secondes).
PostHitSpeedfloatVitesse de la balle après le contact (Unreal Units/secondes).
LocationvectorPosition mondiale (X, Y, Z) de la balle à l'impact.
MatchGuidstringUniquement défini pour les matchs en ligne ou LAN.

Envoyé lorsque l'horloge en jeu a changé.

Exemple

{
  "Event": "ClockUpdatedSeconds",
  "Data": {
    "MatchGuid": "A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6",
    "TimeSeconds": 180,
    "bOvertime": false
  }
}
ChampTypeDescription
TimeSecondsintSecondes, restantes dans ce match.
bOvertimeboolVrai si le match est en prolongation.
MatchGuidstringUniquement défini pour les matchs en ligne ou LAN.

Envoyé au début de chaque manche lorsque le compte à rebours commence.

Exemple

{
  "Event": "CountdownBegin",
  "Data": {
    "MatchGuid": "A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6"
  }
}
ChampTypeDescription
MatchGuidstringUniquement défini pour les matchs en ligne ou LAN.

Envoyé lorsque le ballon touche une barre transversale.

Exemple

{
  "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
    }
  }
}
ChampTypeDescription
BallSpeedfloatVitesse de la balle à l'impact.
ImpactForcefloatForce d'impact de la balle par rapport à la normale de la barre transversale.
BallLastTouchobjectDernier contact du ballon avant que la barre transversale ne soit touchée.
PlayerobjectJoueur ayant fait la dernière touche.
NamestringAfficher le nom.
ShortcutintRaccourci de spectateur.
TeamNumintIndex d'équipe (0 = bleu, 1 = orange).
SpeedfloatVitesse de la balle résultant de ce contact.
BallLocationvectorPosition mondiale (X, Y, Z) de la balle au moment de l'impact.
MatchGuidstringUniquement défini pour les matchs en ligne ou LAN.

Envoyé lorsqu'un replay de but se termine.

Exemple

{
  "Event": "GoalReplayEnd",
  "Data": {
    "MatchGuid": "A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6"
  }
}
ChampTypeDescription
MatchGuidstringUniquement défini pour les matchs en ligne ou LAN.

Envoyé lorsqu'un replay de but commence.

Exemple

{
  "Event": "GoalReplayStart",
  "Data": {
    "MatchGuid": "A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6"
  }
}
ChampTypeDescription
MatchGuidstringUniquement défini pour les matchs en ligne ou LAN.

Envoyé lorsque le ballon explose pendant un replay de but. Si le replay est ignoré, cet événement ne sera pas activé.

Exemple

{
  "Event": "GoalReplayWillEnd",
  "Data": {
    "MatchGuid": "A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6"
  }
}
ChampTypeDescription
MatchGuidstringUniquement défini pour les matchs en ligne ou LAN.

Envoyé lorsqu'un but est marqué.

Exemple

{
  "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
    }
  }
}
ChampTypeDescription
GoalSpeedfloatVitesse du ballon (Unreal Units/secondes) lorsqu'il franchit la ligne de but.
GoalTimefloatDurée du round précédent en secondes.
ImpactLocationvectorPosition mondiale (X, Y, Z) de la balle au moment du but.
ScorerobjectLe joueur qui a marqué le but.
NamestringAffiche le nom du buteur.
ShortcutintRaccourci de spectateur.
TeamNumintIndex de l'équipe du joueur ayant marqué.
BallLastTouchobjectDernier contact du ballon avant le but.
PlayerobjectJoueur ayant fait la dernière touche.
NamestringNom du joueur qui a touché le ballon en dernier.
ShortcutintRaccourci de spectateur.
TeamNumintIndex d'équipe.
SpeedfloatVitesse de la balle résultant de ce contact.
AssisterobjectCONDITIONNELMême forme que Scorer. Présent uniquement lorsqu'une passe décisive a été enregistrée.
MatchGuidstringUniquement défini pour les matchs en ligne ou LAN.

Envoyé lorsque toutes les équipes sont créées et répliquées.

Exemple

{
  "Event": "MatchCreated",
  "Data": {
    "MatchGuid": "A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6"
  }
}
ChampTypeDescription
MatchGuidstringUniquement défini pour les matchs en ligne ou LAN.

Envoyé lorsque le premier compte à rebours commence.

Exemple

{
  "Event": "MatchInitialized",
  "Data": {
    "MatchGuid": "A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6"
  }
}
ChampTypeDescription
MatchGuidstringUniquement défini pour les matchs en ligne ou LAN.

Envoyé lorsque vous quittez la partie.

Exemple

{
  "Event": "MatchDestroyed",
  "Data": {
    "MatchGuid": "A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6"
  }
}
ChampTypeDescription
MatchGuidstringUniquement défini pour les matchs en ligne ou LAN.

Envoyé lorsque le match se termine et un vainqueur est choisi.

Exemple

{
  "Event": "MatchEnded",
  "Data": {
    "MatchGuid": "A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6",
    "WinnerTeamNum": 0
  }
}
ChampTypeDescription
MatchGuidstringUniquement défini pour les matchs en ligne ou LAN.
WinnerTeamNumintIndex de l'équipe gagnante.

Envoyé lorsque la partie est mise sur pause par un administrateur de match.

Exemple

{
  "Event": "MatchPaused",
  "Data": {
    "MatchGuid": "A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6"
  }
}
ChampTypeDescription
MatchGuidstringUniquement défini pour les matchs en ligne ou LAN.

Envoyé lorsqu'un administrateur de match invite à reprendre la partie.

Exemple

{
  "Event": "MatchUnpaused",
  "Data": {
    "MatchGuid": "A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6"
  }
}
ChampTypeDescription
MatchGuidstringUniquement défini pour les matchs en ligne ou LAN.

Envoyé lorsque la partie passe à l'état podium après la fin du match.

Exemple

{
  "Event": "PodiumStart",
  "Data": {
    "MatchGuid": "A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6"
  }
}
ChampTypeDescription
MatchGuidstringUniquement défini pour les matchs en ligne ou LAN.

Envoyé lorsqu'un replay est initialisé. Ne se rapporte pas aux replays de but, seulement ceux que vous chargez via le menu Historique des parties.

Exemple

{
  "Event": "ReplayCreated",
  "Data": {
    "MatchGuid": "A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6"
  }
}
ChampTypeDescription
MatchGuidstringUniquement défini pour les matchs en ligne ou LAN.

Envoyé lorsque la partie passe en état actif (après la fin du compte à rebours).

Exemple

{
  "Event": "RoundStarted",
  "Data": {
    "MatchGuid": "A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6"
  }
}
ChampTypeDescription
MatchGuidstringUniquement défini pour les matchs en ligne ou LAN.

Envoyé lorsque quelqu'un gagne une statistique.

Exemple

{
  "Event": "StatfeedEvent",
  "Data": {
    "MatchGuid": "A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6",
    "EventName": "Demolish",
    "Type": "Demolition",
    "MainTarget": {
      "Name": "PlayerA",
      "Shortcut": 1,
      "TeamNum": 0
    },
    "SecondaryTarget": {
      "Name": "PlayerB",
      "Shortcut": 2,
      "TeamNum": 1
    }
  }
}
ChampTypeDescription
EventNamestringNom de l'actif du StatEvent (par exemple : « Demolish », « Save »).
TypestringÉtiquette d'affichage localisée pour la statistique (par exemple : « Demolition »).
MainTargetobjectJoueur qui a obtenu la statistique.
NamestringAfficher le nom.
ShortcutintRaccourci de spectateur.
TeamNumintIndex d'équipe (0 = bleu, 1 = orange).
MatchGuidstringUniquement défini pour les matchs en ligne ou LAN.
SecondaryTargetobjectCONDITIONNELJoueur impliqué dans la statistique (par exemple, le joueur détruit). Même forme que MainTarget.