Voltar para Projetos

ETSFS — Telemetria de Frotas de Euro Truck Simulator em Tempo Real

Estudo de caso técnico de uma infraestrutura multi-stack integrada e escalável de processamento de fluxos de telemetria espacial e veicular.

Java / Spring Boot React (Next.js) Flutter C# (.NET Core) PostgreSQL / TimescaleDB

O Desafio do Projeto

Coletar dados de telemetria automotiva diretamente do simulador Euro Truck Simulator 2 (ETS2) rodando em clientes desktops locais e transmitir esses dados em alta frequência com latência inferior a 500ms. O sistema precisava armazenar a trilha de coordenadas GPS de forma compacta (para alimentar mapas históricos) e transmitir o status atualizado do caminhão via WebSocket para painéis web e aplicativos de celular da comunidade, permitindo rankings de motoristas e acompanhamento em tempo real.

Arquitetura e Fluxo de Dados

Abaixo está ilustrado o fluxo de dados em tempo real. O cliente desktop extrai dados do SDK do jogo e os envia ao servidor central, que distribui para o ecossistema de visualização.

graph TD A[Euro Truck Simulator SDK] -->|Shared Memory| B[Cliente C# .NET Desktop Client] B -->|WebSocket Ingest / REST - JSON| C[API Telemetry Java / Spring Boot] C -->|Escrita Rápida Particionada| D[(PostgreSQL + TimescaleDB)] C -->|WebSocket Broker| E[Frontend Web React / Next.js] C -->|WebSocket Broker| F[App Mobile Flutter / Dart] E -->|Visualização de Viagens Vivas| G[Painel / Mapa em Tempo Real] F -->|Ranking & Recovery| H[Motorista / Empresa]

Componentes da Engenharia

Cliente Desktop (C#)

Desenvolvido em C# (.NET) para garantir acesso de baixo nível à memória compartilhada exposta pelo plugin do SDK do ETS2. Mantém uma fila resiliente em disco para empacotar eventos localmente e enviá-los de forma assíncrona mesmo diante de instabilidade de internet do usuário.

Servidor de Ingestão (Java)

Backend robusto escrito em Spring Boot. Processa pacotes de telemetria via endpoints HTTP rápidos e gerencia conexões WebSocket seguras via JWT. Os dados temporais (coordenadas GPS) são gravados em hypertables do TimescaleDB, otimizando escrita contínua.

Portal do Usuário (React)

Dashboard web dinâmico criado em React com Tailwind CSS. Exibe o mapa ao vivo das viagens em andamento com polyline da rota GPS, rankings da comunidade ordenados por XP por motorista e página de perfil público editável.

App Mobile (Flutter)

Aplicativo nativo compilado a partir de base Dart com Flutter. Permite aos membros de empresas virtuais monitorar suas viagens de qualquer lugar, acompanhar rankings de XP e receber alertas push quando viagens são finalizadas com sucesso ou incidentes são detectados.

Resultados e Aprendizados

A implementação da arquitetura distribuída obteve excelente estabilidade. O uso de hypertables no TimescaleDB reduziu o uso de disco das trilhas GPS em 45% comparado ao PostgreSQL puro, devido à indexação temporal avançada. A comunicação WebSocket integrada reduziu a latência percebida de sincronização para incríveis 120ms no painel web, tornando a visualização de mapas realmente dinâmica.

Precisa de integração de dados em tempo real semelhante?

Seja integrando software a dispositivos IoT, extraindo dados de SDKs locais em C# ou processando feeds rápidos com Java, posso ajudar a desenhar a melhor arquitetura.

Fale Comigo sobre Integrações