Le site arthur.bebou.netlib.re - retour accueil
git clone git://bebou.netlib.re/arthur.bebou
Log | Files | Refs |
commit 34d210284de05d3b54900860d997711103c30140 parent 855c183bcfbf06321f3b389ca9e1dc880a62b29b Auteurice: Arthur Pons <arthur.pons@unistra.fr> Date: Thu, 26 Jun 2025 20:52:56 +0200 Ajout article tron Diffstat:
M | contents/conditions-shell/index.sh | | | 2 | +- |
A | contents/tron/index.sh | | | 112 | +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
2 files changed, 113 insertions(+), 1 deletion(-)
diff --git a/contents/conditions-shell/index.sh b/contents/conditions-shell/index.sh @@ -1,7 +1,7 @@ #! page title: Quelques subtilités des conditions en shell author: Arthur Pons -description: "Le shell c'est bizarre et les conditions n'y échappent pas. Voyons quelques excentricités" +description: Le shell c'est bizarre et les conditions n\'y échappent pas. Voyons quelques excentricités publication: 2025-06-04 section: main diff --git a/contents/tron/index.sh b/contents/tron/index.sh @@ -0,0 +1,112 @@ +#! page +title: Tron, un jeu dans le terminal +author: Arthur Pons +description: Et multi-joueur à distance sans aucun code réseau +publication: 2025-06-26 + +section: main + + + +Dans le film [tron](https://en.wikipedia.org/wiki/Tron) les personnages jouent +à un jeu qui consiste à rouler sur des +[motos](https://en.wikipedia.org/wiki/Light_Cycle) qui produisent des murs de +lumière derrière elles et tenter de les éviter. Il y a pleins d'implémentations +numériques de ce jeu et j'en ajoute une de plus. + +Sauf que vu que je suis : + + * ☑️ Un écolo + * ☑️ Un bobo + * ☑️ Un citadin + +Les motos sont devenues des vélos. + +## Comment y jouer ? + +Vous pouvez y jouer en ligne, vous avez ssh et ne voulez rien modifier ou +installer : + + $ ssh -t guest@bebou.netlib.re -p1459 tron + +Vous voulez y jouer hors-ligne, vous avez un linux, vous me faite confiance et +vous n'avez pas de quoi compiler un programme et/ou vous ne voulez rien +modifier : + + $ curl -Ls http://arthur.bebou.netlib.re/tron > tron + $ chmod +x tron + $ sudo cp tron /usr/local/bin + $ tron + +Vous voulez y jouer hors-ligne, vous voulez modifier quelque chose ou vous êtes +à cheval sur la sécurité, vous avez un Unix avec un compilateur C, git et make : + + $ git clone git://bebou.netlib.re/tron + $ cd tron + $ make + $ sudo make install + $ tron + +## Avec quoi est-ce que ça a été fait ? + +J'utilise une version légèrement modifiée de +[termbox2](https://github.com/termbox/termbox2) parce qu'au moment où j'ai +commencé à m'y intéresser pour faire +[pipe-game](http://git.bebou.netlib.re/pipe-game/log.html) il avait un bug dans +sa gestion de l'utf8. Depuis je suis resté avec mon patch. Il est fourni dans +le dépôt git. + +Sinon c'est moins de 300 lignes de C vraiment nulles. Termbox est pas fait pour +faire des jeux vidéos donc ça gère pas bien le temps réel. Par exemple si vous +maintenez une direction enfoncée le jeu va avancer d'autant plus vite. Je ne +suis pas certain que termbox permette sans hack chelou d'empêcher cela. + +## Pourquoi ? + +Parce que j'aimais beaucoup ce jeu quand j'étais petit sur l'ipod touch d'un +camarade, qu'une [version multijoueur en ligne](http://sshtron.zachlatta.com/) +a poppé sur hackernews récemment mais que je la trouvais bof et que je voulais +voir si c'était difficile à reproduire ou pas. + +## Et si vous voulez jouer en multi en ligne ? + +Vous avez des copaines mais pas directement à côté de vous ? Vous voudriez +quand même pouvoir y jouer ensemble ? C'est possible. Sans aucune ligne de code +gérant le réseau. + +L'astuce est d'installer le jeu sur un serveur auquel vous avez accès, de vous +connecter au même compte et de vous logger sur la même session +[tmux](https://github.com/tmux/tmux). Vous allez voir la même chose et, +surtout, vous allez partager le même clavier. Vous pouvez donc jouer à tron +comme si vous étiez en local sur le même ordi avec la latence en plus. + +Ça fonctionne pas uuuuuultra bien mais si vous parvenez à avoir un terminal de +la même taille c'est franchement pas mal. Tmux est certainement overkill pour +ne faire *que* ça mais puisque c'est un outil déjà très courant sur les +serveurs unix pourquoi pas le mettre à profit ? + +Cette astuce est en quelque sorte le [cloud +gaming](https://en.wikipedia.org/wiki/Cloud_gaming) du pauvre. + +## Les petites bizarreries + +Puisque généralement la hauteur des cases de la grille d'un terminal n'est pas +égale à leur largeur les vélos se déplacent plus rapidement verticalement +qu'horizontalement. Ça rend le jeu un peu plus difficile à jouer. Soit on vit +avec soit on utilise une [police de caractère +carrée](https://strlen.com/square/) ! + +Il faut télécharger la font, l'installer sur son système puis lancer un +terminal avec la bonne font. Sur ma machine sur debian avec xfce : + + curl -Ls https://strlen.com/files/square.ttf > square.ttf + sudo mv square.ttf /usr/share/fonts/truetype/ + xfce4-terminal --geometry 80x40 --font=/usr/share/fonts/truetype/square.ttf --command tron + + + +A noter qu'en dessous d'une certaine taille j'ai une erreur obscure de +flottants en lançant le jeu dans `xfce4-terminal`. Je suppose que c'est parce +qu'avec une font carrée le terminal et termbox sont confus sur la taille. A +creuser. Avec un terminal suffisamment grand ça fonctionne 🤷