Представлен проект cURL Doom — версия Doom, которая воспроизводится по сети через cURL
Разработчик под ником Sawyer X представил открытый проект cURL Doom. Это рабочая версия игры в Doom, которая воспроизводится по сети через утилиту cURL.
«Это HTTP‑сервер, отображающий кадры Doom в виде полублоков ANSI (ANSI half‑blocks), передаваемых в терминал по HTTP с помощью cURL Не требует установки, не требует зависимостей, кроме curl и bash», — пояснил создатель проекта.
Разработчик проекта представил два варианта запуска игры:
простой способ: через curl | bash: "curl -sL http://localhost:3000 | bash". Как это работает? GET / — это согласование содержимого: curl возвращает play.sh с SERVER, переписанным на хост, с которого был получен файл. Скрипт запускает цикл /tick для каждого нажатия клавиши, обрабатывает stty, альтернативный экран, курсор и очистку. Браузер, обращающийся к тому же URL, получает небольшую целевую страницу, на которой отображается только одна строка кода.
мазохистский способ: чистый curl, без зацикливания оболочки: "stty -echo -icanon min 1 time 0 && curl -sN -X POST -T - localhost:3000/play". «Один потоковый HTTP‑запрос, два направления: нажатия клавиш идут вверх по телу запроса, ANSI‑кадры идут вниз по телу ответа. Никакой обертки для зацикливания клавиш, никакого обмена данными между нажатиями клавиш. Это просто одно TCP‑соединение, выполняющее обе части одновременно. Подвох в том, что оболочка обычно переводит терминал в режим „готового ввода“, который (а) буферизует стандартный ввод, так что curl не видит клавишу, пока вы не нажмёте Enter, и (б) выводит все, что вы вводите, поверх кадров. Поэтому сначала нужно перевести терминал в режим „сырого ввода“, а затем вернуть его обратно, когда закончите. Отсюда и команда stty перед curl и необходимость вызова reset для правильной установки», —
Читать на habr.com