Doom sobre DNS: Lanzando el clásico shooter vía registros DNS
El desarrollador Adam Rice implementó la ejecución de la versión shareware de Doom exclusivamente a través de registros TXT de DNS en Cloudflare. El juego está comprimido en 1964 fragmentos, cargados mediante consultas DNS públicas, y se ejecuta en PowerShell 7 sin escribir el archivo WAD en disco. Las DLL del motor de juego .NET se cargan directamente en memoria. El proyecto elude las limitaciones de almacenamiento de archivos utilizando DNS como transporte para datos binarios.
Instalación y ejecución
Para ejecutarlo, necesitas PowerShell 7 y un token de API de Cloudflare con permisos para editar zonas DNS.
- Instala PowerShell 7:
winget install Microsoft.PowerShell - Configura las credenciales de Cloudflare: usa el módulo TXTRecords y el comando
Set-CFCredential. - Ejecuta el juego:
\.\Start-DoomOverDNS.ps1 -PrimaryZone 'example.com'
El script carga los datos automáticamente mediante Resolve-DNSName. Una zona gratuita de Cloudflare contiene 185 fragmentos; Pro/Business/Enterprise hasta 3400. El archivo WAD requiere ~1199 fragmentos.
# Ejemplo de ejecución con múltiples zonas para una cuenta gratuita
.\Start-DoomOverDNS.ps1 -Zones @('zone1.com', 'zone2.com', 'zone3.com')
Colocando datos en zonas DNS
El proyecto divide el WAD comprimido en registros TXT. Para cuentas gratuitas, se necesitan múltiples dominios — el módulo distribuye los fragmentos automáticamente. En una zona Pro, cabe todo el juego.
Reanudación de descarga:
- El comando
Publish-TXTStripe -Resumeverifica los hashes de fragmentos. - Continúa desde el último bloque válido, evitando retransmisiones.
Los límites de registros TXT (RFC 1035) se ignoran: DNS se usa como almacenamiento distribuido con caché global en los nodos edge de Cloudflare.
| Tipo de zona | Fragmentos | Suficiente para Doom |
|--------------|------------|----------------------|
| Free | 185 | No (se necesitan 7+ zonas) |
| Pro | 3400 | Sí (juego completo) |
Detalles técnicos de compresión y descompresión
El archivo WAD está comprimido para minimizar los tamaños de registros TXT. El script de PowerShell descomprime los datos sobre la marcha durante la ejecución. Sin almacenamiento local — todas las operaciones en memoria.
Componentes clave del módulo TXTRecords:
Publish-TXTStripe: publicación de fragmentos con soporte para reanudación.Set-CFCredential: configuración del token de API.- Integración con
Resolve-DNSNamepara consultas públicas.
El proyecto demuestra las capacidades de DNS para transmitir datos binarios arbitrarios, eludiendo las limitaciones típicas del protocolo.
Puntos clave
- Doom se ejecuta sin archivos en disco: WAD y DLL cargadas en memoria desde TXT de DNS.
- Requiere ~1199 fragmentos para WAD; zonas gratuitas de Cloudflare — 185 fragmentos.
- Soporta reanudación de descarga mediante hashes de fragmentos.
- Usa PowerShell 7 y consultas DNS públicas sin servidor personalizado.
- Escala a cuentas Pro: una zona para el juego completo.
— Editorial Team
Aún no hay comentarios.