# # Doom via cURL : Jeu côté serveur dans le terminal sans dépendances
Le développeur Sawyer X a publié le projet cURL Doom — un serveur HTTP qui rend les frames de Doom en demi-blocs ANSI et les envoie au terminal via le réseau avec cURL. La solution fonctionne sans installer aucun logiciel, ne nécessitant que curl et bash. Elle supporte deux modes de lancement : un simplifié avec un script bash et un pur streaming curl.
Mécanisme de lancement simple
Dans la version simple, la commande curl -sL http://localhost:3000 | bash est utilisée. Une requête GET à la racine retourne le script play.sh avec l'hôte SERVER substitué. Le script configure une boucle :
- Requêtes à /tick pour chaque appui de touche.
- Gestion de stty pour l'entrée raw.
- Passage à l'écran alternatif.
- Contrôle du curseur et effacement du terminal.
Un navigateur à la même URL voit une page minimale avec une ligne de code.
Mode streaming sans shell
Pour l'approche « masochiste » : stty -echo -icanon min 1 time 0 && curl -sN -X POST -T - localhost:3000/play. C'est un flux bidirectionnel :
- Les appuis de touche sont envoyés vers le haut via le corps de la requête POST.
- Les frames ANSI descendent via la réponse.
Une seule connexion TCP sans boucles intermédiaires. Problèmes standards du terminal :
- Bufférisation de stdin jusqu'à Entrée.
- Écho de l'entrée sur les frames.
Solution : stty passe en mode raw. À la fin — reset pour restaurer.
# Exemple de terminal en mode raw
stty -echo -icanon min 1 time 0
curl -sN -X POST -T - localhost:3000/play
reset
Contexte des ports Doom inhabituels
Le projet s'inscrit dans une série d'expériences exécutant Doom sur des protocoles non standards.
- cssDoom (Nils Lenheer) : rendu via CSS sans canvas/WebGL. Logique en JS, base — source originale d'id Software (GPLv2). Graphismes : éléments div avec transform et preserve-3d pour l'espace 3D, sprites, textures, effets.
- Doom Over DNS (Adam Rice, mars 2026) : version .NET via enregistrements DNS TXT de Cloudflare. WAD compressé en ~1964 enregistrements, décompression à la volée en PowerShell. Pas d'écritures sur disque, DLLs chargées en mémoire. Contredit les attentes de RFC 1035 mais fonctionne globalement avec mise en cache.
| Projet | Protocole | Dépendances | Fonctionnalités |
|--------|-----------|-------------|-----------------|
| cURL Doom | HTTP/cURL | curl, bash | Demi-blocs ANSI, bidirectionnel |
| cssDoom | CSS/JS | Navigateur | 3D via transform |
| Doom Over DNS | DNS TXT | PowerShell | Pas d'écritures disque, cache global |
Détails techniques du serveur
Le serveur génère les frames Doom en temps réel, les convertit en demi-blocs ANSI pour le terminal. Supporte la gestion d'entrée sans latence. Le code est open-source, disponible pour fork et expériences avec rendu réseau.
Points clés :
- Dépendances minimales : seulement curl/bash, pas de compilation ni bibliothèques.
- Deux modes : scripté pour la commodité, streaming pour la pureté du protocole.
- Les demi-blocs ANSI offrent un rendu décent dans un terminal 80x24.
- Dans le contexte : démontre la flexibilité de Doom pour les protocoles réseau.
Le projet est utile pour étudier les interactions réseau de bas niveau, les protocoles de terminal, et le développement de jeux minimalistes.
— Editorial Team
Aucun commentaire pour le moment.