Skip to content

Проект для просмотра телеметрии F1 25 (PS5) с любого устройства в локальной сети

Notifications You must be signed in to change notification settings

Alex-DSGN/F1-25-Telemetry

Repository files navigation

F1 25 Telemetry Viewer

Проект для просмотра телеметрии F1 25 (PS5) с любого устройства в локальной сети:

  • Прием UDP-пакетов от игры.
  • Подсчет данных по кругам: live time текущего круга, best time, таблица кругов (номер, время, дельта, валидность) и так далее.

Структура проекта

  • backend/ — Node.js-сервер:
    • слушает UDP от игры;
    • парсит нужные пакеты (минимум LapData);
    • считает best lap, дельты и валидность;
    • отдает данные по WebSocket и раздает статику из public/.
  • public/ — простой фронтенд:
    • index.html — разметка;
    • style.css — стили;
    • app.js — подключение к WebSocket и отрисовка таблицы кругов.

Описание работы

  • В демо-режиме (npm run demo) сервер генерирует синтетические данные без подключения к игре.

Интерфейс (описание блоков)

  • Live lap: показывает текущий круг из общего (lap / total, если total известно), текущее время круга (live) и Delta vs best — отставание/опережение от личного лучшего круга (live, знак ±/−/+).
  • Best laps: персональный лучший круг и номер; лучший круг всей сессии и номер.
  • Tyres: стек использованных шин (стинты, последняя — текущая), текущий комплект с возрастом в кругах, износ шин по колёсам (FL · FR · RL · RR, %).
  • Race HUD: топливный запас/недостача относительно оставшихся кругов + режим топлива; заряд ERS и режим deploy; штрафы/предупреждения/необслуженные наказания.
  • Race таблица: Pos, ΔPos (изменение позиции vs первое появление), Driver (с цветом команды), Lap time (последний завершённый круг; подсветка владельца лучшего круга), Ahead (разрыв до впереди), Leader (разрыв до лидера), Tyre (стек стинтов), Stops (кол-во питов), Pit (IN/BOX/P с временем, краткосрочно), S1/S2/S3 (сектора последнего завершённого круга; подсветка лучших секторов сессии). ΔPos не пересчитывается, pit-индикатор живёт ~10 секунд или до смены круга.
  • Personal таблица: live-строка текущего круга и история кругов игрока: #, Lap time, Delta к личному лучшему, Tyre (стек), Pit (IN/BOX/P с временем), S1/S2/S3, Valid (OK/NO). Live-строка показывает S1/S2 сразу после закрытия сектора, S3 — только после финиша круга. Лучшие сектора считаются по валидным кругам; delta — к личному лучшему.
  • Car: статусы и телеметрия машины (шины, топливо, управление, ERS, мощности, температуры, давления и т.п.).
  • Всегда видны статус подключения и тип сессии.

Детали колонок таблиц

  • Race

    • Pos: позиция в гонке.
    • ΔPos: разница к первой зафиксированной позиции для этой машины (база не меняется при последующих апдейтах).
    • Driver: имя + точка цвета команды.
    • Lap time: последний завершённый круг (для time-attack — лучший), подсветка у владельца лучшего круга сессии.
    • Ahead: разрыв до машины впереди (для P1 пусто); если нет данных ahead — считается через gap to leader.
    • Leader: разрыв до лидера (для P1 пусто).
    • Drv: статус пилота (только On track / Out-lap / In-lap / Flying) или короткий индикатор пит-лейна IN / BOX / P без времени.
    • Tyre: стек стинтов машины (последняя — текущая).
    • Stops: количество пит-стопов (из LapData numPitStops).
    • Time pit: время на пит-лейне в секундах (без префиксов), показывается кратковременно после фиксации пит-стопа.
    • S1/S2/S3: сектора последнего завершённого круга (SessionHistory, fallback LapData); подсветка — лучшие сектора среди отображаемых машин.
  • Personal

    • #: номер круга.
    • Lap time: время круга.
    • Delta: разница к личному лучшему кругу.
    • Drv: статус пилота (только On track / Out-lap / In-lap / Flying) или краткий индикатор пит-лейна IN / BOX / P без времени.
    • Tyre: стек стинтов на момент круга.
    • Time pit: время на пит-лейне в секундах для этого круга (если фиксировалось), без префиксов.
    • S1/S2/S3: сектора круга; в live-строке S1/S2 показываются сразу после закрытия сектора, S3 — только после финиша круга.
    • Valid: OK/NO — валидность круга.

Логика отображения

  • Live vs Race сектора: Personal (live) показывает S1/S2 сразу после закрытия сектора, S3 только после финиша круга. Race берет S1/S2/S3 из последнего завершённого круга (SessionHistory), поэтому сектора в Race обновляются после финиша круга.
  • Best-сектора Personal считаются по валидным завершённым кругам; best-сектора Race — минимумы среди отображаемых машин (подсветка фиолетовым).
  • ΔPos в Race привязана к первой увиденной позиции машины и не пересчитывается.
  • Pit-индикатор в Race показывается около 10 секунд или до смены круга; статус/время берутся из pit-lane таймера.
  • Fuel/ERS/penalties: Fuel — запас/недостача в кругах vs оставшиеся круги + текущий режим топлива; ERS — процент заряда от константы и режим deploy; Penalties — сумма штрафов, предупреждений и необслуженных наказаний.
  • Tyres: стек формируется по сменам шин; текущий комплект определяется по последнему стинту. Износ шин берется из CarDamage (packet 10), порядок FL · FR · RL · RR.

Запуск

  1. Установить зависимости:
    npm install
  2. Запустить сервер:
    npm start
  3. (Опционально) Запустить демо-режим без игры:
    npm run demo
  4. В игре F1 25 (PS5) указать IP вашего компьютера и UDP-порт, который будет слушать сервер.

About

Проект для просмотра телеметрии F1 25 (PS5) с любого устройства в локальной сети

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors