Journal Tiny 'Nux Tarot, version 0.2

Posté par (page perso) . Licence CC by-sa
31
15
juil.
2012

Cher journal,

J'ai le plaisir de t'annoncer la sortie de la version 0.2 de Tiny 'Nux Tarot, qui est aussi sa première version publique. J'espère par conséquent avoir droit à un peu d'indulgence si le code source est immonde /o\

Qu'est-ce que c'est ?

Comme son nom l'indique, Tiny 'Nux Tarot (ou TnT) est un bébé jeu de tarot. Il est écrit dans le langage Vala et utilise la bibliothèque Gtk+, ainsi que les images de cartes à jouer du projet Cardpics. Il est, c'est assez peu original, distribué sous licence GNU GPL.

Fonctionnalités

Comme son nom l'indique aussi, ainsi que son numéro de version, TnT a des fonctionnalités assez limitées, mais il devrait néanmoins permettre de faire des parties de tarot à quatre joueurs, sans avoir besoin d'avoir trois autres joueurs de tarot sous la main.

Plus en détail :

  • les règles de base du tarot sont implémentées, bien que certains cas particuliers ne soient pas gérés (notamment : les poignées, les garde sans et garde contre, le petit au bout ou encore l'excuse au dernier tour) ;
  • seul un jeu à quatre joueurs est possible (mais c'est tout de même le plus intéressant) ;
  • l'IA existe, bien qu'assez rudimentaire : elle essaie de se défendre comme elle peut et peut même prendre lorsqu'elle a un bon jeu, mais elle est plutôt simpliste ;
  • l'interface graphique permet de jouer quelques parties mais est spartiate (même si la personne qui prend est indiquée par des têtes de mort à côté de son nom, et que je ne suis pas peu fière de cette idée) ;
  • il n'y a pas encore d'internationalisation, et le jeu est un peu en franglais à cause du fait qu'il est difficile de trouver des traductions anglaises pour les termes propres au tarot ;
  • pour finir, il est possible de jouer à deux êtres humains sur la même machine, même si cela a assez peu d'intérêt — le jeu en réseau n'est pas (encore ?) supporté.

Téléchargement / installation

Là non plus, rien de très original : la tarball de la version 0.2 est téléchargeable sur Github, après quoi un classique «./configure, make, make install» devrait faire l'affaire, à condition d'avoir les bibliothèques requises (Gtk+3.x, libgee et libvala — dans ce cas, le compilateur Vala n'est pas nécessaire, vu que le code est déjà traduit en C). En tout cas en théorie : je n'ai pas eu l'occasion de le tester sur d'autres machines que les miennes, donc je serais assez curieuse d'avoir des retours à ce sujet.

Il est aussi possible d'utiliser git pour récupérer la dernière version (même si à l'heure où j'écris ces lignes, le code devrait être identique à la tarball).

Utilisation

Pour lancer TnT, il suffit de l'invoquer par la ligne de commande. Il n'y a pas besoin d'options, à moins que vous vouliez jouer à 2 sur le même écran (bon en vrai, moi je m'en sers pour débugger, mais ça me parait très peu pratique pour jouer) :

$ tnt 2

…ou que vous n'ayez pas envie de vous appeler «Player 1» et de jouer avec «Player 2, 3, 4», mais «Plop» et de jouer avec «Miaou, Coin, Pan» :

$ tnt 1 Plop Miaou Coin Pan

Le jeu en lui même est plutôt basique et ne nécessite pas, je pense, de manuel particulier, vu que ça se limite à cliquer sur une carte pour jouer la carte (ou la destiner au chien), sur «OK» pour passer au tour suivant, ou sur «Passe/Petite/Garde» pour «Passer/Prendre/Garder». Sinon, le nom de la personne (ou de l'IA) qui a pris est indiqué en rouge, tandis que celle qui commence le tour se voit affubler du bleu (oui, bon, ça pourrait être plus joli, mais ça aurait aussi pu être jaune). Ah, et la personne qui a pris est indiquée par des têtes de mort, aussi, je vous l'ai dit ?

Voilà, et pour finir, quelques screenshots.

Liens

  • # Chez moi ça marche

    Posté par . Évalué à 9. Dernière modification le 15/07/12 à 10:22.

    Chez moi (Debian) ça marche. J'ai installé les bons paquets (libgtk-3-dev et libgee-dev) et tout a compilé (avec des warnings mais ça fonctionne quand même).

    Le jeu tourne bien. Quelques remarques :

    • il manque la pouce entre la petite et la garde !
    • l'ordre des couleurs n'est pas très opportun, il faudrait alterner rouge et noir. Là on se retrouve avec cœur et carreau l'un à côté de l'autre, c'est dur…
    • l'IA joue bizarrement, elle joue beaucoup trop l'atout je trouve
    • il faudrait indiquer qui distribue et qui a déjà dit quoi (là on sait juste que qqn a pris quand on a une option grisée mais on ne sait pas qui)
    • il faudrait introduire des timers entre le jeu de chaque joueur pour qu'on voit qui fait quoi
    • les scores sont incompréhensibles, et l'affichage devrait être limité à une décimale
    • il faudrait afficher les deux tas de cartes en fin de partie pour se rendre compte du score à première vue

    Je te conseille d'aller voir l'interface de PokerTH pour t'inspirer. C'est en Qt mais ça peut t'aider à voir comment faire certain trucs (notamment pour le jeu contre les IA).

    • [^] # Re: Chez moi ça marche

      Posté par . Évalué à 4.

      il manque la pouce entre la petite et la garde !

      Je ne peux pas te laisser dire ça ! Bon, le site de la fédé est pas super pour avoir un lien direct, mais les règles sont dispos quelque part par là : http://www.fftarot.fr/.

      • [^] # Re: Chez moi ça marche

        Posté par (page perso) . Évalué à 5. Dernière modification le 15/07/12 à 14:28.

        Pour les scores, je suis plus habitué à la présentation en tableau ;-) (avec les scores précédents), comme sur une feuille quoi.

        J'ai l'impression que le petit mené au bout n'est pas compté (ce n'est pas relevé en tout cas), ah oui tu l'indiquais dans ton journal…
        Indiquer la hauteur du contrat à réaliser en fonction de ce qui avait été pris aiderait aussi à avoir une meilleure lisibilité des scores (outre un rappel des règles de comptage quelque part) ;-)

        Que l'IA lance des atouts de partout, ça ne me choque pas outre mesure, c'est la chasse au petit :-) (et j'ai eu des fois où il ne le faisait pas, me reste à déterminer si c'est parce que celui qui relance a le petit :D).

        En tout cas, bravo pour ce jeu ; je me suis fait enfoncer à la 1ère partie, mais là je suis remonté, l'IA a l'air décente tout de même (même si j'ai un joueur qui a balancé son petit alors qu'il lui restait des atouts o_O).

        • [^] # Re: Chez moi ça marche

          Posté par (page perso) . Évalué à 1.

          Pour les scores, je trouve aussi que la présentation en tableau est pas mal… C'est juste que je connais pas super bien Gtk+ et que du coup je préférais avoir déjà un truc qui marchait à peu près avant d'aller chercher quel widget était le plus adapté, mais c'est plus ou moins prévu :)

          Pour l'IA, c'est cool qu'elle donne cette impression, parce qu'en fait elle est plus basique que ça (y'a rien de prévu pour chasser le petit, en fait, par exemple /o\ c'est juste que comme à un moment y'a un tri par couleur, si elle commence à jouer atout elle a des chances de continuer après)

          • [^] # Re: Chez moi ça marche

            Posté par (page perso) . Évalué à 2. Dernière modification le 15/07/12 à 23:35.

            Ne pas tout changer tout de suite pour l'IA hormis les bugs, elle me convient pour l'instant :-)

            Par exemple, l'excuse au dernier tour, c'est un peu abuser :-)

            Sinon : l'indication qu'un autre joueur a fait une annonce n'apparaît qu'après qu'on a choisi de passer ou de faire une "garde" (par exemple), il y a bien une petite indication vu que la "petite" est grisée, mais ça ne se voit pas toujours (bon, on a confirmation quand la fenêtre apparaît).

            Sinon, je ne vois pas toujours qui a lancé le premier ou à qui c'est de lancer (bon je m'en aperçois quand rien n'apparaît, mais c'est un peu déroutant).

            Pas de bug critique en tout cas, c'est bien sympathique.

    • [^] # Re: Chez moi ça marche

      Posté par (page perso) . Évalué à 2.

      Merci pour les remarques concernant l'interface (notamment l'ordre des couleurs, c'est un truc tout bête auquel j'avais pas pensé) :) Pour l'IA, j'ai peur que ça demande un peu plus de boulot, mais effectivement faudra que je me penche dessus plus sérieusement à un moment donné…

      • [^] # Re: Chez moi ça marche

        Posté par . Évalué à 4.

        Cela serait top de pouvoir faire sa propre IA, cela a été le but de maitretarot.

        Dans un concours d'IA, le système utilisait simplement stdin stdout pour dialoguer avec chaque programme d'ia. Cela permet de faire des IA plus ou moins complexe.

        "La première sécurité est la liberté"

        • [^] # Re: Chez moi ça marche

          Posté par . Évalué à 2.

          Plus precisement, dans maitretarot, il y avait un serveur et 4 clients (on fait que des parties a 4).
          Chaque client peut etre au choix une interface graphique qui transmet les ordres de l'utilisateur au serveur, ou une IA.

          Ca permet de faire des parties a distance (comme avec les jeux en ligne).
          Ca permet de faire des parties avec des IA (1 joueur contre 3 IA, ou 2 contre 2…)
          Ca permet aussi aux programmeurs en IA de faire des matchs d'IA, en connectant des IA differentes au serveur.

          Le serveur, quant a lui, c'est un peu le maitre du jeu. Il connait les cartes des joueurs et peut ainsi verifier si y'en a qui trichent. Et a la fin de la partie, c'est lui qui compte les points, tient les scores…

          Et voila, une bonne idee, des gens motives, et tout d'un coup, un manque de temps pour terminer le projet. Je suis content que cardpics, qui avait volontairement ete separe de maitretarot, reprenne une nouvelle vie avec TnT.

          Le bonjour chez vous…

  • # Un petit retour

    Posté par . Évalué à 4. Dernière modification le 15/07/12 à 11:36.

    De mon côté, je suis parti sur les sources git et les choses ne se passent pas pour le mieux :

    • ./autogen.sh se plaint de ne pas trouver ./README, un petit touch README et ça passe
    • Ma distribution (Gentoo) fournit un paquet pour cardpics, peut-être pourrais-tu tenter de détecter la présence des fichiers à la configuration (/usr/share/games/cardpics/images/XX.png chez moi) pour ne pas les installer en double
    • Si l'on tente de lancer le jeu sans l'installer, il n'y a aucun message d'erreur au sujet des fichiers de cartes non trouvés, j'ai dû y aller au strace pour comprendre ce qui se passait

    Sinon, bravo un bon jeu de Tarot libre, ça manque vraiment !

    Bonne continuation !

    • [^] # Re: Un petit retour

      Posté par (page perso) . Évalué à 2.

      «./autogen.sh se plaint de ne pas trouver ./README, un petit touch README et ça passe»

      Ah oui, effectivement, j'en avais fait un README.md pour Github, et j'ai pensé à le copier pour générer le tarball mais pas à l'uploader. Là normalement c'est corrigé :)

      Pour le message d'erreur, je le ferai quand j'aurai plus de temps (ou moins la flemme /o\).

  • # No package 'gee-1.0' found

    Posté par . Évalué à 2. Dernière modification le 15/07/12 à 12:09.

    Bonjour, je ne suis pas très à l'aise avec les compilations. Du coup je tombe sur une erreur au configure que je ne sais pas résoudre. La voici
    > checking for gcc option to accept ISO C99… -std=gnu99
    > checking for gcc -std=gnu99 option to accept ISO Standard C… (cached) -std=gnu99
    > checking for valac… /usr/bin/valac
    > checking /usr/bin/valac is at least version 0.12.0… yes
    > checking for pkg-config… /usr/bin/pkg-config
    > checking pkg-config is at least version 0.9.0… yes
    > checking for TNT… no
    > configure: error: Package requirements (gtk+-3.0 >= 3.2.0 gee-1.0 >= 0.6.0 glib-2.0 >= 2.30.0) were not met:
    >
    > No package 'gee-1.0' found
    >
    > Consider adjusting the PKG_CONFIG_PATH environment variable if you
    > installed software in a non-standard prefix.
    >
    > Alternatively, you may set the environment variables TNT_CFLAGS
    > and TNT_LIBS to avoid the need to call pkg-config.
    > See the pkg-config man page for more details.

    Pourtant j'ai bien installé le paquet libgee-devel qui est en version 0.8 (j'ai les bibliothèques /usr/lib64/libgee-0.8.so.0.0.0) Bref quelqu'un pourrait m'aider à corriger ce soucis ? Pour info, j'utilise Mageia 2 64-bits.

    • [^] # Re: No package 'gee-1.0' found

      Posté par (page perso) . Évalué à 3.

      tu peux installer libgee2 et libgee0.6-devel qui correspondent à libgee0.6-0.6.4-1.mga2.src.rpm
      et aussi en parallèle avoir libgee0.8_0 + libgee-devel qui correspondent à libgee-0.7.2-1.mga2.src.rpm (oui le nommage me paraît un peu bizarre aussi)

      le tout en rajoutant gtk+3 et vala :
      urpmi vala libgtk+3.0-devel libgee2 libgee0.6-devel libgee0.8_0 libgee-devel

  • # Un retour sur le Vala ?

    Posté par (page perso) . Évalué à 1.

    Bien ? Pas bien ? Des difficultés particulières ?

    • [^] # Re: Un retour sur le Vala ?

      Posté par (page perso) . Évalué à 3.

      Pour l'instant j'aime bien, ça offre à peu près les avantages du C (même si en l'occurrence je pense pas vraiment que les performances soient cruciales) sans avoir autant à se galérer (un code Gtk+ en Vala me semble plus lisible qu'en C, et plus facile à écrire d'ailleurs). En termes de langage objet je suis pas experte et je saurais pas comparer avec Java ou C# par exemple (il me semble que c'est assez semblable dans l'esprit) mais je trouve ça plus accessible et «propre» que le C++.

      Au niveau des difficultés, je dirais que ça manque des fois un peu de documentation, notamment pour les bindings (c'est plus facile de trouver des exemples sur une fonctionnalité précis de Gtk en C, voire en Python, qu'en Vala, du coup faut un peu essayer de deviner le nom des classes/méthodes correspondantes, même si en général c'est assez direct). Par ailleurs j'ai pas dû assez chercher la bonne option de compilation (je sais qu'elle existe), mais là tel que c'est configuré chez moi, gdb me donne la ligne du fichier .c généré et pas du source vala, ce qui rend le débuggage un peu pénible.

  • # Beau travail

    Posté par (page perso) . Évalué à 4.

    N'hésites pas à ajouter ton jeu à la liste: https://linuxfr.org/wiki/jeux_libres_linuxfr

    http://devnewton.bci.im

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.