Estadísticas de API de Rocket League

Este documento describe las capacidades de la API de datos de juego de Rocket League. Primero, los jugadores deben solicitar al juego que habilite esta función editando su archivo DefaultStatsAPI.ini, como se explica a continuación. Una vez activada, esta función abrirá un web socket en la máquina del jugador que emitirá datos y eventos de la jugabilidad. Los programas de terceros pueden procesar estos datos para impulsar una variedad de aplicaciones, como HUD personalizados para transmisiones.

Descripción general

Las estadísticas de API transmiten mensajes JSON a través de un socket local mientras un partido está en curso. Los mensajes se envían con una frecuencia periódica configurable y también cuando ocurren eventos específicos de la partida. Los datos del evento siempre se emiten en el mismo ciclo de actualización en que ocurre el evento, independientemente del PacketSendRate del usuario.
Nota: Toda la configuración debe realizarse antes de que se inicie el cliente, los cambios en el archivo .ini mientras el cliente está en ejecución requieren su reinicio.
Visibilidad del campo:
  • Campos marcados CONDICIONAL solo están presentes cuando corresponde.
  • Campos marcados ESPECTADOR solo están presentes si el cliente está observando el partido o pertenece al equipo del jugador.

Configuración

Edita <Install Dir>\TAGame\Config\DefaultStatsAPI.ini antes de iniciar el cliente.
ConfiguraciónTipoPredeterminadoDescripción
PacketSendRatefloat0 (deshabilitado)Número de paquetes UpdateState transmitidos por segundo. Debe ser > 0 para habilitar el websocket. Limitado a 120.
Portint49123Puerto local en el que el socket escucha.

Formato del mensaje

Cada mensaje sigue esta estructura:
{
  "Event": "EventName",
  "Data":  { /* event-specific payload */ }
}

Ciclo de actualización

Se envía X veces por segundo según la preferencia PacketSendRate del jugador.

Ejemplo

{
  "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
      }
    }
  }
}
CampoTipoDescripción
PlayersarrayUna entrada por jugador en el partido.
NamestringNombre.
PrimaryIdstringIdentificador de la plataforma en el formato Platform|Uid|Splitscreen (por ejemplo, "Steam|123|0", "Epic|456|0").
ShortcutintNúmero de atajo para espectador.
TeamNumintÍndice del equipo (0 = azul, 1 = naranja).
ScoreintPuntuación total del partido.
GoalsintGoles anotados en este partido.
ShotsintIntentos de tiro en este partido.
AssistsintAsistencias obtenidas en este partido.
SavesintSalvadas realizadas en este partido.
TouchesintTotal de toques al balón.
CarTouchesintToques realizados por la carrocería (no el balón).
DemosintDemoliciones infligidas.
bHasCarboolESPECTADORVerdadero si el jugador tiene actualmente un vehículo.
SpeedfloatESPECTADORVelocidad del vehículo en Unidades de Unreal por segundo.
BoostintESPECTADORCantidad de acelerador 0–100.
bBoostingboolESPECTADORVerdadero si el jugador está utilizando el acelerador en ese momento.
bOnGroundboolESPECTADORVerdadero si al menos 3 ruedas están en contacto con el suelo.
bOnWallboolESPECTADORVerdadero si el vehículo está sobre una pared.
bPowerslidingboolESPECTADORVerdadero si el jugador está utilizando el freno de mano.
bDemolishedboolESPECTADORVerdadero si el vehículo está destruido en este momento.
bSupersonicboolESPECTADORVerdadero si el vehículo está usando velocidad supersónica.
AttackerobjectCONDICIONALEl jugador que demolió a este jugador. Presente solo cuando hay una demolición.
NamestringNombre del jugador que demolió a este jugador.
ShortcutintAtajo para espectador del atacante.
TeamNumintÍndice de equipo del atacante.
GameobjectMetadatos del partido.
TeamsarrayUna entrada por equipo, según el orden de TeamNum.
NamestringNombre del equipo.
TeamNumintÍndice del equipo.
ScoreintCantidad de goles del equipo.
ColorPrimarystringCódigo de color hexadecimal (número #) para el color principal del equipo.
ColorSecondarystringCódigo de color hexadecimal para el color secundario del equipo.
TimeSecondsintSegundos restantes en el partido.
bOvertimeboolVerdadero si el partido está en tiempo extra.
BallobjectEstado actual del balón.
SpeedfloatVelocidad actual del balón en unidades de Unreal por segundo.
TeamNumintÍndice del último equipo que tocó el balón. 255 si el balón no fue tocado.
bReplayboolVerdadero si la repetición de un gol o la repetición del historial está activa.
bHasWinnerboolVerdadero si un equipo ganó.
WinnerstringNombre del equipo ganador. Cadena vacía si aún no hay un ganador.
ArenastringNombre del recurso del mapa actual (por ejemplo, "Stadium_P").
bHasTargetboolVerdadero si el jugador está viendo un vehículo en específico en este momento.
TargetobjectCONDICIONALPlayer currently being viewed. Members are an empty string or 0 if the player does not have a spectator target.
NamestringNombre del jugador en vista.
ShortcutintAtajo para espectador del jugador en vista.
TeamNumintÍndice de equipo del jugador en vista.
FrameintCONDICIONALNúmero de cuadro actual si la repetición está activa.
ElapsedfloatCONDICIONALSegundos transcurridos desde el inicio del partido si la repetición está activa.

Eventos

Se envía un fotograma después de que se golpea el balón.

Ejemplo

{
  "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
      }
    }
  }
}
CampoTipoDescripción
PlayersarrayJugadores que golpearon el balón en ese cuadro.
NamestringNombre.
ShortcutintAtajo para espectador.
TeamNumintÍndice del equipo (0 = azul, 1 = naranja).
BallobjectEstado del balón en el momento del impacto.
PreHitSpeedfloatVelocidad del balón antes del impacto (unidades de Unreal por segundo).
PostHitSpeedfloatVelocidad del balón después del impacto (unidades de Unreal por segundo).
LocationvectorPosición en el mundo (X, Y, Z) del balón en el momento del impacto.
MatchGuidstringSolo se establece para partidos en línea o LAN.

