Criação de Dashboard Telemétrico para Eurotuck Simulator 2

Olá, pessoal!

Hoje quero falar de um projeto que mistura duas coisas que eu gosto bastante: programação e jogos. Especificamente o Euro Truck Simulator 2, que pra quem não conhece é um simulador de caminhão incrivelmente detalhado — e que, por baixo dos panos, esconde uma arquitetura técnica surpreendentemente rica.

A ideia surgiu enquanto eu jogava e percebi que o jogo expõe uma quantidade absurda de dados em tempo real: velocidade, RPM, temperatura da água e do óleo, pressão de ar dos freios, nível de combustível, voltagem da bateria, marcha atual, odômetro, horário interno do jogo... tudo isso disponível, estruturado, esperando alguém fazer algo com ele.

E aí veio a pergunta natural: dá pra transformar isso num painel externo no celular?

A resposta é sim. E foi exatamente isso que eu fiz.

O middleware que conecta tudo

O ETS2 tem uma SDK oficial em C++ que permite criar plugins em DLL. Esses plugins são carregados pelo próprio motor do jogo e recebem os dados do veículo em tempo real. Mas trabalhar direto com DLL e estruturas binárias em memória é coisa de gente com paciência demais — e eu já tenho pouca.

Foi aí que entrou o Funbit ETS2 Telemetry Server, um projeto open source que já faz todo esse trabalho pesado. Ele instala o plugin, captura os dados da SDK e os expõe como um endpoint HTTP local em formato JSON, geralmente na porta 25555. Simples assim.

Com isso, qualquer dispositivo na mesma rede Wi-Fi consegue acessar http://ip-do-pc:25555/api/ets2/telemetry e receber um objeto JSON com tudo que o jogo está produzindo naquele instante. O celular, o tablet, um segundo monitor — qualquer coisa com navegador vira um painel em potencial.

Construindo o dashboard

A interface foi desenvolvida em HTML, CSS e JavaScript puro, com jQuery pra facilitar a manipulação do DOM. O frontend faz polling no endpoint a cada 100 a 250 milissegundos, lê o JSON e atualiza os elementos na tela.

Parece simples, e na prática é — mas tem uns detalhes que tornam o projeto interessante.

O primeiro deles é a normalização dos dados antes de exibir. A velocidade, por exemplo, vem como um número que pode ser negativo durante a marcha à ré. Antes de jogar na tela, arredondo e pego o valor absoluto. A marcha vem como um inteiro, então trato pra exibir "R" quando é negativa e "N" quando é zero. Esse tipo de pré-processamento é o que separa um dashboard funcional de um que confunde quem está usando.

O segundo detalhe é o sistema de alerta de pressão de ar. Quando a pressão cai abaixo de 80, o painel entra em modo de alerta: o valor começa a piscar em vermelho com uma animação CSS. Nada sofisticado tecnicamente, mas visualmente é exatamente o tipo de coisa que faz sentido num HUD real — chama atenção sem precisar de som.

A interface foi inspirada em painéis aeronáuticos: fundo escuro, fonte grande, contraste alto, leitura fácil mesmo com o canto do olho. A velocidade ocupa a maior parte da tela com uma unidade vh que se ajusta automaticamente ao tamanho do dispositivo. O restante dos dados fica numa grade central dividida em blocos temáticos — temperatura, elétrica, navegação e desgaste.

O que foi mais trabalhoso

Honestamente? A consistência. O jogo atualizou pra versão 1.58.1.4s durante o desenvolvimento e parte da estrutura interna da telemetria mudou. Como o Funbit reflete diretamente o schema da SDK, o frontend quebrou em vários pontos — acessar data.truck.airPressure quando data.truck ainda não tinha chegado gerava exceção e travava tudo.

Foram dezenas de hot-reloads, testes manuais injetando valores via console, e muita paciência até deixar o código resiliente a esse tipo de falha. No final, o dashboard simplesmente ignora ciclos com payload incompleto e continua rodando quando os dados chegam.

Por que esse projeto é interessante

Não é só porque é legal ter um painel de caminhão no celular — embora seja, de fato, muito legal. É porque o projeto cobre um ciclo completo e real: captura de dados binários, serialização, transporte HTTP, consumo em rede local e renderização reativa. Isso não é diferente do que acontece em sistemas de telemetria industriais, monitoramento de servidores ou dashboards de IoT.

Por hoje é isso pessoal, um abraço e até a próxima.



Fontes: 

1. Telemetria do Euro Truck Simulator 2 e SDK Nativa

SCS SOFTWARE. Telemetry SDK – Euro Truck Simulator 2 & American Truck Simulator. Disponível em: https://modding.scssoft.com/wiki/Documentation/Engine/SDK/Telemetry. Acesso em: 28 fev. 2026.

SCS SOFTWARE. Euro Truck Simulator 2 Modding Documentation. Disponível em: https://modding.scssoft.com/wiki/Main_Page. Acesso em: 28 fev. 2026.

SCS SOFTWARE FORUM. Telemetry and SDK Discussions. Fórum oficial. Disponível em: https://forum.scssoft.com/. Acesso em: 28 fev. 2026.

STACK OVERFLOW. Discussions on ETS2 Telemetry and Plugin Development. Disponível em: https://stackoverflow.com/search?q=ets2+telemetry+sdk. Acesso em: 28 fev. 2026.



2. Middleware e Funbit Telemetry Server

FUNBIT. ETS2 Telemetry Server. GitHub, 2015–2026. Disponível em: https://github.com/Funbit/ets2-telemetry-server. Acesso em: 28 fev. 2026.

MOZILLA FOUNDATION. Working with JSON. MDN Web Docs. Disponível em: https://developer.mozilla.org/en-US/docs/Learn/JavaScript/Objects/JSON. Acesso em: 28 fev. 2026.

MOZILLA FOUNDATION. Using Fetch API. MDN Web Docs. Disponível em: https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch. Acesso em: 28 fev. 2026.



3. Arquitetura Cliente–Servidor e Comunicação HTTP

MOZILLA FOUNDATION. Web APIs – Document Object Model (DOM). MDN Web Docs. Disponível em: https://developer.mozilla.org/en-US/docs/Web/API/Document_Object_Model. Acesso em: 28 fev. 2026.

W3C. HTTP Semantics. World Wide Web Consortium. Disponível em: https://www.w3.org/TR/http-semantics/. Acesso em: 28 fev. 2026.



4. Interface, CSS Grid, Animações e Renderização

W3C. CSS Grid Layout Module Level 1. World Wide Web Consortium. Disponível em: https://www.w3.org/TR/css-grid-1/. Acesso em: 28 fev. 2026.

W3C. CSS Animations Module Level 1. World Wide Web Consortium. Disponível em: https://www.w3.org/TR/css-animations-1/. Acesso em: 28 fev. 2026.

JQUERY FOUNDATION. jQuery API Documentation. Disponível em: https://api.jquery.com/. Acesso em: 28 fev. 2026.

MOZILLA FOUNDATION. Introduction to the DOM. MDN Web Docs. Disponível em: https://developer.mozilla.org/en-US/docs/Web/API/Document_Object_Model/Introduction. Acesso em: 28 fev. 2026.



Comentários