API de estadísticas de Rocket League

Este documento detalla las capacidades de la API de datos de juego de Rocket League. En primer lugar, los jugadores deben indicar al juego que active esta función editando su archivo DefaultStatsAPI.ini, como se explica a continuación. Una vez activada, esta función abrirá un WebSocket en el equipo del jugador que emitirá datos y eventos de la partida. Los programas de terceros pueden procesar estos datos para dar soporte a diversas aplicaciones, como interfaces HUD personalizadas para retransmisiones.

Visión general

La API de estadísticas transmite mensajes JSON a través de un socket local mientras se está disputando un partido. Los mensajes se envían tanto a una frecuencia periódica configurable como cuando se producen eventos específicos del partido. Los datos de los eventos se emiten siempre en el mismo tick en el que ocurren, independientemente del PacketSendRate del usuario.
Nota: Toda la configuración debe realizarse antes de iniciar el cliente. Los cambios en el archivo ini mientras el cliente está en ejecución requieren reiniciar el cliente.
Visibilidad de campo:
  • Campos marcados CONDICIONAL solo están presentes cuando son relevantes.
  • Campos marcados ESPECTADOR solo están presentes si el cliente está en modo espectador o en el equipo del jugador.

Configuración

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

Formato de mensaje

Todos los mensajes siguen esta estructura de sobre:
{
  "Event": "EventName",
  "Data":  { /* event-specific payload */ }
}

Tick

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 plataforma en formato Plataforma|Identificador único|Pantalla dividida (por ejemplo, "Steam|123|0", "Epic|456|0").
ShortcutintNúmero de atajo de espectador.
TeamNumintÍndice de equipo (0 = azul, 1 = naranja).
ScoreintPuntuación total del partido.
GoalsintGoles marcados en este partido.
ShotsintTiros realizados en este partido.
AssistsintAsistencias obtenidas en este partido.
SavesintSalvadas realizadas en este partido.
TouchesintTotal de toques al balón.
CarTouchesintToques con la carrocería (no del balón).
DemosintDemoliciones causadas.
bHasCarboolESPECTADORVerdadero si el jugador tiene un vehículo en ese momento.
SpeedfloatESPECTADORVelocidad del vehículo en unidades de Unreal por segundo.
BoostintESPECTADORCantidad de impulso 0–100.
bBoostingboolESPECTADORVerdadero si el jugador está usando un potenciador en ese momento.
bOnGroundboolESPECTADORVerdadero si al menos tres ruedas están en contacto con el mundo.
bOnWallboolESPECTADORVerdadero si el vehículo se encuentra sobre una pared.
bPowerslidingboolESPECTADORVerdadero si el jugador está usando el freno de mano.
bDemolishedboolESPECTADORVerdadero si el vehículo está actualmente destruido.
bSupersonicboolESPECTADORVerdadero si el vehículo va a velocidad supersónica.
AttackerobjectCONDICIONALEl jugador que demolió a este jugador. Solo está presente al ser demolido.
NamestringNombre del jugador que demolió a este jugador.
ShortcutintAtajo de espectador del atacante.
TeamNumintÍndice de equipo del atacante.
GameobjectMetadatos del partido.
TeamsarrayUna entrada por equipo, ordenada por TeamNum.
NamestringNombre del equipo.
TeamNumintÍndice de equipo.
ScoreintRecuento de goles del equipo.
ColorPrimarystringCódigo de color hexadecimal (sin #) del color principal del equipo.
ColorSecondarystringCódigo de color hexadecimal del color secundario del equipo.
TimeSecondsintSegundos restantes del partido.
bOvertimeboolVerdadero si el partido está en la prórroga.
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 se ha tocado.
bReplayboolVerdadero si hay una repetición de gol o una repetición del historial activa.
bHasWinnerboolVerdadero si un equipo ha ganado.
WinnerstringNombre del equipo ganador. Cadena vacía si aún no hay ganador.
ArenastringNombre del recurso del mapa actual (por ejemplo, "Stadium_P").
bHasTargetboolVerdadero si el cliente está actualmente visualizando un vehículo específico.
TargetobjectCONDICIONALPlayer currently being viewed. Members are an empty string or 0 if the player does not have a spectator target.
NamestringNombre del jugador que se está visualizando.
ShortcutintAtajo de espectador del jugador visualizado.
TeamNumintÍndice de equipo del jugador visualizado.
FrameintCONDICIONALNúmero de fotograma actual si hay una repetición activa.
ElapsedfloatCONDICIONALSegundos transcurridos desde el inicio del partido si hay una repetición activa.

Eventos

Se envía un frame después de que se golpee 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 fotograma.
NamestringNombre.
ShortcutintAtajo de espectador.
TeamNumintÍndice de equipo (0 = azul, 1 = naranja).
BallobjectEstado del balón en el momento del golpeo.
PreHitSpeedfloatVelocidad del balón antes del golpeo (unidades de Unreal por segundo).
PostHitSpeedfloatVelocidad del balón después del golpeo (unidades de Unreal por segundo).
LocationvectorPosición (X, Y, Z) del balón en el mundo en el momento del impacto.
MatchGuidstringSolo se aplica a partidas en línea o en red local.

Se envía cuando cambia el reloj del juego.

Ejemplo

{
  "Event": "ClockUpdatedSeconds",
  "Data": {
    "MatchGuid": "A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6",
    "TimeSeconds": 180,
    "bOvertime": false
  }
}
CampoTipoDescripción
TimeSecondsintSegundos restantes del partido.
bOvertimeboolVerdadero si la partida está en la prórroga.
MatchGuidstringSolo se aplica a partidas en línea o en red local.

Se envía al inicio de cada ronda, cuando comienza la cuenta atrás.

Ejemplo

{
  "Event": "CountdownBegin",
  "Data": {
    "MatchGuid": "A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6"
  }
}
CampoTipoDescripción
MatchGuidstringSolo se aplica a partidas en línea o en red local.

Se envía cuando el balón golpea el larguero.

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 al impactar.
ImpactForcefloatFuerza de impacto del balón en relación con la normal del larguero.
BallLastTouchobjectEl último toque del balón antes de golpear en el larguero.
PlayerobjectEl jugador que dio el último toque.
NamestringNombre.
ShortcutintAtajo de espectador.
TeamNumintÍndice de equipo (0 = azul, 1 = naranja).
SpeedfloatVelocidad del balón resultante de este golpeo.
BallLocationvectorPosición (X, Y, Z) del balón en el mundo cuando se produjo el impacto.
MatchGuidstringSolo se aplica a partidas en línea o en red local.

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

Ejemplo

{
  "Event": "GoalReplayEnd",
  "Data": {
    "MatchGuid": "A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6"
  }
}
CampoTipoDescripción
MatchGuidstringSolo se aplica a partidas en línea o en red local.

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

Ejemplo

{
  "Event": "GoalReplayStart",
  "Data": {
    "MatchGuid": "A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6"
  }
}
CampoTipoDescripción
MatchGuidstringSolo se aplica a partidas en línea o en red local.

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

Ejemplo

{
  "Event": "GoalReplayWillEnd",
  "Data": {
    "MatchGuid": "A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6"
  }
}
CampoTipoDescripción
MatchGuidstringSolo se aplica a partidas en línea o en red local.

Se envía cuando se marca 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) al cruzar la línea de gol.
GoalTimefloatDuración de la ronda anterior en segundos.
ImpactLocationvectorPosición (X, Y, Z) del balón en el mundo cuando se marcó el gol.
ScorerobjectEl jugador que ha marcado el gol.
NamestringNombre en pantalla del goleador.
ShortcutintAtajo de espectador.
TeamNumintÍndice de equipo del goleador.
BallLastTouchobjectEl último toque del balón antes del gol.
PlayerobjectEl jugador que dio el último toque.
NamestringNombre del jugador que tocó el balón por última vez.
ShortcutintAtajo de espectador.
TeamNumintÍndice de equipo.
SpeedfloatVelocidad del balón resultante de este toque.
AssisterobjectCONDICIONALMisma forma que Scorer. Solo está presente cuando se ha registrado una asistencia.
MatchGuidstringSolo se aplica a partidas en línea o en red local.

