Stats API di Rocket League

Questo documento descrive le funzionalità della Game Data API di Rocket League. Innanzitutto, è necessario che i giocatori abilitino questa funzione all'interno del gioco modificando il file DefaultStatsAPI.ini, come spiegato di seguito. Una volta attiva, questa funzionalità aprirà un web socket sul dispositivo del giocatore per trasmettere dati ed eventi di gioco. Programmi di terze parti possono acquisire questi dati per gestire una varietà applicazioni, incluse interfacce di trasmissione personalizzate.

Panoramica del gioco

La Stats API trasmette messaggi JSON tramite un socket locale mentre una partita è in corso. I messaggi vengono inviati sia a intervalli regolari configurabili, sia al verificarsi di specifici eventi nella partita. I dati di un evento vengono sempre emessi nello stesso tick in cui si verifica, indipendentemente dal PacketSendRate dell'utente.
Nota: Tutte le impostazioni devono essere configurate prima dell'avvio del client. Eventuali modifiche al file .ini mentre il client è in esecuzione diventeranno effettive solo dopo il riavvio.
Visibilità del campo:
  • Campi contrassegnati CONDIZIONALE presenti solo se rilevanti.
  • Campi contrassegnati SPETTATORE presenti solo se il client è uno spettatore o fa parte della squadra del giocatore.

Configurazione

Modifica <Install Dir>\TAGame\Config\DefaultStatsAPI.ini prima di avviare il client.
ImpostazioneTipoDefaultDescrizione
PacketSendRatefloat0 (disabilitato)Numero di pacchetti UpdateState trasmessi al secondo. Impostare > 0 per abilitare il websocket. Limite massimo: 120.
Portint49123Porta locale di ascolto del socket.

Formato del messaggio

Ogni messaggio segue la struttura seguente:
{
  "Event": "EventName",
  "Data":  { /* event-specific payload */ }
}

Tick

Inviato X volte al secondo, in base all'impostazione PacketSendRate del giocatore.

Esempio

{
  "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
      }
    }
  }
}
CampoTipoDescrizione
PlayersarrayUna sola partecipazione per giocatore nella partita.
NamestringNome visualizzato.
PrimaryIdstringIdentificativo della piattaforma nel formato Piattaforma|Uid|Schermo condiviso (ad esempio "Steam|123|0", "Epic|456|0").
ShortcutintNumero scorciatoia spettatore.
TeamNumintIndice squadra (0 = Blu, 1 = Arancione).
ScoreintPunteggio totale della partita.
GoalsintGol segnati in questa partita.
ShotsintTiri effettuati in questa partita.
AssistsintAssist ottenuti in questa partita.
SavesintParate effettuate in questa partita.
TouchesintTocchi della palla totali.
CarTouchesintTocchi effettuati con la carrozzeria (palla esclusa).
DemosintDemolizioni inflitte.
bHasCarboolSPETTATOREVero se il giocatore possiede attualmente un veicolo.
SpeedfloatSPETTATOREVelocità del veicolo in Unreal Units/secondo.
BoostintSPETTATOREQuantità di turbo 0–100.
bBoostingboolSPETTATOREVero se il giocatore sta attualmente utilizzando il turbo.
bOnGroundboolSPETTATOREVero se il veicolo ha almeno 3 ruote a contatto con il mondo di gioco.
bOnWallboolSPETTATOREVero se il veicolo si trova su una parete.
bPowerslidingboolSPETTATOREVero se il giocatore sta usando il freno a mano.
bDemolishedboolSPETTATOREVero se il veicolo è attualmente distrutto.
bSupersonicboolSPETTATOREVero se il veicolo è a velocità supersonica.
AttackerobjectCONDIZIONALEIl giocatore che ha demolito questo giocatore. Presente solo quando demolito.
NamestringNome del giocatore che ha demolito questo giocatore.
ShortcutintScorciatoia spettatore dell'attaccante.
TeamNumintIndice squadra dell'attaccante.
GameobjectMetadati della partita.
TeamsarrayUna voce per ogni squadra, in ordine di TeamNum.
NamestringNome della squadra.
TeamNumintIndice squadra.
ScoreintConteggio dei gol della squadra.
ColorPrimarystringCodice colore esadecimale (n. #) per il colore principale della squadra.
ColorSecondarystringCodice colore esadecimale per il colore secondario della squadra.
TimeSecondsintSecondi rimanenti alla fine della partita.
bOvertimeboolVero se l'incontro è ai tempi supplementari.
BallobjectStato attuale della palla.
SpeedfloatVelocità della palla attuale in Unreal Units/secondo.
TeamNumintIndice dell'ultima squadra ad aver toccato la palla. 255 se la palla non è stata toccata.
bReplayboolVero se è attivo un replay del gol o della cronologia.
bHasWinnerboolVero se una squadra ha vinto.
WinnerstringNome della squadra vincitrice. Campo vuoto se non c'è ancora un vincitore.
ArenastringNome dell'asset della mappa attuale (ad esempio "Stadium_P").
bHasTargetboolVero se il client sta attualmente visualizzando un veicolo specifico.
TargetobjectCONDIZIONALEPlayer currently being viewed. Members are an empty string or 0 if the player does not have a spectator target.
NamestringNome del giocatore visualizzato.
ShortcutintScorciatoia spettatore del giocatore visualizzato.
TeamNumintIndice squadra del giocatore visualizzato.
FrameintCONDIZIONALENumero dei frame attuali se il replay è attivo.
ElapsedfloatCONDIZIONALESecondi trascorsi dall'inizio della partita se il replay è attivo.

Eventi

Inviato un frame dopo aver colpito la palla.

Esempio

{
  "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
      }
    }
  }
}
CampoTipoDescrizione
PlayersarrayGiocatori che colpiscono la palla in quel frame.
NamestringNome visualizzato.
ShortcutintScorciatoia spettatore.
TeamNumintIndice squadra (0 = Blu, 1 = Arancione).
BallobjectStato della palla al momento del colpo.
PreHitSpeedfloatVelocità della palla prima del colpo (Unreal Units/secondo).
PostHitSpeedfloatVelocità della palla dopo il colpo (Unreal Units/secondo).
LocationvectorPosizione nel mondo (X, Y, Z) della palla all'impatto.
MatchGuidstringImpostato solo per le partite online o LAN.

