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.| Impostazione | Tipo | Default | Descrizione |
|---|---|---|---|
| PacketSendRate | float | 0 (disabilitato) | Numero di pacchetti UpdateState trasmessi al secondo. Impostare > 0 per abilitare il websocket. Limite massimo: 120. |
| Port | int | 49123 | Porta 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
}
}
}
}| Campo | Tipo | Descrizione |
|---|---|---|
| Players | array | Una sola partecipazione per giocatore nella partita. |
| Name | string | Nome visualizzato. |
| PrimaryId | string | Identificativo della piattaforma nel formato Piattaforma|Uid|Schermo condiviso (ad esempio "Steam|123|0", "Epic|456|0"). |
| Shortcut | int | Numero scorciatoia spettatore. |
| TeamNum | int | Indice squadra (0 = Blu, 1 = Arancione). |
| Score | int | Punteggio totale della partita. |
| Goals | int | Gol segnati in questa partita. |
| Shots | int | Tiri effettuati in questa partita. |
| Assists | int | Assist ottenuti in questa partita. |
| Saves | int | Parate effettuate in questa partita. |
| Touches | int | Tocchi della palla totali. |
| CarTouches | int | Tocchi effettuati con la carrozzeria (palla esclusa). |
| Demos | int | Demolizioni inflitte. |
| bHasCar | bool | SPETTATOREVero se il giocatore possiede attualmente un veicolo. |
| Speed | float | SPETTATOREVelocità del veicolo in Unreal Units/secondo. |
| Boost | int | SPETTATOREQuantità di turbo 0–100. |
| bBoosting | bool | SPETTATOREVero se il giocatore sta attualmente utilizzando il turbo. |
| bOnGround | bool | SPETTATOREVero se il veicolo ha almeno 3 ruote a contatto con il mondo di gioco. |
| bOnWall | bool | SPETTATOREVero se il veicolo si trova su una parete. |
| bPowersliding | bool | SPETTATOREVero se il giocatore sta usando il freno a mano. |
| bDemolished | bool | SPETTATOREVero se il veicolo è attualmente distrutto. |
| bSupersonic | bool | SPETTATOREVero se il veicolo è a velocità supersonica. |
| Attacker | object | CONDIZIONALEIl giocatore che ha demolito questo giocatore. Presente solo quando demolito. |
| Name | string | Nome del giocatore che ha demolito questo giocatore. |
| Shortcut | int | Scorciatoia spettatore dell'attaccante. |
| TeamNum | int | Indice squadra dell'attaccante. |
| Game | object | Metadati della partita. |
| Teams | array | Una voce per ogni squadra, in ordine di TeamNum. |
| Name | string | Nome della squadra. |
| TeamNum | int | Indice squadra. |
| Score | int | Conteggio dei gol della squadra. |
| ColorPrimary | string | Codice colore esadecimale (n. #) per il colore principale della squadra. |
| ColorSecondary | string | Codice colore esadecimale per il colore secondario della squadra. |
| TimeSeconds | int | Secondi rimanenti alla fine della partita. |
| bOvertime | bool | Vero se l'incontro è ai tempi supplementari. |
| Ball | object | Stato attuale della palla. |
| Speed | float | Velocità della palla attuale in Unreal Units/secondo. |
| TeamNum | int | Indice dell'ultima squadra ad aver toccato la palla. 255 se la palla non è stata toccata. |
| bReplay | bool | Vero se è attivo un replay del gol o della cronologia. |
| bHasWinner | bool | Vero se una squadra ha vinto. |
| Winner | string | Nome della squadra vincitrice. Campo vuoto se non c'è ancora un vincitore. |
| Arena | string | Nome dell'asset della mappa attuale (ad esempio "Stadium_P"). |
| bHasTarget | bool | Vero se il client sta attualmente visualizzando un veicolo specifico. |
| Target | object | CONDIZIONALEPlayer currently being viewed. Members are an empty string or 0 if the player does not have a spectator target. |
| Name | string | Nome del giocatore visualizzato. |
| Shortcut | int | Scorciatoia spettatore del giocatore visualizzato. |
| TeamNum | int | Indice squadra del giocatore visualizzato. |
| Frame | int | CONDIZIONALENumero dei frame attuali se il replay è attivo. |
| Elapsed | float | CONDIZIONALESecondi 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
}
}
}
}| Campo | Tipo | Descrizione |
|---|---|---|
| Players | array | Giocatori che colpiscono la palla in quel frame. |
| Name | string | Nome visualizzato. |
| Shortcut | int | Scorciatoia spettatore. |
| TeamNum | int | Indice squadra (0 = Blu, 1 = Arancione). |
| Ball | object | Stato della palla al momento del colpo. |
| PreHitSpeed | float | Velocità della palla prima del colpo (Unreal Units/secondo). |
| PostHitSpeed | float | Velocità della palla dopo il colpo (Unreal Units/secondo). |
| Location | vector | Posizione nel mondo (X, Y, Z) della palla all'impatto. |
| MatchGuid | string | Impostato 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
}
}| Campo | Tipo | Descrizione |
|---|---|---|
| TimeSeconds | int | Secondi rimanenti alla fine della partita. |
| bOvertime | bool | Vero se la partita è ai tempi supplementari. |
| MatchGuid | string | Impostato 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"
}
}| Campo | Tipo | Descrizione |
|---|---|---|
| MatchGuid | string | Impostato 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
}
}
}| Campo | Tipo | Descrizione |
|---|---|---|
| BallSpeed | float | Velocità della palla all'impatto. |
| ImpactForce | float | Forza d'impatto della palla rispetto alla traversa normale. |
| BallLastTouch | object | L'ultimo tocco della palla prima che colpisse la traversa. |
| Player | object | Il giocatore che ha effettuato l'ultimo tocco. |
| Name | string | Nome visualizzato. |
| Shortcut | int | Scorciatoia spettatore. |
| TeamNum | int | Indice squadra (0 = Blu, 1 = Arancione). |
| Speed | float | Velocità della palla risultante da questo colpo. |
| BallLocation | vector | Posizione nel mondo (X, Y, Z) della palla al momento dell'impatto. |
| MatchGuid | string | Impostato solo per le partite online o LAN. |
Inviato al termine del replay del gol.
Esempio
{
"Event": "GoalReplayEnd",
"Data": {
"MatchGuid": "A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6"
}
}| Campo | Tipo | Descrizione |
|---|---|---|
| MatchGuid | string | Impostato solo per le partite online o LAN. |
Inviato all'inizio del replay del gol.
Esempio
{
"Event": "GoalReplayStart",
"Data": {
"MatchGuid": "A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6"
}
}| Campo | Tipo | Descrizione |
|---|---|---|
| MatchGuid | string | Impostato 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"
}
}| Campo | Tipo | Descrizione |
|---|---|---|
| MatchGuid | string | Impostato 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
}
}
}| Campo | Tipo | Descrizione |
|---|---|---|
| GoalSpeed | float | Velocità della palla (Unreal Units/secondo) quando ha attraversato la linea di meta. |
| GoalTime | float | Durata del round precedente in secondi. |
| ImpactLocation | vector | Posizione nel mondo (X, Y, Z) della palla al momento del gol. |
| Scorer | object | Il giocatore che ha segnato il gol. |
| Name | string | Mostra il nome del marcatore. |
| Shortcut | int | Scorciatoia spettatore. |
| TeamNum | int | Indice squadra del marcatore. |
| BallLastTouch | object | L'ultimo tocco della palla prima del gol. |
| Player | object | Il giocatore che ha effettuato l'ultimo tocco. |
| Name | string | Nome del giocatore che ha toccato per ultimo la palla. |
| Shortcut | int | Scorciatoia spettatore. |
| TeamNum | int | Indice squadra. |
| Speed | float | Velocità della palla risultante da questo tocco. |
| Assister | object | CONDIZIONALEStessa forma di Scorer. Presente solo quando è stato registrato un assist. |
| MatchGuid | string | Impostato solo per le partite online o LAN. |
Inviato quando tutte le squadre sono state create e replicate.
Esempio
{
"Event": "MatchCreated",
"Data": {
"MatchGuid": "A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6"
}
}| Campo | Tipo | Descrizione |
|---|---|---|
| MatchGuid | string | Impostato solo per le partite online o LAN. |
Inviato quando inizia il primo conto alla rovescia.
Esempio
{
"Event": "MatchInitialized",
"Data": {
"MatchGuid": "A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6"
}
}| Campo | Tipo | Descrizione |
|---|---|---|
| MatchGuid | string | Impostato solo per le partite online o LAN. |
Inviato quando si abbandona la partita.
Esempio
{
"Event": "MatchDestroyed",
"Data": {
"MatchGuid": "A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6"
}
}| Campo | Tipo | Descrizione |
|---|---|---|
| MatchGuid | string | Impostato 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
}
}| Campo | Tipo | Descrizione |
|---|---|---|
| MatchGuid | string | Impostato solo per le partite online o LAN. |
| WinnerTeamNum | int | Indice squadra della squadra vincitrice. |
Inviato quando il gioco viene messo in pausa dall'amministratore della partita.
Esempio
{
"Event": "MatchPaused",
"Data": {
"MatchGuid": "A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6"
}
}| Campo | Tipo | Descrizione |
|---|---|---|
| MatchGuid | string | Impostato solo per le partite online o LAN. |
Inviato quando il gioco viene ripreso dall'amministratore della partita.
Esempio
{
"Event": "MatchUnpaused",
"Data": {
"MatchGuid": "A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6"
}
}| Campo | Tipo | Descrizione |
|---|---|---|
| MatchGuid | string | Impostato 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"
}
}| Campo | Tipo | Descrizione |
|---|---|---|
| MatchGuid | string | Impostato 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"
}
}| Campo | Tipo | Descrizione |
|---|---|---|
| MatchGuid | string | Impostato 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"
}
}| Campo | Tipo | Descrizione |
|---|---|---|
| MatchGuid | string | Impostato 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
}
}
}| Campo | Tipo | Descrizione |
|---|---|---|
| EventName | string | Nome dell'asset StatEvent (ad esempio "Demolish", "Save"). |
| Type | string | Etichetta localizzata che viene visualizzata per la statistica (ad esempio "Demolition"). |
| MainTarget | object | Giocatore che ha ottenuto la statistica. |
| Name | string | Nome visualizzato. |
| Shortcut | int | Scorciatoia spettatore. |
| TeamNum | int | Indice squadra (0 = Blu, 1 = Arancione). |
| MatchGuid | string | Impostato solo per le partite online o LAN. |
| SecondaryTarget | object | CONDIZIONALEGiocatore coinvolto nella statistica (ad esempio il giocatore demolito). Stessa forma di MainTarget. |