Stats API do Rocket League

Este documento descreve os recursos da API de dados do jogo do Rocket League. Primeiro, os jogadores devem solicitar ao jogo que ative esse recurso editando o arquivo DefaultStatsAPI.ini, explicado abaixo. Uma vez ativado, esse recurso abrirá um WebSocket no computador do jogador que transmitirá dados e eventos do jogo. Programas de terceiros podem utilizar esses dados para alimentar uma variedade de aplicações, como interfaces personalizadas para transmissores.

Visão geral

A Stats API transmite mensagens JSON por meio de um socket local enquanto uma partita está em andamento. As mensagens são enviadas tanto em intervalos configuráveis quanto ao ocorrerem eventos específicos na partida. Os dados do evento são sempre transmitidos no mesmo tick em que o evento ocorre, independentemente da PacketSendRate do usuário.
Observação: Todas as configurações devem ser feitas antes da inicialização do cliente — alterações no arquivo .ini enquanto o cliente estiver em execução exigem uma reinicialização.
Visibilidade do campo:
  • Campos marcados CONDICIONAL só estão presentes quando relevante.
  • Campos marcados ESPECTADOR só estão presentes se o cliente estiver como espectador ou na equipe do jogador.

Configuração

Edite o arquivo <Install Dir>\TAGame\Config\DefaultStatsAPI.ini antes de iniciar o cliente.
ConfiguraçãoTipoPadrãoDescrição
PacketSendRatefloat0 (desativado)Número de pacotes UpdateState transmitidos por segundo. Deve ser maior que 0 para ativar o WebSocket. Limite máximo de 120.
Portint49123Porta local na qual o socket escuta.

Formato da mensagem

Toda mensagem segue esta estrutura de envelopamento:
{
  "Event": "EventName",
  "Data":  { /* event-specific payload */ }
}

Tick

Enviado X vezes por segundo, com base na preferência PacketSendRate do jogador.

Exemplo

{
  "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
      }
    }
  }
}
CampoTipoDescrição
PlayersarrayUma entrada por jogador na partida.
NamestringNome de exibição.
PrimaryIdstringIdentificador da plataforma no formato Plataforma|Uid|Splitscreen (por exemplo, "Steam|123|0", "Epic|456|0").
ShortcutintNúmero do atalho para espectador.
TeamNumintÍndice da equipe (0 = Azul, 1 = Laranja).
ScoreintPontuação total da partida.
GoalsintGols marcados nesta partida.
ShotsintTentativas de chute nesta partida.
AssistsintAssistências conquistadas nesta partida.
SavesintDefesas realizadas nesta partida.
TouchesintTotal de toques de bola.
CarTouchesintToques feitos pelo chassi do carro (não pela bola).
DemosintDemolições realizadas.
bHasCarboolESPECTADORVerdadeiro se o jogador tiver um veículo.
SpeedfloatESPECTADORVelocidade do veículo em Unidades Unreal/segundo.
BoostintESPECTADORQuantidade de Impulsos 0–100.
bBoostingboolESPECTADORVerdadeiro se o jogador estiver impulsionando no momento.
bOnGroundboolESPECTADORVerdadeiro se pelo menos 3 rodas estiverem em contato com o mundo.
bOnWallboolESPECTADORVerdadeiro se o veículo estiver em uma parede.
bPowerslidingboolESPECTADORVerdadeiro se o jogador estiver segurando o freio de mão.
bDemolishedboolESPECTADORVerdadeiro se o veículo estiver destruído no momento.
bSupersonicboolESPECTADORVerdadeiro se o veículo estiver em velocidade supersônica.
AttackerobjectCONDICIONALO jogador que demoliu este jogador. Presente apenas quando há uma demolição.
NamestringNome do jogador que demoliu este jogador.
ShortcutintAtalho para espectador do atacante.
TeamNumintÍndice da equipe do atacante.
GameobjectMetadados da partida.
TeamsarrayUma entrada por equipe, ordenada por TeamNum.
NamestringNome da equipe.
TeamNumintÍndice da equipe.
ScoreintContagem de gols da equipe.
ColorPrimarystringCódigo de cor hexagonal (sem #) para a cor primária da equipe.
ColorSecondarystringCódigo de cor hexagonal para a cor secundária da equipe.
TimeSecondsintSegundos restantes na partida.
bOvertimeboolVerdadeiro se a partida estiver em prorrogação.
BallobjectEstado atual da bola.
SpeedfloatVelocidade atual da bola em Unidades Unreal/segundo.
TeamNumintÍndice da última equipe a tocar a bola. 255 se a bola não foi tocada.
bReplayboolVerdadeiro se um replay do gol ou replay de histórico estiver ativo.
bHasWinnerboolVerdadeiro se uma equipe venceu.
WinnerstringNome da equipe vencedora. Linha vazia se ainda não há vencedores.
ArenastringNome do ativo do mapa atual (por exemplo, "Stadium_P").
bHasTargetboolVerdadeiro se o cliente estiver visualizando um veículo específico no momento.
TargetobjectCONDICIONALPlayer currently being viewed. Members are an empty string or 0 if the player does not have a spectator target.
NamestringNome do jogador sendo visualizado.
ShortcutintAtalho para espectador do jogador visualizado.
TeamNumintÍndice de equipe do jogador visualizado.
FrameintCONDICIONALNúmero do quadro atual se um replay estiver ativo.
ElapsedfloatCONDICIONALSegundos decorridos desde o início do jogo se um replay estiver ativo.

Eventos

Enviado um quadro após a bola ser atingida.

Exemplo

{
  "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
      }
    }
  }
}
CampoTipoDescrição
PlayersarrayJogadores que atingem a bola no quadro.
NamestringNome de exibição.
ShortcutintAtalho para espectador.
TeamNumintÍndice da equipe (0 = Azul, 1 = Laranja).
BallobjectEstado da bola no momento do acerto.
PreHitSpeedfloatVelocidade da bola antes do acerto (Unidades Unreal/segundo).
PostHitSpeedfloatVelocidade da bola após o acerto (Unidades Unreal/segundo).
LocationvectorPosição no mundo (X, Y, Z) da bola no impacto.
MatchGuidstringDefinido apenas para partidas online ou em LAN.

