Skip to content

tryptz/Tryptometric-HUD

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Telemetry HUD

A custom SimHub-style telemetry HUD. A Node.js server listens for UDP telemetry from racing games, normalizes it, and serves a web HUD you open on a phone, tablet, or second monitor over your LAN.

Game ──UDP──> Node parser ──> normalized frame ──WebSocket──> browser HUD

Supported games (all broadcast over UDP — no shared-memory hacks needed):

Game Default port How to enable
Forza (Motorsport / Horizon) 5300 In-game: Settings → HUD → Data Out → On. Set IP to your PC's LAN IP (or 127.0.0.1 if the game runs on this PC). Port 5300.
DiRT Rally 2.0 20777 Edit Documents/My Games/DiRT Rally 2.0/hardwaresettings/hardware_settings_config.xml:
<udp enabled="true" extradata="3" ip="127.0.0.1" port="20777" delay="1" />
BeamNG.drive 4444 Enable OutGauge output in BeamNG settings and point it at the PC's IP, port 4444.

Change ports in server/config.js if needed.

Three ways to use it

  1. Server on a PC, HUD in a browsernpm start on a PC, open the printed URL on your phone/tablet/second screen (the original setup, below).
  2. Standalone Windows app (all-in-one) — a double-click .exe that runs the whole server on your gaming PC (Node embedded via Electron) and shows the HUD in a window, while phones/tablets on the same Wi-Fi open the HUD in a browser. Point each game's UDP at this PC (127.0.0.1 if local). See windows/README.md for build/run details.
  3. Standalone Android app (all-in-one) — install android/telemetry-hud.apk. The phone runs everything (Node is embedded via nodejs-mobile) and shows the HUD; just point the game's UDP at the phone's IP. No PC, no Termux at runtime. See android/README.md for build/install details.

HUD themes

The HUD (public/) is a single canvas with swappable themes, chosen from the in-app ⚙ settings button (selection persists):

  • GT5 Cluster — Gran-Turismo-style twin analog dials, built from the imported Assetto Corsa "GT HUD" sprite artwork (public/themes/gt5/).
  • NFS Underground 2 — cyan-neon tuner tacho with NOS bar (procedural).
  • Classic — minimal shift-light strip + RPM arc + pedals + lap info.

Add a theme by dropping public/themes/<id>.js (calling window.HUD.registerTheme) plus any art under public/themes/<id>/.

Run

npm install
npm start

Then open the URL printed in the console:

  • On this PC: http://localhost:3000
  • On your phone (same Wi-Fi): http://<this-PC-LAN-IP>:3000

Windows will likely prompt to allow Node through the firewall — allow it on private networks so your phone can reach the server.

Develop without a game

Use the mock sender to stream synthetic packets so you can build the HUD offline:

npm start                       # terminal 1
node tools/mock-sender.js forza # terminal 2  (or: dirt | beamng)

The HUD should animate: RPM sweeps, gear shifts, pedals move.

Layout

server/
  index.js      UDP listeners + static server + WS hub wiring
  config.js     ports
  udp/          one parser per game (forza, dirt, beamng)
  normalize.js  shared telemetry schema
  hub.js        60Hz WebSocket broadcast
public/
  index.html    HUD shell (canvas + settings overlay)
  hud-app.js    WS client, theme registry, settings, render loop
  hud.css       shell styling
  themes/       gt5.js · nfsu2.js · classic.js  (+ gt5/ sprite art)
android/        standalone all-in-one APK (nodejs-mobile + WebView) + build.sh
tools/          mock-sender.js

Adding another UDP game later = one new parser mapping into the schema in normalize.js, plus a listener in index.js. The HUD never changes.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors