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ètre | Type | Par défaut | Description |
|---|---|---|---|
| PacketSendRate | float | 0 (désactivé) | Nombre de paquets UpdateState diffusés par seconde. Doit être > 0 pour activer le websocket. Limité à 120. |
| Port | int | 49123 | Port 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
}
}
}
}| Champ | Type | Description |
|---|---|---|
| Players | array | Une entrée par joueur dans la partie. |
| Name | string | Afficher le nom. |
| PrimaryId | string | Identificateur de la plateforme au format Platform|Uid|Splitscreen (par ex. "Steam|123|0", "Epic|456|0"). |
| Shortcut | int | Numéro de raccourci du spectateur. |
| TeamNum | int | Index d'équipe (0 = bleu, 1 = orange). |
| Score | int | Score total du match. |
| Goals | int | Buts marqués pendant ce match. |
| Shots | int | Tirs tentés lors de ce match. |
| Assists | int | Passes décisives gagnées lors de ce match. |
| Saves | int | Arrêts effectués pendant ce match. |
| Touches | int | Total des touchers de ballon. |
| CarTouches | int | Touchers par le châssis de la voiture (et pas le ballon). |
| Demos | int | Démolitions infligées. |
| bHasCar | bool | SPECTATEURVrai si le joueur dispose actuellement d'un véhicule. |
| Speed | float | SPECTATEURVitesse du véhicule en unités Unreal/seconde. |
| Boost | int | SPECTATEURMontant de turbo 0–100. |
| bBoosting | bool | SPECTATEURVrai si le joueur utilise actuellement un turbo. |
| bOnGround | bool | SPECTATEURVrai si au moins trois roues touchent le monde. |
| bOnWall | bool | SPECTATEURVrai si le véhicule est sur un mur. |
| bPowersliding | bool | SPECTATEURVrai si le joueur maintient le frein à main. |
| bDemolished | bool | SPECTATEURVrai si le véhicule est actuellement détruit. |
| bSupersonic | bool | SPECTATEURVrai si le véhicule est à vitesse supersonique. |
| Attacker | object | CONDITIONNELLe joueur qui a détruit ce joueur. Présent uniquement lorsque détruit. |
| Name | string | Nom du joueur qui a détruit ce joueur. |
| Shortcut | int | Raccourci spectateur de l'attaquant. |
| TeamNum | int | Index d'équipe de l'attaquant. |
| Game | object | Métadonnées du match. |
| Teams | array | Une entrée par équipe, organisé par TeamNum. |
| Name | string | Nom de l'équipe. |
| TeamNum | int | Index d'équipe. |
| Score | int | Nombre de buts de l'équipe. |
| ColorPrimary | string | Code couleur hexadécimal (sans #) pour la couleur principale de l'équipe. |
| ColorSecondary | string | Code de couleur hexagonale pour la couleur secondaire de l'équipe. |
| TimeSeconds | int | Secondes, restantes dans ce match. |
| bOvertime | bool | Vrai si le match est en prolongation. |
| Ball | object | État actuel de la balle. |
| Speed | float | Vitesse actuelle de la balle en Unreal Units/secondes. |
| TeamNum | int | Index de la dernière équipe à toucher le ballon. 255 si la balle n'a pas été touchée. |
| bReplay | bool | Vrai si un replay de but ou d'historique est actif. |
| bHasWinner | bool | Vrai si une équipe a gagné. |
| Winner | string | Nom de l'équipe gagnante. Chaîne vide si aucun gagnant pour le moment. |
| Arena | string | Nom de l'actif de la carte actuelle (par exemple : « Stadium_P »). |
| bHasTarget | bool | Vrai si le client regarde actuellement un véhicule spécifique. |
| Target | object | CONDITIONNELPlayer currently being viewed. Members are an empty string or 0 if the player does not have a spectator target. |
| Name | string | Nom du joueur consulté. |
| Shortcut | int | Raccourci spectateur du joueur observé. |
| TeamNum | int | Index de l'équipe du joueur observé. |
| Frame | int | CONDITIONNELNuméro de frame actuel si un replay est actif. |
| Elapsed | float | CONDITIONNELSecondes é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
}
}
}
}| Champ | Type | Description |
|---|---|---|
| Players | array | Joueurs ayant frappé la balle dans cette frame. |
| Name | string | Afficher le nom. |
| Shortcut | int | Raccourci de spectateur. |
| TeamNum | int | Index d'équipe (0 = bleu, 1 = orange). |
| Ball | object | État de la balle au moment du contact. |
| PreHitSpeed | float | Vitesse de la balle avant le contact (Unreal Units/secondes). |
| PostHitSpeed | float | Vitesse de la balle après le contact (Unreal Units/secondes). |
| Location | vector | Position mondiale (X, Y, Z) de la balle à l'impact. |
| MatchGuid | string | Uniquement 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
}
}| Champ | Type | Description |
|---|---|---|
| TimeSeconds | int | Secondes, restantes dans ce match. |
| bOvertime | bool | Vrai si le match est en prolongation. |
| MatchGuid | string | Uniquement 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"
}
}| Champ | Type | Description |
|---|---|---|
| MatchGuid | string | Uniquement 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
}
}
}| Champ | Type | Description |
|---|---|---|
| BallSpeed | float | Vitesse de la balle à l'impact. |
| ImpactForce | float | Force d'impact de la balle par rapport à la normale de la barre transversale. |
| BallLastTouch | object | Dernier contact du ballon avant que la barre transversale ne soit touchée. |
| Player | object | Joueur ayant fait la dernière touche. |
| Name | string | Afficher le nom. |
| Shortcut | int | Raccourci de spectateur. |
| TeamNum | int | Index d'équipe (0 = bleu, 1 = orange). |
| Speed | float | Vitesse de la balle résultant de ce contact. |
| BallLocation | vector | Position mondiale (X, Y, Z) de la balle au moment de l'impact. |
| MatchGuid | string | Uniquement défini pour les matchs en ligne ou LAN. |
Envoyé lorsqu'un replay de but se termine.
Exemple
{
"Event": "GoalReplayEnd",
"Data": {
"MatchGuid": "A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6"
}
}| Champ | Type | Description |
|---|---|---|
| MatchGuid | string | Uniquement défini pour les matchs en ligne ou LAN. |
Envoyé lorsqu'un replay de but commence.
Exemple
{
"Event": "GoalReplayStart",
"Data": {
"MatchGuid": "A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6"
}
}| Champ | Type | Description |
|---|---|---|
| MatchGuid | string | Uniquement 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"
}
}| Champ | Type | Description |
|---|---|---|
| MatchGuid | string | Uniquement 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
}
}
}| Champ | Type | Description |
|---|---|---|
| GoalSpeed | float | Vitesse du ballon (Unreal Units/secondes) lorsqu'il franchit la ligne de but. |
| GoalTime | float | Durée du round précédent en secondes. |
| ImpactLocation | vector | Position mondiale (X, Y, Z) de la balle au moment du but. |
| Scorer | object | Le joueur qui a marqué le but. |
| Name | string | Affiche le nom du buteur. |
| Shortcut | int | Raccourci de spectateur. |
| TeamNum | int | Index de l'équipe du joueur ayant marqué. |
| BallLastTouch | object | Dernier contact du ballon avant le but. |
| Player | object | Joueur ayant fait la dernière touche. |
| Name | string | Nom du joueur qui a touché le ballon en dernier. |
| Shortcut | int | Raccourci de spectateur. |
| TeamNum | int | Index d'équipe. |
| Speed | float | Vitesse de la balle résultant de ce contact. |
| Assister | object | CONDITIONNELMême forme que Scorer. Présent uniquement lorsqu'une passe décisive a été enregistrée. |
| MatchGuid | string | Uniquement 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"
}
}| Champ | Type | Description |
|---|---|---|
| MatchGuid | string | Uniquement défini pour les matchs en ligne ou LAN. |
Envoyé lorsque le premier compte à rebours commence.
Exemple
{
"Event": "MatchInitialized",
"Data": {
"MatchGuid": "A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6"
}
}| Champ | Type | Description |
|---|---|---|
| MatchGuid | string | Uniquement défini pour les matchs en ligne ou LAN. |
Envoyé lorsque vous quittez la partie.
Exemple
{
"Event": "MatchDestroyed",
"Data": {
"MatchGuid": "A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6"
}
}| Champ | Type | Description |
|---|---|---|
| MatchGuid | string | Uniquement 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
}
}| Champ | Type | Description |
|---|---|---|
| MatchGuid | string | Uniquement défini pour les matchs en ligne ou LAN. |
| WinnerTeamNum | int | Index de l'équipe gagnante. |
Envoyé lorsque la partie est mise sur pause par un administrateur de match.
Exemple
{
"Event": "MatchPaused",
"Data": {
"MatchGuid": "A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6"
}
}| Champ | Type | Description |
|---|---|---|
| MatchGuid | string | Uniquement 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"
}
}| Champ | Type | Description |
|---|---|---|
| MatchGuid | string | Uniquement 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"
}
}| Champ | Type | Description |
|---|---|---|
| MatchGuid | string | Uniquement 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"
}
}| Champ | Type | Description |
|---|---|---|
| MatchGuid | string | Uniquement 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"
}
}| Champ | Type | Description |
|---|---|---|
| MatchGuid | string | Uniquement 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
}
}
}| Champ | Type | Description |
|---|---|---|
| EventName | string | Nom de l'actif du StatEvent (par exemple : « Demolish », « Save »). |
| Type | string | Étiquette d'affichage localisée pour la statistique (par exemple : « Demolition »). |
| MainTarget | object | Joueur qui a obtenu la statistique. |
| Name | string | Afficher le nom. |
| Shortcut | int | Raccourci de spectateur. |
| TeamNum | int | Index d'équipe (0 = bleu, 1 = orange). |
| MatchGuid | string | Uniquement défini pour les matchs en ligne ou LAN. |
| SecondaryTarget | object | CONDITIONNELJoueur impliqué dans la statistique (par exemple, le joueur détruit). Même forme que MainTarget. |