LeoTube
grabación en camino

Nebula Crash — autos chocones espaciales, sin armas, solo impacto

— visualizacionesen vivo

Jugar ↗

Leo Brando

@leo_brando_

Multijugador masivo en tiempo real en un sistema estelar

Abres la URL, escribes un nombre, pulsas JUGAR y estás pilotando una nave low-poly por un sistema estelar compartido en menos de diez segundos. Sin registro, sin login — en el espíritu de fly.pieter.com.

No hay armas. Solo pilotar y chocar: el que impacta más rápido destruye al otro.

Un monorepo con tres paquetes y una única fuente de verdad de física y protocolo en shared/, de modo que la predicción del cliente calza exactamente con el servidor autoritativo.

· Servidor — Node + TypeScript vía tsx, física a 20 Hz y snapshots a 20 Hz. Procesa cada input con su propio dt para reconciliación exacta, aplica efectos ambientales (calor solar, gravity assist, overcharge de cinturón, wormholes), resuelve colisiones entre jugadores, asteroides y NPCs, y construye snapshots delta por cliente con interest management (spatial hashing de 4 km, radio de 8 km). · El transporte está abstraído — ws + http de Node por defecto para que siempre arranque, con uWebSockets.js como drop-in opcional para escalar (TRANSPORT=uws). Ambos comparten las mismas rutas HTTP. · Protocolo binario — opcode de 1 byte más payload, posición cuantizada a int16 relativa al chunk, rotación como quaternion smallest-three en 32 bits, y delta compression que solo envía los campos que cambiaron, con spawns y removidos explícitos. · Cliente — Three.js + Vite. Predicción y reconciliación por número de secuencia, buffer de interpolación de 100 ms para los remotos, InstancedMesh para 2.500 asteroides, LOD en planetas, partículas con pooling, calidad auto-ajustable, HUD con radar esférico y minimapa, y audio procedural vía Web Audio. · Redis sostiene los leaderboards (diario, semanal e histórico con TTL), los contadores de ads y los referidos — con un stub en memoria tras la misma interfaz cuando no hay Redis. · El sharding existe como interfaces; el MVP corre en un solo nodo.

  • Three.js
  • Node + TS
  • binary protocol
  • Redis
  • uWebSockets.js

1 comentario

  • @javier hace 2 meses

    smallest-three para la rotación, buena

    7