Zpět na domů

cURL Doom: hra Doom přes HTTP v terminálu

Projekt cURL Doom umožňuje hrát Doom přes HTTP a cURL v terminálu s ANSI half-blocks. Popsány dva režimy spuštění, technické nuancí raw input. Srovnání s cssDoom a Doom Over DNS.

Spouštění Doom přes cURL: server a terminál
Advertisement 728x90

# Doom přes cURL: serverová hra v terminálu bez závislostí

Vývojář Sawyer X vydal projekt cURL Doom — HTTP server, který renderuje snímky Doom v ANSI half-blocks a přenáší je do terminálu přes síť pomocí cURL. Řešení funguje bez instalace softwaru, vyžaduje pouze curl a bash. Podporuje dva režimy spuštění: zjednodušený s bash skriptem a čistý streamový curl.

Mechanismus jednoduchého spuštění

V jednoduché variantě se používá příkaz curl -sL http://localhost:3000 | bash. GET požadavek na kořen vrací skript play.sh s dosazeným SERVER hostem. Skript organizuje smyčku:

  • Požadavky na /tick při každém stisku klávesy.
  • Zpracování stty pro syrový vstup.
  • Přepnutí alternativní obrazovky.
  • Řízení kurzoru a čištění terminálu.

Prohlížeč na stejné URL vidí minimální stránku s jedním řádkem kódu.

Google AdInline article slot

Streamový režim bez shellu

Pro „mazochistický“ přístup: stty -echo -icanon min 1 time 0 && curl -sN -X POST -T - localhost:3000/play. Jedná se o obousměrný proud:

  • Stisky kláves se přenáší nahoru tělem POST požadavku.
  • ANSI snímky přicházejí dolů odpovědí.

Jedno TCP spojení bez mezi cykly. Problémy standardního terminálu:

  • Bufferování stdin do Enteru.
  • Echo vstupu přes snímky.

Řešení: stty přepne do raw módu. Na konci — reset pro obnovení.

Google AdInline article slot
# Příklad terminálu v raw módu
stty -echo -icanon min 1 time 0
curl -sN -X POST -T - localhost:3000/play
reset

Kontext neobvyklých portů Doom

Projekt zapadá do série experimentů se spouštěním Doom na nestandardních protokolech.

  • cssDoom (Nils Lenheer): renderování přes CSS bez canvas/WebGL. Logika v JS, základ — původní zdrojový kód id Software (GPLv2). Grafika: div prvky s transform a preserve-3d pro 3D prostor, sprity, textury, efekty.
  • Doom Over DNS (Adam Rice, březen 2026): .NET verze přes DNS TXT záznamy Cloudflare. WAD zkomprimován do ~1964 záznamů, dekomprese za letu v PowerShell. Bez zápisu na disk, DLL se načítají do paměti. Porušuje očekávání RFC 1035, ale funguje globálně s cachováním.

| Projekt | Protokol | Závislosti | Vlastnosti |

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

Google AdInline article slot

| cURL Doom | HTTP/cURL | curl, bash | ANSI half-blocks, bidirectional |

| cssDoom | CSS/JS | Prohlížeč | 3D přes transform |

| Doom Over DNS | DNS TXT | PowerShell | Bez disku, globální cache |

Technické detaily serveru

Server generuje snímky Doom v reálném čase, konvertuje je do ANSI half-blocks pro terminál. Podporuje zpracování vstupu bez zpoždění. Kód je otevřený, dostupný pro fork a experimenty se síťovým renderováním.

Co je důležité:

  • Minimální závislosti: pouze curl/bash, žádná kompilace ani knihovny.
  • Dva režimy: skriptový pro pohodlí, streamový pro čistotu protokolu.
  • ANSI half-blocks zajišťují přijatelný rendering v 80x24 terminálu.
  • V kontextu: demonstruje flexibilitu Doom pro síťové protokoly.

Projekt je užitečný pro studium nízkourovňového síťového styku, terminálových protokolů a minimalistického gamedevu.

— Editorial Team

Advertisement 728x90

Číst dál