Se envía cuando el reloj del juego cambia.

Ejemplo

{
  "Event": "ClockUpdatedSeconds",
  "Data": {
    "MatchGuid": "A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6",
    "TimeSeconds": 180,
    "bOvertime": false
  }
}
CampoTipoDescripción
TimeSecondsintSegundos restantes en el partido.
bOvertimeboolVerdadero si el juego está en tiempo extra.
MatchGuidstringSolo se establece para partidos en línea o LAN.

Se envía al inicio de cada ronda cuando comienza la cuenta regresiva.

Ejemplo

{
  "Event": "CountdownBegin",
  "Data": {
    "MatchGuid": "A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6"
  }
}
CampoTipoDescripción
MatchGuidstringSolo se establece para partidos en línea o LAN.

Se envía cuando el balón golpea el travesaño.

Ejemplo

{
  "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
    }
  }
}
CampoTipoDescripción
BallSpeedfloatVelocidad del balón en el momento del impacto.
ImpactForcefloatFuerza de impacto del balón con respecto a la normal del travesaño.
BallLastTouchobjectEl último toque del balón antes de golpear el travesaño.
PlayerobjectEl jugador que hizo el último toque.
NamestringNombre.
ShortcutintAtajo para espectador.
TeamNumintÍndice del equipo (0 = azul, 1 = naranja).
SpeedfloatVelocidad del balón resultante de este impacto.
BallLocationvectorPosición en el mundo (X, Y, Z) del balón cuando ocurrió el impacto.
MatchGuidstringSolo se establece para partidos en línea o LAN.

Se envía cuando finaliza la repetición de un gol.

Ejemplo

{
  "Event": "GoalReplayEnd",
  "Data": {
    "MatchGuid": "A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6"
  }
}
CampoTipoDescripción
MatchGuidstringSolo se establece para partidos en línea o LAN.

Se envía cuando comienza la repetición de un gol.

Ejemplo

{
  "Event": "GoalReplayStart",
  "Data": {
    "MatchGuid": "A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6"
  }
}
CampoTipoDescripción
MatchGuidstringSolo se establece para partidos en línea o LAN.

Se envía cuando el balón explota durante la repetición de un gol. Si la repetición se omite, este evento no se activará.

Ejemplo

{
  "Event": "GoalReplayWillEnd",
  "Data": {
    "MatchGuid": "A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6"
  }
}
CampoTipoDescripción
MatchGuidstringSolo se establece para partidos en línea o LAN.

Se envía cuando se anota un gol.

Ejemplo

