Sobre el proyecto
singedTerra es un juego de artillería por turnos basado en el navegador, escrito desde cero en TypeScript, presentado como un homenaje a Scorched Earth (1991) de Wendell Hicken. Mantiene el ciclo clásico: elegir un ángulo, leer el viento, definir la potencia y disparar, mientras el terreno registra las consecuencias. Se puede jugar en partidas locales de 2 a 4 jugadores en un solo navegador o en línea a través de salas públicas y privadas de Supabase.
Mecánicas principales. El terreno es un mapa de bits por píxel: las explosiones crean agujeros reales, el suelo sin soporte colapsa, los tanques se asientan en los cráteres y las armas de tipo tierra pueden construir nuevas coberturas. Cada ronda tiene una semilla y cada turno recibe un vector de viento determinista, por lo que cada cliente resuelve la misma trayectoria de vuelo. Dieciséis armas cubren fuego directo, explosiones aéreas, explosivos rebotantes, napalm, construcción de terreno, tunelización y defensa. El movimiento consume combustible, y el daño otorga créditos que deben distribuirse entre munición, escudos, baterías y combustible a lo largo de partidas de varias rondas. La presentación incluye tanques diseñados, un campo de batalla al atardecer, instrumentos balísticos, iluminación de impacto, sacudida de pantalla y audio sintetizado.
Garaje de tanques. Cada puesto tiene un Garaje: los jugadores comienzan con los chasis Foundry, Ranger, Bulwark o Jackal y combinan piezas de movilidad, casco, torreta y cañón en una silueta personalizada, que aparece en la vista previa de la lista y se traslada a la partida.
Modos y netcode. Los puestos controlados por computadora utilizan la misma física determinista que los jugadores humanos, y los modos locales y en línea no utilizan físicas diferentes. El modo local ejecuta el motor compartido directamente en el navegador a través de HotSeatClient. Para el juego en línea, cada navegador ejecuta su propia copia del mismo motor: Supabase valida las acciones de la sala, asigna números de secuencia, almacena el registro ordenado y transmite las filas confirmadas a través de Realtime. La partida en línea canónica es una semilla más un registro de acciones ordenadas; el estado del juego se reconstruye localmente en lugar de transmitirse desde un servidor, lo que hace que los pasos de tiempo fijos, la aleatoriedad basada en semillas y la paridad de repetición sean parte del contrato de diseño.
Controles. Las teclas de flecha apuntan el cañón y aumentan o disminuyen la potencia; A y D mueven y consumen combustible; Q cicla el arma seleccionada; Espacio o Enter dispara o activa el escudo seleccionado; G alterna la guía de trayectoria; M silencia o restaura el audio sintetizado; mantener F adelanta el disparo actual localmente. Los diseños táctiles reemplazan el teclado con un Command Deck agrupado que cubre Apuntado, Potencia y Conducción, mientras que Arma y Menú son utilidades y Disparo, Almacén, combustible y Arsenal permanecen en el riel táctico. En escritorio, arrastrar hacia afuera desde el tanque activo establece el ángulo y la potencia sin disparar.
Ejecución y verificación. El proyecto requiere Node 24.15 o posterior dentro de la línea Node 24 LTS, además de npm; npm install seguido de npm run dev sirve el cliente Vite en localhost:5173, y el juego local no necesita configuración de backend. El juego en línea requiere VITE_SUPABASE_URL y VITE_SUPABASE_ANON_KEY en client/.env; se espera que la clave anon se envíe en el cliente público, mientras que la Seguridad a Nivel de Fila (RLS) y la validación de Edge Function protegen los datos del servidor. Los comandos de verificación incluyen npm run check (verificación de tipos más arneses del motor determinista), npm run test:client (pruebas de cliente Vitest y DOM), npm run check:edge (pruebas de Deno para Supabase Edge Functions), npm run test:e2e (verificaciones de diseño y juego en Chromium de producción) y npm run build. La CI ejecuta las mismas puertas principales en cada pull request, y los cambios en shared/src/engine/ deben preservar la repetición determinista.
Diseño del repositorio y documentación. client/ contiene la aplicación Vite, renderizadores de Canvas, HUD HTML, entrada y lobby; shared/ contiene el motor determinista, la lógica de repetición y los tipos compartidos; supabase/ contiene migraciones de Postgres y árbitros de Edge Function sin estado; scripts/checks/ contiene el motor determinista y los arneses de contrato; e2e/ contiene las salvaguardas de diseño y juego en navegador de producción; docs/ contiene registros de jugador, arquitectura, desarrollo y proyecto. La documentación cubre el juego, la arquitectura, el desarrollo y las operaciones, el sistema de UI y la especificación actual. El proyecto se publica bajo la Licencia MIT y no está afiliado ni respaldado por los autores originales de Scorched Earth.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.