# 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.
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.
# 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 |
|--------|----------|-------------|----------|
| 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
Aún no hay comentarios.