Enviado quando o relógio do jogo muda.

Exemplo

{
  "Event": "ClockUpdatedSeconds",
  "Data": {
    "MatchGuid": "A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6",
    "TimeSeconds": 180,
    "bOvertime": false
  }
}
CampoTipoDescrição
TimeSecondsintSegundos restantes na partida.
bOvertimeboolVerdadeiro se o jogo estiver em prorrogação.
MatchGuidstringDefinido apenas para partidas online ou em LAN.

Enviado no início de cada rodada, quando a contagem regressiva começa.

Exemplo

{
  "Event": "CountdownBegin",
  "Data": {
    "MatchGuid": "A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6"
  }
}
CampoTipoDescrição
MatchGuidstringDefinido apenas para partidas online ou em LAN.

Enviado quando a bola bate na trave.

Exemplo

{
  "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
    }
  }
}
CampoTipoDescrição
BallSpeedfloatVelocidade da bola no impacto.
ImpactForcefloatForça do impacto da bola relativo ao normal da trave.
BallLastTouchobjectO último toque da bola antes de acertar a trave.
PlayerobjectO jogador que fez o último toque.
NamestringNome de exibição.
ShortcutintAtalho para espectador.
TeamNumintÍndice da equipe (0 = Azul, 1 = Laranja).
SpeedfloatVelocidade da bola resultante do acerto.
BallLocationvectorPosição no mundo (X, Y, Z) da bola quando ocorreu o impacto.
MatchGuidstringDefinido apenas para partidas online ou em LAN.

Enviado quando o replay de um gol termina.

Exemplo

{
  "Event": "GoalReplayEnd",
  "Data": {
    "MatchGuid": "A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6"
  }
}
CampoTipoDescrição
MatchGuidstringDefinido apenas para partidas online ou em LAN.

Enviado quando o replay de um gol começa.

Exemplo

{
  "Event": "GoalReplayStart",
  "Data": {
    "MatchGuid": "A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6"
  }
}
CampoTipoDescrição
MatchGuidstringDefinido apenas para partidas online ou em LAN.

Exibido quando a bola explode durante o replay de um gol. Se o replay for ignorado, este evento não será acionado.

Exemplo

{
  "Event": "GoalReplayWillEnd",
  "Data": {
    "MatchGuid": "A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6"
  }
}
CampoTipoDescrição
MatchGuidstringDefinido apenas para partidas online ou em LAN.

Enviado quando um gol é marcado.

Exemplo

