Zurück zur Startseite

cURL Doom: Doom-Spiel über HTTP im Terminal

cURL Doom-Projekt ermöglicht das Spielen von Doom über HTTP und cURL im Terminal mit ANSI-Halbblöcken. Zwei Startmodi beschrieben, technische Nuancen des Raw-Inputs. Vergleich mit cssDoom und Doom Over DNS.

Doom über cURL ausführen: Server und Terminal
Advertisement 728x90

Doom via cURL: Server-seitiges Spiel im Terminal ohne Abhängigkeiten

Entwickler Sawyer X hat das cURL Doom-Projekt veröffentlicht — einen HTTP-Server, der Doom-Frames in ANSI-Halbblöcken rendert und sie über das Netzwerk via cURL ans Terminal sendet. Die Lösung läuft ohne jegliche Softwareinstallation, benötigt nur curl und bash. Sie unterstützt zwei Startmodi: einen vereinfachten mit einem bash-Skript und einen reinen Streaming-curl.

Einfacher Startmechanismus

In der einfachen Variante wird der Befehl curl -sL http://localhost:3000 | bash verwendet. Eine GET-Anfrage an die Root-URL gibt das play.sh-Skript mit dem ersetzten SERVER-Host zurück. Das Skript richtet eine Schleife ein:

  • Anfragen an /tick für jede Tastatureingabe.
  • stty-Behandlung für Raw-Input.
  • Wechsel zum alternativen Bildschirm.
  • Cursorsteuerung und Terminal-Löschung.

Ein Browser unter derselben URL zeigt eine minimale Seite mit einer einzigen Codezeile.

Google AdInline article slot

Streaming-Modus ohne Shell

Für den „masochistischen“ Ansatz: stty -echo -icanon min 1 time 0 && curl -sN -X POST -T - localhost:3000/play. Dies ist ein bidirektionaler Stream:

  • Tastatureingaben werden über den POST-Request-Body hochgesendet.
  • ANSI-Frames kommen über die Response herunter.

Eine einzige TCP-Verbindung ohne Zwischenschleifen. Typische Terminalprobleme:

  • stdin-Buffering bis Enter.
  • Input-Echo über die Frames.

Lösung: stty schaltet in den Raw-Modus. Am Ende — reset zur Wiederherstellung.

Google AdInline article slot
# Beispiel für Terminal im Raw-Modus
stty -echo -icanon min 1 time 0
curl -sN -X POST -T - localhost:3000/play
reset

Kontext ungewöhnlicher Doom-Ports

Das Projekt reiht sich in eine Serie von Experimenten ein, die Doom auf unkonventionellen Protokollen laufen lassen.

  • cssDoom (Nils Lenheer): Rendering via CSS ohne canvas/WebGL. Logik in JS, Basis — originaler id Software-Quellcode (GPLv2). Grafik: div-Elemente mit transform und preserve-3d für 3D-Raum, Sprites, Texturen, Effekte.
  • Doom Over DNS (Adam Rice, March 2026): .NET-Version via Cloudflare DNS TXT-Records. WAD komprimiert in ~1964 Records, Dekompression on-the-fly in PowerShell. Keine Festplattenschreibvorgänge, DLLs werden in den Speicher geladen. Verletzt Erwartungen aus RFC 1035, funktioniert aber global mit Caching.

| Projekt | Protokoll | Abhängigkeiten | Funktionen |

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

Google AdInline article slot

| cURL Doom | HTTP/cURL | curl, bash | ANSI-Halbblöcke, bidirektional |

| cssDoom | CSS/JS | Browser | 3D via transform |

| Doom Over DNS | DNS TXT | PowerShell | Keine Festplattenschreibvorgänge, globaler Cache |

Technische Serverdetails

Der Server erzeugt Doom-Frames in Echtzeit, wandelt sie in ANSI-Halbblöcke für das Terminal um. Er unterstützt lag-freie Eingabebehandlung. Der Code ist Open-Source und steht zum Forken und Experimentieren mit Netzwerk-Rendering zur Verfügung.

Wichtige Punkte:

  • Minimale Abhängigkeiten: nur curl/bash, keine Kompilation oder Bibliotheken.
  • Zwei Modi: Skript für Bequemlichkeit, Streaming für Protokollreinheit.
  • ANSI-Halbblöcke sorgen für ordentliches Rendering in einem 80x24-Terminal.
  • Im Kontext: Zeigt die Flexibilität von Doom bei Netzwerkprotokollen.

Das Projekt eignet sich hervorragend zum Studium von Low-Level-Netzwerkinteraktionen, Terminalprotokollen und minimalistischer Spieleentwicklung.

— Editorial Team

Advertisement 728x90

Weiterlesen