{
  "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
    }
  }
}
CampoTipoDescripción
GoalSpeedfloatVelocidad del balón (unidades de Unreal por segundo) cuando cruzó la línea de gol.
GoalTimefloatDuración de la ronda anterior en segundos.
ImpactLocationvectorPosición en el mundo (X, Y, Z) del balón cuando ocurrió el gol.
ScorerobjectEl jugador que anotó el gol.
NamestringMostrar el nombre del Scorer.
ShortcutintAtajo para espectador.
TeamNumintÍndice de equipo del Scorer.
BallLastTouchobjectEl último toque del balón antes del gol.
PlayerobjectEl jugador que hizo el último toque.
NamestringNombre del jugador que tocó el balón por última vez.
ShortcutintAtajo para espectador.
TeamNumintÍndice del equipo.
SpeedfloatVelocidad del balón resultante de este toque.
AssisterobjectCONDICIONALMisma forma que Scorer. Presente solo cuando se registra una asistencia.
MatchGuidstringSolo se establece para partidos en línea o LAN.

Se envía cuando todos los equipos han sido creados y replicados.

Ejemplo

{
  "Event": "MatchCreated",
  "Data": {
    "MatchGuid": "A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6"
  }
}
CampoTipoDescripción
MatchGuidstringSolo se establece para partidos en línea o LAN.

Se envía cuando comienza la primera cuenta regresiva.

Ejemplo

{
  "Event": "MatchInitialized",
  "Data": {
    "MatchGuid": "A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6"
  }
}
CampoTipoDescripción
MatchGuidstringSolo se establece para partidos en línea o LAN.

Se envía al salir del juego.

Ejemplo

{
  "Event": "MatchDestroyed",
  "Data": {
    "MatchGuid": "A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6"
  }
}
CampoTipoDescripción
MatchGuidstringSolo se establece para partidos en línea o LAN.

Se envía cuando el partido termina y se elige un ganador.

Ejemplo

{
  "Event": "MatchEnded",
  "Data": {
    "MatchGuid": "A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6",
    "WinnerTeamNum": 0
  }
}
CampoTipoDescripción
MatchGuidstringSolo se establece para partidos en línea o LAN.
WinnerTeamNumintÍndice de equipo para el equipo ganador.

Se envía cuando un administrador del partido pausa el juego.

Ejemplo

{
  "Event": "MatchPaused",
  "Data": {
    "MatchGuid": "A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6"
  }
}
CampoTipoDescripción
MatchGuidstringSolo se establece para partidos en línea o LAN.

Se envía cuando un administrador del partido reanuda el juego.

Ejemplo

{
  "Event": "MatchUnpaused",
  "Data": {
    "MatchGuid": "A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6"
  }
}
CampoTipoDescripción
MatchGuidstringSolo se establece para partidos en línea o LAN.

Se envía cuando el juego entra en el estado de podio tras finalizar la partida.

Ejemplo

{
  "Event": "PodiumStart",
  "Data": {
    "MatchGuid": "A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6"
  }
}
CampoTipoDescripción
MatchGuidstringSolo se establece para partidos en línea o LAN.

Se envía cuando se inicializa una repetición. No se refiere a las repeticiones de goles, sino únicamente a las repeticiones cargadas desde el menú de historial de partidos.

Ejemplo

{
  "Event": "ReplayCreated",
  "Data": {
    "MatchGuid": "A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6"
  }
}
CampoTipoDescripción
MatchGuidstringSolo se establece para partidos en línea o LAN.

Se envía cuando el juego entra en el estado activo (tras finalizar la cuenta regresiva).

Ejemplo

{
  "Event": "RoundStarted",
  "Data": {
    "MatchGuid": "A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6"
  }
}
CampoTipoDescripción
MatchGuidstringSolo se establece para partidos en línea o LAN.

Se envía cuando alguien obtiene una estadística.

Ejemplo

{
  "Event": "StatfeedEvent",
  "Data": {
    "MatchGuid": "A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6",
    "EventName": "Demolish",
    "Type": "Demolition",
    "MainTarget": {
      "Name": "PlayerA",
      "Shortcut": 1,
      "TeamNum": 0
    },
    "SecondaryTarget": {
      "Name": "PlayerB",
      "Shortcut": 2,
      "TeamNum": 1
    }
  }
}
CampoTipoDescripción
EventNamestringNombre del recurso del StatEvent (por ejemplo, "Demolish", "Save").
TypestringEtiqueta de visualización localizada para la estadística (por ejemplo, "Demolition").
MainTargetobjectJugador que obtuvo la estadística.
NamestringNombre.
ShortcutintAtajo para espectador.
TeamNumintÍndice del equipo (0 = azul, 1 = naranja).
MatchGuidstringSolo se establece para partidos en línea o LAN.
SecondaryTargetobjectCONDICIONALJugador involucrado en la estadística (por ejemplo, el jugador demolido). Misma forma que MainTarget.