Inviato quando l'orologio di gioco viene modificato.

Esempio

{
  "Event": "ClockUpdatedSeconds",
  "Data": {
    "MatchGuid": "A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6",
    "TimeSeconds": 180,
    "bOvertime": false
  }
}
CampoTipoDescrizione
TimeSecondsintSecondi rimanenti alla fine della partita.
bOvertimeboolVero se la partita è ai tempi supplementari.
MatchGuidstringImpostato solo per le partite online o LAN.

Inviato all'inizio di ogni round, all'avvio del conto alla rovescia.

Esempio

{
  "Event": "CountdownBegin",
  "Data": {
    "MatchGuid": "A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6"
  }
}
CampoTipoDescrizione
MatchGuidstringImpostato solo per le partite online o LAN.

Inviato quando la palla colpisce una traversa.

Esempio

{
  "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
    }
  }
}
CampoTipoDescrizione
BallSpeedfloatVelocità della palla all'impatto.
ImpactForcefloatForza d'impatto della palla rispetto alla traversa normale.
BallLastTouchobjectL'ultimo tocco della palla prima che colpisse la traversa.
PlayerobjectIl giocatore che ha effettuato l'ultimo tocco.
NamestringNome visualizzato.
ShortcutintScorciatoia spettatore.
TeamNumintIndice squadra (0 = Blu, 1 = Arancione).
SpeedfloatVelocità della palla risultante da questo colpo.
BallLocationvectorPosizione nel mondo (X, Y, Z) della palla al momento dell'impatto.
MatchGuidstringImpostato solo per le partite online o LAN.

Inviato al termine del replay del gol.

Esempio

{
  "Event": "GoalReplayEnd",
  "Data": {
    "MatchGuid": "A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6"
  }
}
CampoTipoDescrizione
MatchGuidstringImpostato solo per le partite online o LAN.

Inviato all'inizio del replay del gol.

Esempio

{
  "Event": "GoalReplayStart",
  "Data": {
    "MatchGuid": "A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6"
  }
}
CampoTipoDescrizione
MatchGuidstringImpostato solo per le partite online o LAN.

Inviato quando la palla esplode durante il replay del gol. Se il replay viene saltato, questo evento non si attiverà.

Esempio

{
  "Event": "GoalReplayWillEnd",
  "Data": {
    "MatchGuid": "A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6"
  }
}
CampoTipoDescrizione
MatchGuidstringImpostato solo per le partite online o LAN.

Inviato quando viene segnato un gol.

Esempio

