Loading...
Loading...
Can It Resolve Doom? Game Engine in 2k DNS Records
A developer built a clever HTTP server that streams a playable DOOM instance to a terminal using only curl and bash, rendering frames as ANSI half-blocks. Clients GET a play.sh bootstrap or POST a bidirectional /play stream where keystrokes flow in the request body and ANSI frames stream back, enabling single-connection interactive play; a shell wrapper handles raw-mode stty, alternate screen, and cleanup. The server runs one doomgeneric process per session, communicates with it via pipes, virtualizes its clock for responsiveness, and downsamples 640×400 BGRA frames to terminal resolution; defaults aim for 15 fps to avoid kernel buffer bursts. This demonstrates creative use of HTTP streaming, terminal I/O, and low-dependency remote interactivity.
A developer built a clever HTTP server that streams playable DOOM to a terminal via curl, using ANSI half-blocks for frames and a single bidirectional HTTP connection to carry keystrokes and video. Clients can run a provided play.sh or use raw curl with stty to toggle terminal raw mode; the server maintains one doomgeneric process per session, accepts key events, advances the virtual clock, and sends down frames (downsampled from 640×400 BGRA). It defaults to 15 fps to avoid kernel send-buffer bursts when stdin is idle, but fps, cols and rows are configurable. The approach requires only curl and bash and demonstrates low-dependency remote interactive streaming over plain HTTP. This matters as a novel, minimal demo of interactive terminal streaming and multiplexed stdin/stdout over HTTP for developer tools and retro gaming.
Doom, Played over Curl
DOOM, played over cURL
Can It Resolve Doom? Game Engine in 2k DNS Records