# 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.
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í.
# 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 |
|--------|----------|-------------|-------------|
| 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
Zatím žádné komentáře.