{
  "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
    }
  }
}
CampoTipoDescrizione
GoalSpeedfloatVelocità della palla (Unreal Units/secondo) quando ha attraversato la linea di meta.
GoalTimefloatDurata del round precedente in secondi.
ImpactLocationvectorPosizione nel mondo (X, Y, Z) della palla al momento del gol.
ScorerobjectIl giocatore che ha segnato il gol.
NamestringMostra il nome del marcatore.
ShortcutintScorciatoia spettatore.
TeamNumintIndice squadra del marcatore.
BallLastTouchobjectL'ultimo tocco della palla prima del gol.
PlayerobjectIl giocatore che ha effettuato l'ultimo tocco.
NamestringNome del giocatore che ha toccato per ultimo la palla.
ShortcutintScorciatoia spettatore.
TeamNumintIndice squadra.
SpeedfloatVelocità della palla risultante da questo tocco.
AssisterobjectCONDIZIONALEStessa forma di Scorer. Presente solo quando è stato registrato un assist.
MatchGuidstringImpostato solo per le partite online o LAN.

Inviato quando tutte le squadre sono state create e replicate.

Esempio

{
  "Event": "MatchCreated",
  "Data": {
    "MatchGuid": "A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6"
  }
}
CampoTipoDescrizione
MatchGuidstringImpostato solo per le partite online o LAN.

Inviato quando inizia il primo conto alla rovescia.

Esempio

{
  "Event": "MatchInitialized",
  "Data": {
    "MatchGuid": "A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6"
  }
}
CampoTipoDescrizione
MatchGuidstringImpostato solo per le partite online o LAN.

Inviato quando si abbandona la partita.

Esempio

{
  "Event": "MatchDestroyed",
  "Data": {
    "MatchGuid": "A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6"
  }
}
CampoTipoDescrizione
MatchGuidstringImpostato solo per le partite online o LAN.

Inviato al termine della partita, una volta stabilito il vincitore.

Esempio

{
  "Event": "MatchEnded",
  "Data": {
    "MatchGuid": "A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6",
    "WinnerTeamNum": 0
  }
}
CampoTipoDescrizione
MatchGuidstringImpostato solo per le partite online o LAN.
WinnerTeamNumintIndice squadra della squadra vincitrice.

Inviato quando il gioco viene messo in pausa dall'amministratore della partita.

Esempio

{
  "Event": "MatchPaused",
  "Data": {
    "MatchGuid": "A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6"
  }
}
CampoTipoDescrizione
MatchGuidstringImpostato solo per le partite online o LAN.

Inviato quando il gioco viene ripreso dall'amministratore della partita.

Esempio

{
  "Event": "MatchUnpaused",
  "Data": {
    "MatchGuid": "A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6"
  }
}
CampoTipoDescrizione
MatchGuidstringImpostato solo per le partite online o LAN.

Inviato quando il gioco entra nello stato "podio" al termine della partita.

Esempio

{
  "Event": "PodiumStart",
  "Data": {
    "MatchGuid": "A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6"
  }
}
CampoTipoDescrizione
MatchGuidstringImpostato solo per le partite online o LAN.

Inviato all'inizializzazione di un replay. Non riguarda i replay dei gol, ma solo quelli caricati tramite il menu Cronologia partite.

Esempio

{
  "Event": "ReplayCreated",
  "Data": {
    "MatchGuid": "A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6"
  }
}
CampoTipoDescrizione
MatchGuidstringImpostato solo per le partite online o LAN.

Inviato quando il gioco entra nello stato "attivo" (al termine del conto alla rovescia).

Esempio

{
  "Event": "RoundStarted",
  "Data": {
    "MatchGuid": "A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6"
  }
}
CampoTipoDescrizione
MatchGuidstringImpostato solo per le partite online o LAN.

Inviato quando viene ottenuta una statistica.

Esempio

{
  "Event": "StatfeedEvent",
  "Data": {
    "MatchGuid": "A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6",
    "EventName": "Demolish",
    "Type": "Demolition",
    "MainTarget": {
      "Name": "PlayerA",
      "Shortcut": 1,
      "TeamNum": 0
    },
    "SecondaryTarget": {
      "Name": "PlayerB",
      "Shortcut": 2,
      "TeamNum": 1
    }
  }
}
CampoTipoDescrizione
EventNamestringNome dell'asset StatEvent (ad esempio "Demolish", "Save").
TypestringEtichetta localizzata che viene visualizzata per la statistica (ad esempio "Demolition").
MainTargetobjectGiocatore che ha ottenuto la statistica.
NamestringNome visualizzato.
ShortcutintScorciatoia spettatore.
TeamNumintIndice squadra (0 = Blu, 1 = Arancione).
MatchGuidstringImpostato solo per le partite online o LAN.
SecondaryTargetobjectCONDIZIONALEGiocatore coinvolto nella statistica (ad esempio il giocatore demolito). Stessa forma di MainTarget.