{
  "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
    }
  }
}
CampoTipoDescrição
GoalSpeedfloatVelocidade da bola (Unidades Unreal/segundo) ao cruzar a linha do gol.
GoalTimefloatDuração da rodada anterior em segundos.
ImpactLocationvectorPosição no mundo (X, Y, Z) da bola quando o gol foi marcado.
ScorerobjectO jogador que marcou o gol.
NamestringNome de exibição do marcador.
ShortcutintAtalho para espectador.
TeamNumintÍndice da equipe do marcador.
BallLastTouchobjectO último toque da bola antes do gol.
PlayerobjectO jogador que fez o último toque.
NamestringNome do último jogador a tocar a bola.
ShortcutintAtalho para espectador.
TeamNumintÍndice da equipe.
SpeedfloatVelocidade da bola resultante do toque.
AssisterobjectCONDICIONALMesma forma que o Scorer. Presente apenas quando uma assistência foi registrada.
MatchGuidstringDefinido apenas para partidas online ou em LAN.

Enviado quando todas as equipes são criadas e replicadas.

Exemplo

{
  "Event": "MatchCreated",
  "Data": {
    "MatchGuid": "A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6"
  }
}
CampoTipoDescrição
MatchGuidstringDefinido apenas para partidas online ou em LAN.

Enviado quando a primeira contagem regressiva começa.

Exemplo

{
  "Event": "MatchInitialized",
  "Data": {
    "MatchGuid": "A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6"
  }
}
CampoTipoDescrição
MatchGuidstringDefinido apenas para partidas online ou em LAN.

Enviado ao sair do jogo.

Exemplo

{
  "Event": "MatchDestroyed",
  "Data": {
    "MatchGuid": "A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6"
  }
}
CampoTipoDescrição
MatchGuidstringDefinido apenas para partidas online ou em LAN.

Enviado quando a partida termina e o vencedor é definido.

Exemplo

{
  "Event": "MatchEnded",
  "Data": {
    "MatchGuid": "A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6",
    "WinnerTeamNum": 0
  }
}
CampoTipoDescrição
MatchGuidstringDefinido apenas para partidas online ou em LAN.
WinnerTeamNumintÍndice de equipe da equipe vencedora.

Enviado quando o jogo é pausado por um administrador da partida.

Exemplo

{
  "Event": "MatchPaused",
  "Data": {
    "MatchGuid": "A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6"
  }
}
CampoTipoDescrição
MatchGuidstringDefinido apenas para partidas online ou em LAN.

Enviado quando o jogo é retomado por um administrador da partida.

Exemplo

{
  "Event": "MatchUnpaused",
  "Data": {
    "MatchGuid": "A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6"
  }
}
CampoTipoDescrição
MatchGuidstringDefinido apenas para partidas online ou em LAN.

Enviado quando o jogo entra na fase de pódio após o término da partida.

Exemplo

{
  "Event": "PodiumStart",
  "Data": {
    "MatchGuid": "A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6"
  }
}
CampoTipoDescrição
MatchGuidstringDefinido apenas para partidas online ou em LAN.

Enviado quando um replay é iniciado. Não se aplica a replays de gols, apenas aos replays carregados pelo menu "Histórico da partida".

Exemplo

{
  "Event": "ReplayCreated",
  "Data": {
    "MatchGuid": "A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6"
  }
}
CampoTipoDescrição
MatchGuidstringDefinido apenas para partidas online ou em LAN.

Enviado quando o jogo entra no estado ativo (após o término da contagem regressiva).

Exemplo

{
  "Event": "RoundStarted",
  "Data": {
    "MatchGuid": "A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6"
  }
}
CampoTipoDescrição
MatchGuidstringDefinido apenas para partidas online ou em LAN.

Enviado quando alguém ganha uma estatística.

Exemplo

{
  "Event": "StatfeedEvent",
  "Data": {
    "MatchGuid": "A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6",
    "EventName": "Demolish",
    "Type": "Demolition",
    "MainTarget": {
      "Name": "PlayerA",
      "Shortcut": 1,
      "TeamNum": 0
    },
    "SecondaryTarget": {
      "Name": "PlayerB",
      "Shortcut": 2,
      "TeamNum": 1
    }
  }
}
CampoTipoDescrição
EventNamestringNome do ativo do StatEvent (por exemplo, "Demolish", "Save").
TypestringRótulo de exibição localizado para a estatística (por exemplo, "Demolition").
MainTargetobjectJogador que recebeu a estatística.
NamestringNome de exibição.
ShortcutintAtalho para espectador.
TeamNumintÍndice da equipe (0 = Azul, 1 = Laranja).
MatchGuidstringDefinido apenas para partidas online ou em LAN.
SecondaryTargetobjectCONDICIONALJogador envolvido na estatística (por exemplo, o jogador demolido). Mesma forma que o MainTarget.