Se envía cuando todos los equipos se han creado y replicado.

Ejemplo

{
  "Event": "MatchCreated",
  "Data": {
    "MatchGuid": "A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6"
  }
}
CampoTipoDescripción
MatchGuidstringSolo se aplica a partidas en línea o en red local.

Se envía cuando comienza la primera cuenta atrás.

Ejemplo

{
  "Event": "MatchInitialized",
  "Data": {
    "MatchGuid": "A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6"
  }
}
CampoTipoDescripción
MatchGuidstringSolo se aplica a partidas en línea o en red local.

Se envía al salir del juego.

Ejemplo

{
  "Event": "MatchDestroyed",
  "Data": {
    "MatchGuid": "A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6"
  }
}
CampoTipoDescripción
MatchGuidstringSolo se aplica a partidas en línea o en red local.

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

Ejemplo

{
  "Event": "MatchEnded",
  "Data": {
    "MatchGuid": "A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6",
    "WinnerTeamNum": 0
  }
}
CampoTipoDescripción
MatchGuidstringSolo se aplica a partidas en línea o en red local.
WinnerTeamNumintÍndice de equipo del equipo ganador.

Se envía cuando un administrador pausa el partido.

Ejemplo

{
  "Event": "MatchPaused",
  "Data": {
    "MatchGuid": "A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6"
  }
}
CampoTipoDescripción
MatchGuidstringSolo se aplica a partidas en línea o en red local.

Se envía cuando un administrador reanuda el partido.

Ejemplo

{
  "Event": "MatchUnpaused",
  "Data": {
    "MatchGuid": "A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6"
  }
}
CampoTipoDescripción
MatchGuidstringSolo se aplica a partidas en línea o en red local.

Se envía cuando el juego pasa a la pantalla de podio tras acabar el partido.

Ejemplo

{
  "Event": "PodiumStart",
  "Data": {
    "MatchGuid": "A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6"
  }
}
CampoTipoDescripción
MatchGuidstringSolo se aplica a partidas en línea o en red local.

Se envía cuando se inicia una repetición. No se aplica a las repeticiones de goles, solo a las repeticiones que se cargan desde el menú Historial de partidos.

Ejemplo

{
  "Event": "ReplayCreated",
  "Data": {
    "MatchGuid": "A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6"
  }
}
CampoTipoDescripción
MatchGuidstringSolo se aplica a partidas en línea o en red local.

Se envía cuando el partido entra en estado activo (tras finalizar la cuenta atrás).

Ejemplo

{
  "Event": "RoundStarted",
  "Data": {
    "MatchGuid": "A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6"
  }
}
CampoTipoDescripción
MatchGuidstringSolo se aplica a partidas en línea o en red local.

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, "Demolición").
MainTargetobjectJugador que obtuvo la estadística.
NamestringNombre.
ShortcutintAtajo de espectador.
TeamNumintÍndice de equipo (0 = azul, 1 = naranja).
MatchGuidstringSolo se aplica a partidas en línea o en red local.
SecondaryTargetobjectCONDICIONALJugador implicado en la estadística (por ejemplo, el jugador demolido). Misma forma que MainTarget.