arthur.bebou

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 ![Une capture d'écran du jeu. Deux "vélos" sous forme de points se déplacent sur une surface. Ils sont suivis d'un mur de lumière retraçant leurs parcours. A droite, en dehors de l'arène, sont affichées des informations sur l'emplacement des vélos et le temps depuis le début de la partie](/tron/tron.png)
     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 ![Une capture d'écran très similaire à celle de début mais cette fois-ci la
    107 grille est carrée.](/tron/tron-square.png)
    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 🤷