Un clone de DOOM en COBOL ça vous dit ?
Un développeur connu sous le pseudonyme icitry s’est posé une question que personne de sensé ne formule jamais, peut-on coder un jeu de tir à la première personne en COBOL ? La réponse, contre toute attente, est oui, et le résultat est même tout à fait jouable.
Pour ceux que ce nom laisse de marbre, COBOL, pour Common Business Oriented Language, est un langage né en 1959 qui fait encore tourner aujourd’hui une partie des mainframes chargés de vos virements bancaires et de la paie. C’est l’outil de la gestion et des relevés de compte, à peu près l’inverse de ce qu’on imagine pour un jeu vidéo.
Le moteur du jeu repose sur le raycasting, cette technique qui a propulsé Wolfenstein 3D au début des années 90. Le programme projette une rangée de rayons depuis le point de vue du joueur, regarde où chacun vient percuter un mur, et en déduit colonne par colonne la hauteur à dessiner. De la fausse 3D reconstruite à partir d’un simple plan vu de dessus.
Le vrai casse-tête, c’est que COBOL n’embarque aucune bibliothèque graphique, pas la moindre fonction pour allumer un pixel ou ouvrir une fenêtre. La parade est astucieuse. Le programme calcule lui-même chaque image, en recrache les pixels bruts sur la sortie standard du terminal, puis laisse un petit utilitaire nommé ffplay récupérer ce flux pour l’afficher comme une vidéo animée.
Même esprit de débrouille pour les commandes. Le terminal bascule en mode brut afin d’intercepter chaque touche sans attendre que vous validiez, pendant que le programme lit en continu ce qui arrive sur son entrée standard.
Et le rendu ne se limite pas à trois murs gris qui clignotent. On y trouve des sprites, des ennemis qui se baladent et vous tirent dessus, et même des secteurs de hauteur variable qui rapprochent l’ensemble du DOOM de 1993 plutôt que de son aîné Wolfenstein.
Le code complet est publié sur GitHub sous licence Apache, libre à chacun d’aller en fouiller les coulisses. Un internaute a d’ailleurs relevé que GnuCOBOL, le compilateur libre utilisé ici, sait parfaitement appeler du code écrit en langage C, ce qui ouvrirait l’accès à tout son arsenal de bibliothèques.
Toute la démonstration sert à rappeler que COBOL est Turing-complet, c’est-à-dire capable en théorie de calculer exactement la même chose que n’importe quel langage moderne, et à le prouver sur le terrain le plus hostile qu’on puisse lui opposer.
Bref, c’est rigoureusement inutile, et c’est très exactement pour ça que c’est cool.
Source :
Hackaday

Leave a Comment