Volver al inicio

cURL Doom: Juego Doom vía HTTP en la terminal

El proyecto cURL Doom permite jugar Doom vía HTTP y cURL en la terminal con medio-bloques ANSI. Se describen dos modos de lanzamiento, matices técnicos de entrada raw. Comparación con cssDoom y Doom Over DNS.

Ejecutando Doom vía cURL: servidor y terminal
Advertisement 728x90

# Doom vía cURL: Juego del lado del servidor en la terminal sin dependencias

El desarrollador Sawyer X ha lanzado el proyecto cURL Doom —un servidor HTTP que renderiza fotogramas de Doom en bloques medios ANSI y los envía a la terminal a través de la red mediante cURL. La solución funciona sin instalar ningún software, solo requiere curl y bash. Soporta dos modos de lanzamiento: uno simplificado con un script bash y un curl de streaming puro.

Mecanismo de lanzamiento simple

En la versión simple, se usa el comando curl -sL http://localhost:3000 | bash. Una solicitud GET a la raíz devuelve el script play.sh con el host SERVER sustituido. El script configura un bucle:

  • Solicitudes a /tick por cada pulsación de tecla.
  • Manejo de stty para entrada raw.
  • Cambio a pantalla alternativa.
  • Control de cursor y limpieza de terminal.

Un navegador en la misma URL ve una página mínima con una línea de código.

Google AdInline article slot

Modo de streaming sin shell

Para el enfoque «masoquista»: stty -echo -icanon min 1 time 0 && curl -sN -X POST -T - localhost:3000/play. Se trata de un flujo bidireccional:

  • Las pulsaciones de tecla se envían hacia arriba a través del cuerpo de la solicitud POST.
  • Los fotogramas ANSI bajan a través de la respuesta.

Una sola conexión TCP sin bucles intermedios. Problemas estándar de terminal:

  • Buffering de stdin hasta Enter.
  • Eco de entrada sobre los fotogramas.

Solución: stty cambia a modo raw. Al final —reset para restaurar.

Google AdInline article slot
# Ejemplo de terminal en modo raw
stty -echo -icanon min 1 time 0
curl -sN -X POST -T - localhost:3000/play
reset

Contexto de puertos inusuales de Doom

El proyecto encaja en una serie de experimentos para ejecutar Doom en protocolos no estándar.

  • cssDoom (Nils Lenheer): renderizado vía CSS sin canvas/WebGL. Lógica en JS, base —código fuente original de id Software (GPLv2). Gráficos: elementos div con transform y preserve-3d para espacio 3D, sprites, texturas, efectos.
  • Doom Over DNS (Adam Rice, marzo 2026): versión .NET vía registros TXT de DNS de Cloudflare. WAD comprimido en ~1964 registros, descompresión sobre la marcha en PowerShell. Sin escrituras en disco, DLLs cargadas en memoria. Viola las expectativas de RFC 1035 pero funciona globalmente con caché.

| Proyecto | Protocolo | Dependencias | Características |

|--------|----------|-------------|----------|

Google AdInline article slot

| cURL Doom | HTTP/cURL | curl, bash | Bloques medios ANSI, bidireccional |

| cssDoom | CSS/JS | Navegador | 3D vía transform |

| Doom Over DNS | DNS TXT | PowerShell | Sin escrituras en disco, caché global |

Detalles técnicos del servidor

El servidor genera fotogramas de Doom en tiempo real, los convierte a bloques medios ANSI para la terminal. Soporta manejo de entrada sin retrasos. El código es de código abierto, disponible para bifurcar y experimentar con renderizado en red.

Puntos clave:

  • Dependencias mínimas: solo curl/bash, sin compilación ni librerías.
  • Dos modos: script para comodidad, streaming para pureza de protocolo.
  • Los bloques medios ANSI ofrecen un renderizado decente en una terminal 80x24.
  • En contexto: demuestra la flexibilidad de Doom para protocolos de red.

El proyecto es útil para estudiar interacciones de red de bajo nivel, protocolos de terminal y desarrollo de juegos minimalistas.

— Editorial Team

Advertisement 728x90

Leer después