Saltar al contenido

Ghostline

Unity WebGL + Cloudflare Workers

Time-trial en el navegador: compites contra el récord de la pista y contra tu propia mejor vuelta. El juego no decide nada — cada tiempo pasa por un backend propio en Cloudflare Workers que lo valida con checks del lado del servidor, idempotencia y rate limiting antes de publicarlo en el leaderboard. Los dos repos son públicos: el del juego en C# y el de la API en TypeScript.

  • Unity
  • C#
2
Repos públicos: juego (C#) y API (TypeScript)

La historia

Problema

Un portafolio de simulación se apoya casi siempre en video: se ve el resultado, nunca el criterio. Quise poner encima de la mesa un sistema completo que cualquiera pudiera abrir, jugar y auditar.

Solución

Construí un juego público de punta a punta: time-trial en Unity WebGL contra el ghost del récord de la pista, con un backend en Workers que valida cada tiempo por cotas, con idempotencia y rate limiting en Durable Objects.

Resultado

Un demo jugable desde el enlace, un leaderboard en vivo por WebSocket y el repo de la API abierto donde el criterio se puede auditar commit a commit.

Los sistemas que construí en el motor

Desarrollador Unity

Juego WebGL con ghost replay

Vehículo arcade con suspensión por raycast, grabación de trails cuantizados y reproducción del ghost del récord, en seis assemblies con dependencias dirigidas.

Circuito de GhostlineLas eses del circuito durante una vuelta cronometrada.

Time-trial en el navegador con leaderboard verificado en el edge.

Ghostline

Las dos mitades juntas, no por separado

No es «sé Unity» ni «sé backend» cada uno por su lado: es un cliente de juego en tiempo real sostenido por el mismo tipo de infraestructura de servidor que ya opero en producción. El demo tiene que hacer visible esa combinación en menos de 60 segundos para quien abra el link.

Jugable

El juego es deliberadamente simple; la profundidad está en el pipeline. Abres el link y ya estás corriendo, sin instalar nada. Con jugar un minuto ya viste de qué va el proyecto.

Cliente hostil

Los endpoints son públicos y el payload se lee en el bundle de JavaScript: cualquiera puede saltarse el juego y llamar la API con datos fabricados. No prometo un anti-cheat perfecto; prometo decir con claridad qué cubre y qué no.

Producción real

Idempotencia dentro de un Durable Object, rate limiting, validación server-side, observabilidad. La misma garantía que da el lock distribuido en Redis de Mecánica MX, con otra tecnología debajo: el patrón se transfiere, la infraestructura no.

El trail reconstruye la vuelta

10 muestras por segundo de posición, yaw y velocidad — suficiente para reconstruir el ritmo real de la vuelta sin guardar más que un puñado de KB por run.

050100150190km/h0:00.0000:14.9120:34.1160:45.1861:02.481S1 · frenadaS2 · precisiónS3 · tracciónS4 · salida
Ver la landing completa de Ghostline
Siguiente proyecto

ViLab

Serious game de laboratorio · VR y PC · tutorial, quests y fail-state

ViLab