Le site arthur.bebou.netlib.re - retour accueil
git clone git://bebou.netlib.re/arthur.bebou
Log | Files | Refs |
index.sh (4745B)
1 #! page 2 title: Tron, un jeu dans le terminal 3 author: Arthur Pons 4 description: Et multi-joueur à distance sans aucun code réseau 5 publication: 2025-06-26 6 7 section: main 8 9  10 11 Dans le film [tron](https://en.wikipedia.org/wiki/Tron) les personnages jouent 12 à un jeu qui consiste à rouler sur des 13 [motos](https://en.wikipedia.org/wiki/Light_Cycle) qui produisent des murs de 14 lumière derrière elles et tenter de les éviter. Il y a pleins d'implémentations 15 numériques de ce jeu et j'en ajoute une de plus. 16 17 Sauf que vu que je suis : 18 19 * ☑️ Un écolo 20 * ☑️ Un bobo 21 * ☑️ Un citadin 22 23 Les motos sont devenues des vélos. 24 25 ## Comment y jouer ? 26 27 Vous pouvez y jouer en ligne, vous avez ssh et ne voulez rien modifier ou 28 installer : 29 30 $ ssh -t guest@bebou.netlib.re -p1459 tron 31 32 Vous voulez y jouer hors-ligne, vous avez un linux, vous me faite confiance et 33 vous n'avez pas de quoi compiler un programme et/ou vous ne voulez rien 34 modifier : 35 36 $ curl -Ls http://arthur.bebou.netlib.re/tron > tron 37 $ chmod +x tron 38 $ sudo cp tron /usr/local/bin 39 $ tron 40 41 Vous voulez y jouer hors-ligne, vous voulez modifier quelque chose ou vous êtes 42 à cheval sur la sécurité, vous avez un Unix avec un compilateur C, git et make : 43 44 $ git clone git://bebou.netlib.re/tron 45 $ cd tron 46 $ make 47 $ sudo make install 48 $ tron 49 50 ## Avec quoi est-ce que ça a été fait ? 51 52 J'utilise une version légèrement modifiée de 53 [termbox2](https://github.com/termbox/termbox2) parce qu'au moment où j'ai 54 commencé à m'y intéresser pour faire 55 [pipe-game](http://git.bebou.netlib.re/pipe-game/log.html) il avait un bug dans 56 sa gestion de l'utf8. Depuis je suis resté avec mon patch. Il est fourni dans 57 le dépôt git. 58 59 Sinon c'est moins de 300 lignes de C vraiment nulles. Termbox est pas fait pour 60 faire des jeux vidéos donc ça gère pas bien le temps réel. Par exemple si vous 61 maintenez une direction enfoncée le jeu va avancer d'autant plus vite. Je ne 62 suis pas certain que termbox permette sans hack chelou d'empêcher cela. 63 64 ## Pourquoi ? 65 66 Parce que j'aimais beaucoup ce jeu quand j'étais petit sur l'ipod touch d'un 67 camarade, qu'une [version multijoueur en ligne](http://sshtron.zachlatta.com/) 68 a poppé sur hackernews récemment mais que je la trouvais bof et que je voulais 69 voir si c'était difficile à reproduire ou pas. 70 71 ## Et si vous voulez jouer en multi en ligne ? 72 73 Vous avez des copaines mais pas directement à côté de vous ? Vous voudriez 74 quand même pouvoir y jouer ensemble ? C'est possible. Sans aucune ligne de code 75 gérant le réseau. 76 77 L'astuce est d'installer le jeu sur un serveur auquel vous avez accès, de vous 78 connecter au même compte et de vous logger sur la même session 79 [tmux](https://github.com/tmux/tmux). Vous allez voir la même chose et, 80 surtout, vous allez partager le même clavier. Vous pouvez donc jouer à tron 81 comme si vous étiez en local sur le même ordi avec la latence en plus. 82 83 Ça fonctionne pas uuuuuultra bien mais si vous parvenez à avoir un terminal de 84 la même taille c'est franchement pas mal. Tmux est certainement overkill pour 85 ne faire *que* ça mais puisque c'est un outil déjà très courant sur les 86 serveurs unix pourquoi pas le mettre à profit ? 87 88 Cette astuce est en quelque sorte le [cloud 89 gaming](https://en.wikipedia.org/wiki/Cloud_gaming) du pauvre. 90 91 ## Les petites bizarreries 92 93 Puisque généralement la hauteur des cases de la grille d'un terminal n'est pas 94 égale à leur largeur les vélos se déplacent plus rapidement verticalement 95 qu'horizontalement. Ça rend le jeu un peu plus difficile à jouer. Soit on vit 96 avec soit on utilise une [police de caractère 97 carrée](https://strlen.com/square/) ! 98 99 Il faut télécharger la font, l'installer sur son système puis lancer un 100 terminal avec la bonne font. Sur ma machine sur debian avec xfce : 101 102 curl -Ls https://strlen.com/files/square.ttf > square.ttf 103 sudo mv square.ttf /usr/share/fonts/truetype/ 104 xfce4-terminal --geometry 80x40 --font=/usr/share/fonts/truetype/square.ttf --command tron 105 106  108 109 A noter qu'en dessous d'une certaine taille j'ai une erreur obscure de 110 flottants en lançant le jeu dans `xfce4-terminal`. Je suppose que c'est parce 111 qu'avec une font carrée le terminal et termbox sont confus sur la taille. A 112 creuser. Avec un terminal suffisamment grand ça fonctionne 🤷