Trivabble continue à évoluer

Posté par  . Édité par Davy Defaud, theojouedubanjo, claudex, bubar🦥, Benoît Sibaud et palm123. Modéré par Davy Defaud. Licence CC By‑SA.
98
20
avr.
2020
Jeu

Trivabble est un jeu de Scrabble en ligne que j’ai commencé en 2016 pour que les membres éparpillés de ma famille puissent jouer ensemble.

Trivabble

Sommaire

Les critères :

  • le plus simple à utiliser qui soit, si possible sans inscription ;
  • fonctionnant au moins sur GNU/Linux, Windows et iPad ;
  • idéalement, c’est libre.

J’ai fini par écrire mon propre jeu, sous licence libre AGPL. Je l’ai mis en place sur mon serveur, et je l’ai plus ou moins laissé tourner et oublié. Puis, il y a environ trois semaines, j’ai commencé à recevoir des courriels de remerciements, et quelques rapports de bogues et demandes de fonctionnalités. Je me suis dit que c’était le moment idéal pour donner à ce jeu un peu d’amour et ces derniers week‑ends, j’ai travaillé sur le jeu. On pourrait voir cette dépêche comme la présentation d’une nouvelle version, mais je n’ai jamais réfléchi sérieusement à comment gérer les versions.

Principe du jeu

On lance le jeu, on donne son nom et c’est parti pour jouer. On peut rejoindre d’autres personnes en renseignant un code de partie affiché dans la page.

Il n’y a pas de règle implémentée. Le jeu fournit une zone de discussion en ligne, un sac de pièces et un plateau commun, un chevalet pour chaque joueur et les gens font ce qu’ils veulent avec. Ils pourront jouer au Scrabble, mais s’ils veulent se faire un Speed Trivabble où les joueurs jouent leurs pièces le plus vite possible, ou s’ils veulent faire des dessins avec leurs pièces sur le plateau, rien ne les en empêche — mais qu’est‑ce que le Speed Trivabble ? Un jeu dont les règles restent à inventer. :-P

Nouvelles fonctionnalités visibles

  • le jeu est maintenant centré sur la page ; c’est tout bête, pas indispensable, mais c’est probablement plus agréable ;
  • les joueurs peuvent maintenant montrer le contenu de leur chevalet aux autres joueurs ; c’est une fonctionnalité qu’on m’a demandée — comme ça, on peut plus facilement aider ses adversaires quand ils sont bloqués ;
  • il est maintenant possible d’indiquer à qui c’est de jouer ; tout bête, mais quand on est à trois ou quatre, ça peut devenir compliqué de savoir où on en est — c’est aussi une fonctionnalité qu’on m’a demandée ;
  • le jeu est plus facile à utiliser sur un téléphone ainsi que sur une tablette Android : le jeu ne défile plus quand on essaie de bouger une pièce.

Évolutions sous‑marines

Le travail de ces dernières semaines était surtout invisible.

Travail sur la rétro‐compatibilité

J’ai pu observer que les gens laissent leur page ouverte, ou que leur navigateur ne recharge pas systématiquement les fichiers du jeu (normal, il y a une gestion du cache).

Je fais mon possible pour qu’une version ancienne du jeu sur navigateur continue à tourner avec les dernière versions du serveur. Le jeu annonce maintenant sa version au serveur, et il existe maintenant un mécanisme avec lequel le serveur peut demander au client de se recharger.

Par ailleurs, tout est fait pour que le client soit silencieux en cas de panne brève de connexion ou du serveur, si le joueur ou la joueuse n’essaie pas d’interagir avec le jeu à ce moment‑là. Sinon, il bloquera l’utilisation de la page et affichera un message invitant le joueur à patienter un peu. Le client se reconnecte dès que le serveur est à nouveau en route ou que la connexion est à nouveau disponible. Ça rend les mises à jour du serveur plus faciles.

Dernière modification d’une partie

Le jeu sauvegarde en permanence son état. Ainsi, on peut le redémarrer ou il peut planter sans que les gens ne perdent leur partie. Pour le moment, on peut quitter une partie et la retrouver dans le même état plus tard et ce « plus tard » n’est pas borné. Si vous aviez commencé une partie en 2016, vous pouvez la retrouver telle quelle maintenant.

Cependant, je me suis rendu compte d’une utilisation de plus en plus grande du jeu ces derniers temps en voyant le fichier de sauvegarde grandir. On est passé de 100 Kio au début du mois de mars à 1,5 Mio aujourd’hui. Par conséquent, la question du ménage se pose : je vais peut‑être, devoir limiter ce temps à un moment donné. J’ai donc commencé à enregistrer, pour chaque partie, la date de la dernière modification. On verra plus tard comment j’utilise cet enregistrement : est‑ce que je nettoie toutes les parties qui ont plus d’un mois sans accès ? Pour l’instant, la question ne se pose pas, mais les outils sont là au cas où.

Communications

Un des bogues rapportés depuis quatre ans maintenant est que, parfois, une pièce disparaît ou se transforme. Source de fous‑rires ou de frustration, je n’ai malheureusement pas pu observer le problème moi‑même jusqu’à très récemment, et si le problème est avéré, il n’est pas encore reproductible. Ce bogue m’a conduit à me questionner sur la stabilité des communications entre le navigateur des joueurs et le serveur.

J’ai donc passé beaucoup de temps sur le code lié aux communications. Jusqu’à maintenant, les communications étaient gérées avec des requêtes courtes pour l’envoi (quand une pièce est déplacée par exemple), et du « long polling » pour la réception : des requêtes HTTP qui ne se finissent que quand elles plantent ou que le joueur quitte la partie. Tout un mécanisme était en place pour délimiter les messages, pour se reconnecter en cas d’erreur, etc. Plus particulièrement, les messages, des objets JSON, étaient préfixés par leur taille.

Je me suis penché sur les autres techniques de communications : les Server‑sent events et les WebSockets.

Les Server‑sent events (SSE)

Les SSE remplacent avantageusement ce mécanisme de long polling : chaque message est délimité par deux retours à la ligne. Le navigateur fournit un objet EventSource qui gère lui‑même les coupures de connexion et fournit un bel évènement message qui permet de récupérer chaque message sans difficulté.

Les WebSockets

Les WebSockets sont une autre bestiole. Comme me le disait une utilisatrice par courriel :

« J’oubliais : on s’est interrogés sur les webSockets, mais finalement mon compagnon me charge de vous dire qu’en cette saison, on ne devrait pas en avoir besoin. »

J’ai quand même étudié la question. Les WebSockets ont un gros avantage : ils permettent de n’utiliser qu’un canal de communication pour les envois et les réceptions. Côté navigateur, pas trop de problèmes : on utilise l’objet WebSocket qui va bien. Le serveur, lui, est écrit en JavaScript avec Node.js et, là, c’est une autre paire de manches. Je veux limiter au maximum les dépendances sur lesquelles mon code dépend, et les WebSockets ne sont pas pris en charge nativement. Pour l’instant, le serveur ne dépend de rien d’autre que de Node.js, et je ne souhaite pas rajouter une dépendance pour les raisons suivantes :

  • le déploiement sans dépendance est très simple : on copie les fichiers et ça marche ;
  • ajouter une dépendance, ça veut dire adopter un gestionnaire de paquets du style NPM ou Yarn, faire un package.json, gérer les mises à jour des dépendances, etc. ;
  • ajouter une dépendance NPM, c’est ouvrir une boîte de Pandore : on en installe une, qui dépend d’une centaine d’autres bibliothèques, et au bout de deux ou trois comme ça, on se lève un beau matin, et on réalise qu’on a un node_modules de 500 mégaoctets et qu’il faut prendre un serveur avec plus d’espace disque rien que pour jouer au Scrabble.

J’ai donc implémenté moi‑même la prise en charge des WebSockets au‑dessus du module HTTP fourni par Node.js, en lisant la documentation. Au final, c’était très intéressant de comprendre en profondeur comment ça fonctionne, et de se rendre compte que ce n’est pas si sorcier. Si cela vous intéresse, je pourrai essayer d’écrire un journal sur le fonctionnement des WebSockets.

Conclusion

Trois mécanismes sont maintenant en place et fonctionnent dans Trivabble : les WebSockets, les Server‑Sent events et le long polling traditionnel, avec un système de repli :

  • si les Websockets sont disponibles, on les utilise (et pour le moment, je les désactive en production, je n’ai pas encore assez de recul pour les laisser actives) ;
  • sinon, ou si l’on se rend compte qu’elles ne fonctionnent pas, on utilise les server‑sent events ;
  • si les server‑sent events ne sont pas disponibles (Edge et Internet Explorer, par exemple), on se rabat sur du long polling. Pour être honnête, le mécanisme de long polling n’est encore là que parce qu’il ne pose pas de problème de maintenance.

Une fois que la communication est établie, que ce soit côté serveur ou côté navigateur, la gestion est transparente et le type de communication est totalement abstrait. J’ai également découvert que Node.js, avant la version 13, par défaut, ferme automatiquement les connexions HTTP au bout de deux minutes. J’ai donc supprimé cette fermeture automatique. Le lendemain de la mise en place de cette correction, j’ai eu des plantages dus à une limitation du nombre de processus Apache maximal autorisé trop petite, j’ai donc modifié la configuration d’Apache pour autoriser un plus grand nombre de connexions simultanées.

Le bogue de la pièce qui disparaît ou qui se transforme est certainement toujours là et je ne connais pas encore la cause de ce dysfonctionnement. Il faudra probablement repenser la manière dont sont faites les communications pour fournir certaines garanties que la manière actuelle de faire ne fournit pas.

En attendant, le code est plus tolérant aux erreurs des deux côtés. J’ai testé les disparitions inopinées de connexion au serveur, et j’ai testé mon implémentation des WebSockets côté serveur avec des killall -s SIGKILL chromium (Firefox étant mon navigateur principal, je ne peux me permettre ce genre de fantaisies avec lui, pardi !).

Maintenance du code

Attention, cette section est technique, n’hésitez pas à la passer si JavaScript n’est pas familier pour vous.

Au tout début du projet, j’utilisais ESLint pour vérifier le code. Puis j’avais abandonné et maintenant c’est reparti, j’ai la vérification en temps réel dans l’éditeur de code. J’utilise à présent let et const pour déclarer les variables, et l’utilisation de var est dorénavant interdite dans le code. J’utilise également les for..of, bien pratiques pour itérer les éléments d’un tableau.

Malheureusement, let et const pètent la compatibilité avec Safari 9, la version de Safari de l’iPad 2. Alors, j’ai un bon vieux sed dans le code qui déploie le jeu pour remplacer let et const par var. Par ailleurs, for..of ne fonctionne pas sur les listes de nœuds renvoyées par les fonctions querySelectorAll() ou getElementsByClassName dans Safari 9 ; donc, les précautions suivantes s’imposent :

// Éviter, ça casse sur l’iPad 2
for (const node of parent.querySelectorAll()) {
   // ...
}

// ok
for (const node of [].slice.call(parent.querySelectorAll())) {
   // ...
}

Et par conséquent, pas de fonctions fléchées ou de paramètres par défaut. Je pourrais utiliser Babel, mais encore une fois, le gain apporté pour pouvoir utiliser toutes les dernières fonctionnalités de JavaScript est très largement perdu par l’obligation de rajouter une dépendance au projet, une étape de compilation, la configuration de Babel, et obtenir un code illisible en production.

Évolutions futures

Je prévois de séparer toute la logique spécifique au jeu de Scrabble du reste, pour pouvoir proposer des jeux différents sur le même modèle. J’ai un jeu de dames qui est l’adaptation d’une copie ancienne de Trivabble. Je prévois ainsi de récupérer ce travail et le rendre public, et de proposer, dans le même esprit, un plateau pour les échecs.

Je prévois également de continuer à réfléchir sur comment éviter les problèmes de cohérence qui sont peut‑être à l’origine de ce bogue de disparition occasionnelle de pièces.

Conclusion

Je n’ai pas les nombres exacts sur l’utilisation du jeu mais, a priori, depuis le 10 avril, on tourne entre trente et cent numéros de parties uniques par jour (un numéro de partie correspond à une partie, ou plusieurs si les gens enchaînent plusieurs parties avec le même numéro), avec un pic à trois cent soixante pour le lundi de Pâques.

N’hésitez pas à en parler autour de vous, c’est le bon moment. :-)

Aller plus loin

  • # Lien Trivabble

    Posté par  . Évalué à 5.

    C'est sympa tous ces projets qu'on découvre durant cette période, merci !
    Attention, le lien vers Trivabble dans la dépêche ne fonctionne pas : il y a un "b" de trop dans l'URL.

  • # Parties en duplicate

    Posté par  (site web personnel) . Évalué à 9.

    Cela semble une fonctionnalité non présente (toutes mes excuses si j'ai mal cherché) mais les grands amateurs de scrabble ne jurent que par ça : le duplicate. Pour faire simple un tirage unique pour tous les joueurs, un temps limité, on met sur le plateau le meilleur résultat et chacun marque selon ce qu'il a trouvé. Ça me permettrait de jouer avec ma mère et je t'en remercierait tous les jours.

    • [^] # Re: Parties en duplicate

      Posté par  . Évalué à 4. Dernière modification le 20 avril 2020 à 20:08.

      Je note la demande de fonctionnalité !

      Un contournement tant que la fonction n'existe pas : une personne tire, montre son jeu et vous vous arrangez avec la voix ou le chat :-)

      Comment tu verrais cette fonctionnalité marcher en réseau selon toi ?

      • [^] # Re: Parties en duplicate

        Posté par  (Mastodon) . Évalué à 9.

        Dans les parties de duplicate, il y a généralement un solver qui donne la ou les meilleures solutions, c'est-à-dire celles qui font le nombre de points maximum (c'est l'humain qui détermine la meilleure au sens où ça ouvre le jeu parmi toutes les possibilités). Et pour implémenter un solver de Scrabble, il faut des structures de données et des algorithmes un peu complexe mais très intéressant : par exemple un GADDAG. L'avantage, c'est qu'on peut générer toute la structure à l'avance pour un dictionnaire donné et la réutiliser à chaque fois. Mais le temps de génération peut être long pour des gros dictionnaires (de l'ordre de quelques secondes pour /usr/share/dict/french). C'est de la belle algorithmique, et le papier de Gordon est assez bien foutu avec des algorithmes clairs et explicites (ça change de ce qu'on peut lire de nos jours).

        • [^] # Re: Parties en duplicate

          Posté par  . Évalué à 2.

          Ça doit être intéressant à implémenter. Quel est le rôle du solveur dans la partie si on prend la meilleure solution proposée par l'un des joueurs ?

          Je ne pense pas implémenter un solveur pour le moment mais si quelqu'un est intéressé·e, n'hésitez pas à me contacter, et ça tournera probablement côté client pour pouvoir garder la possibilité d'avoir un serveur modeste. Cela dit, si le solveur est écrit en Javascript ou dans un langage qui se traduit en Javascript aisément, ça pourrait être un paramètre du jeu.

          Autres questions qui se posent : l'expérience utilisateur. Par exemple, comment gérer les remises des pièces dans le sac ? Devrait-il y avoir une personne désignée pour coordonner le jeu par exemple ?

          • [^] # Re: Parties en duplicate

            Posté par  . Évalué à 5. Dernière modification le 20 avril 2020 à 21:10.

            Ça doit être intéressant à implémenter. Quel est le rôle du solveur dans la partie si on prend la meilleure solution proposée par l'un des joueurs ?

            Pour compter les points entre chaque partie. Le but, c'est d'arriver le plus proche du maximum à chaque fois1. Donc tu dois savoir quel est le plus gros score. Du coup, tu peux arriver à des scores du genre 95% du meilleurs en moyenne sur les 15 dernières parties. Ça lisse le score maximum par partie.


            1. Si tu n'utilise quel le score brut, celui qui trouve le maximum quand le maximum valait beaucoup est avantagé par rapport à celui qui trouve le maximum à chaque fois sauf la fois qui valait plus de point.  

            « Rappelez-vous toujours que si la Gestapo avait les moyens de vous faire parler, les politiciens ont, eux, les moyens de vous faire taire. » Coluche

        • [^] # Re: Parties en duplicate

          Posté par  . Évalué à 2.

          • [^] # Re: Parties en duplicate

            Posté par  (Mastodon) . Évalué à 3.

            Le DAWG d'Appel et Jacobson est moins bon que le GADDAG, mais il prend beaucoup moins de place également.

      • [^] # Re: Parties en duplicate

        Posté par  (site web personnel) . Évalué à 5.

        Il faut évidement que tous les joueurs soient connectés au début de la partie. Par commodité celui qui ouvre la partie en est le directeur de jeu pour fixer les quelques point à régler. Le temps de jeu par exemple a une valeur par défaut de 3 minutes mais peut être modifié.

        Pour le tirage il y a 2 solutions : soit des parties préalablement jouées, dans des tournois par exemple, et mémorisées dans une base de donnée, soit un tirage aléatoire agrémenté ou pas de certaines règles en cas de manque de voyelles.

        Le chrono se déclenche dès l'affichage des lettres. Chaque joueur doit avoir saisi son mot et sa position sur le damier avant la fin du décompte sinon 0. Pour le dictionnaire c'est plus compliqué car le dictionnaire de référence (ODS) n'est pas gratuit. J'imagine que l'un des joueurs peut-être désigné comme arbitre. Ce qui suppose de pouvoir discuter via un petit chat xmpp. S'il est intégré c'est mieux mais sinon aux joueurs de se débrouiller.

        Bon, si tu te lances là dedans je peux te donner un coup de main (pas pour coder, hein!). J'ai vu ta page contact sur ton site web, je peux donc t'écrire si tu le souhaites.

        • [^] # Re: Parties en duplicate

          Posté par  . Évalué à 3.

          Merci pour ces informations. Oui, je suis clairement intéressé, n'hésite pas à m'écrire :-)

          Il y a bien un chat intégré, par contre il n'y aura probablement pas de dictionnaire fourni avec le jeu (je suis ouvert à la discussion sur ce point), et dans ce cas il faudra se mettre d'accord effectivement.

        • [^] # Re: Parties en duplicate

          Posté par  . Évalué à 2.

          Comme le dictionnaire de référence n'est pas gratuit (je n'ai même pas trouvé le prix d'une licence sur leur site… Pourquoi ne pas utiliser celui fournit par Grammalecte dont le dév principale traîne ici ?
          https://grammalecte.net/home.php?prj=fr

          • [^] # Re: Parties en duplicate

            Posté par  . Évalué à 2.

            C'est une bonne idée que je garde dans un petit coin de ma tête. Merci :-)

          • [^] # Re: Parties en duplicate

            Posté par  . Évalué à 5. Dernière modification le 26 avril 2020 à 16:36.

            Comme le dictionnaire de référence n'est pas gratuit (je n'ai même pas trouvé le prix d'une licence sur leur site… Pourquoi ne pas utiliser celui fournit par Grammalecte?

            Parce que le dictionnaire spécifique au Scrabble (l'ODS) est composé de mots n'ayant rien à voir avec la réalité ou la rigueur linguistique. Beaucoup, beaucoup de mots anglais intégrés directement dedans d'ailleurs, à mon grand dégoût. Par exemple, parmi les centaines de mots ajoutés en 2020 dans l'ODS français: foxtrot, darknet, sextapes, taxigirl, explicit, fixies, bicause, chatbot, agility, burnout… franchement, si Cyrano de Bergerac était encore là, il aurait provoqué tous les gens de la Fédération Française du Scrabble en duel à mort, pas juste en duel de mots.

      • [^] # Re: Parties en duplicate

        Posté par  . Évalué à 4.

        Je serais également content de voir un système de duplicate libre et et populaire auprès des joueurs de clubs/compétitions (oui ça existe, comme la Fédération Québécoise des clubs de Scrabble francophone et divers autres… on n'rigole pas).

        Il me semble qu'on parle d'un tout autre ordre de complexité d'interface cependant. Un jeu en "duplicate" devrait permettre de pouvoir rejouer des parties homologuées (parties de clubs/tournois dont les tirages ont été enregistrés) et de pouvoir arbitrer une partie (i.e. pour un utilisateur, tirer les lettres et annoncer les tops devant une foule de cheveux grisonnants dans une salle communautaire, typiquement; et pour plusieurs autres utilisateurs en arrière-salle, gérer les réponses et scores de divers joueurs dans la salle).

        Tous les joueurs de clubs n'utilisent que deux logiciels à ma connaissance:

        • Duplitop qui est une immondice propriétaire avec en plus des DRM (la dernière fois que j'ai regardé la chose, c'était rendu qu'il fallait une clé USB cryptographique spéciale branchée en tout temps pour l'utiliser). Évidemment comme c'est le logiciel développé et poussé par la Fédération Française de Scrabble, bonne chance pour percer dans le marché captif d'un marketing ressemblant presque à de la vente liée.
        • pour pratiquer sans moyens à la maison, certains utilisent Duel de Mots (dans la barre latérale "Scrabble duplicate" à gauche on peut rejouer des parties homologuées). Avant c'était une appliquette Java dégueulasse, maintenant au moins ça marche en Javascript nativement dans les navigateurs. Mais évidemment c'est pas libre non plus.

        La dernière fois que j'avais étudié la question (il y a plus de dix ans), seul Eliot (créé par Antoine Fraboulet et Olivier Teulière) existait en libre, et je pense que pratiquement personne ne connaissait l'existence de ce bestiau. Je me souviens de m'être cassé les pieds pour ce qui est de compiler et l'installer sous Linux, dans le temps. Il semble que le projet ait publié une nouvelle version en 2013, et il y a eu quelques changements dans Git depuis mais ça s'est pas mal arrêté à 2016. Peut-être que des gens seraient intéressés en faire un Flatpak et raviver le développement du projet? (sérieux sortez-moi ça de l'horreur qu'est GNU Savannah et mettez-moi ça dans une forge comme gitlab avec un bug tracker qui marche, quoi)

        • [^] # Re: Parties en duplicate

          Posté par  (site web personnel) . Évalué à 1.

          Pour Duplitop :
          * Une nouvelle version existe, recodée à 100%, il faut néanmoins toujours être adhérent à la fédération pour pouvoir l'utiliser
          * La fédération ne peut pas faire ce qu'elle veut car la marque Scrabble est déposée et gérée par un gros gros qui impose des choses.

  • # On va regarder c'est sûr

    Posté par  (site web personnel, Mastodon) . Évalué à 3.

    Nous avons déjà parlé en famille de l'opportunité d'un scrabble en ligne car ma mère est une mordue de scrabble.

    Quand j'ai vu la nouvelle sur linuxfr, j'ai aussitot ouvert mon thunderbird pour en parler à ma mère qui redécouvre son mail, et à ce moment là j'ai lu un mail de mon frère qui me disait de jeter un coup d'oeil ici :-)

    Je me demande si je ne vais pas essayer de lui faire une place sur mon petit rapsberry déjà encombré …

    Ce ne sera pas simple car ma mère n'est pas pas de la génération internet… mais vrament pas du tout.

    • [^] # Re: On va regarder c'est sûr

      Posté par  . Évalué à 3. Dernière modification le 20 avril 2020 à 20:51.

      Super !

      La mise en place n'est pas encore bien documentée, je vais faire de mon mieux pour améliorer ce point mais en attendant n'hésite pas à m'écrire.

      Le jeu est conçu pour des gens comme elle, et testé par des gens comme elle. Si elle n'y arrive pas, c'est un bogue du jeu :-)

      • [^] # Re: On va regarder c'est sûr

        Posté par  (site web personnel, Mastodon) . Évalué à 3.

        je suis en train l'installer sur le raspberry, il me semble qu'il doit y a voir une type dans https://trivabble.1s.fr/developpement.html à la fin exec nodejs xxx-server ou je pense qu'il faut que cela soit trivabble non ?

        • [^] # Re: On va regarder c'est sûr

          Posté par  . Évalué à 6. Dernière modification le 20 avril 2020 à 22:18.

          Bien vu, c'est un artefact des temps anciens :-)
          merci pour le signalement.

          À noter qu'aujourd'hui il faut plutôt écrire un fichier de configuration systemd.

          $ cat /etc/systemd/system/scrabble.service                                                                                                          [Unit]
          Description=Scrabble
          
          [Service]
          Type=simple
          RemainAfterExit=no
          ExecStart=/usr/local/bin/start-scrabble
          
          [Install]
          WantedBy=multi-user.target
          

          Il faut que je prenne le temps de mette à jour ces informations. Tu seras peut-être aussi intéressé par la variable d'environnement DEBUG_LOG=true.

          On peut aussi le faire tourner dans un screen, mais le jeu ne redémarrera si le serveur est redémarré.

          • [^] # Re: On va regarder c'est sûr

            Posté par  (site web personnel, Mastodon) . Évalué à 1.

            ça marche ! j'ai passé un peu de temps avec la configuraiton nginx et finalement j'ai abouti à ç a:

            location /:trivabble {
            proxy_pass http://localhost:3000;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
            proxy_set_header X-Forwarded-Host $host:$server_port;
            proxy_set_header X-Forwarded-Server $host;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

            # Hard limit, why would we need more ? to check...
            client_max_body_size 128K;
            

            }

            location /trivabble {
            root /var/www/trivabble;
            }

            il y a peut re des entrées en trop mais ça fait plaisir de le voir focntionner sur mon raspberry :-)

            @raphj : Quelle est le meilleur moyen de communication pour interagir avec toi ?

            • [^] # Re: On va regarder c'est sûr

              Posté par  . Évalué à 2.

              l'adresse électronique indiquée sur le site, et j'invite quiconque mettant en place le jeu de me contacter pour que l'on se coordonne pour les mises à jour, je n'ai pas encore de procédure bien léchée pour ça :-)

              Super la config nginx, pourrai-je l'intégrer à la documentation du site ?

      • [^] # Re: On va regarder c'est sûr

        Posté par  (site web personnel, Mastodon) . Évalué à 1.

        Je confirme, ma mère a réussi à y jouer, donc je confirme que c'est vraiment bien conçu.

        Elle n'a pas réussi à utiliser le chat mais pour le reste nous avons pu faire une belle partie avec le téléphone à côté.

        Nous avons eu besoin d'aide pour lancer le jeu car le wifi n'était pas monté et ma mère n'arrivaitt pas à taper l'url au bon endroit, mais ça trivabble n'y peut rien :-)

        La fonctionnalité que ma mère - et moi - peut attendre c'est la possibilité de rejoindre des joueurs en attente, un salon d'attente de joueurs; pour ne pas être son seul seul adversaire… les parties de scrabble c'est légèrement chronophage…

        évidemment l'intégrer avec un partage audio ( pas besoin de vidéo ) serait le top.

  • # Il faut que j'essaie...

    Posté par  (site web personnel, Mastodon) . Évalué à 10.

    J'adore la philosophie d'implémentation : classiquement les jeux informatique implémentent les règles alors que Trivabble propose réellement une version numérique du jeu classique. Je trouve ça excellent !

    • [^] # Re: Il faut que j'essaie...

      Posté par  . Évalué à 5.

      J’aime beaucoup aussi, ça m’a fait penser à tabletopia qui a un peu le même concept pour un nombre assez conséquent de jeux de société (j’ai joué à Wingspan récemment, c’est plutôt bien fait) : les règles ne sont pas implémentées, mais on peut avoir comme sur une vraie table (avec en plus l’avantage que le temps d’installation et de rangement des pièces est vraiment diminué), et on discute par ailleurs (par téléphone, chat, ou visio) pour garder du lien !

      Mais il y a plein de raisons qui font que ce qui est présenté ici est beaucoup mieux, surtout pour des jeux relativement simples :

      • C’est libre
      • C’est frugal (tabletopia est un émulateur 3D physique dans le navigateur, autant dire que ça peut ramer sévère, il faut du WebGL)
      • Ça ne nécessite pas d’inscription (donc grand-père friendly).

      Bref, ça me donne beaucoup envie de faire le même truc pour la coinche, qui manque sévèrement à mon grand-père en ces temps confinés. À mon avis c’est même probablement plus simple que le scrabble. Il faut remplacer le chevalet par une main de cartes, mettre une pile de cartes déjà jouées, et zou.

      Savez-vous s’il existe un truc relativement équivalent déjà implémenté pour des cartes ?
      Sinon je m’y collerai !

      • [^] # Re: Il faut que j'essaie...

        Posté par  . Évalué à 5.

        Tiens moi au courant, on m'a suggérer d'implémenter le jeu du président !

        Le cœur du jeu est adaptable, normalement seule l'interface change. Et je compte le rendre modulaire au moins pour les dames et les échecs, pourquoi pas un jeu de carte ? Je m'y colle ce weekend en principe.

        • [^] # Re: Il faut que j'essaie...

          Posté par  (site web personnel) . Évalué à 5.

          Savez-vous s’il existe un truc relativement équivalent déjà implémenté pour des cartes ?

          il y a déjà quelques jeux de tarot disponibles :
          https://linuxfr.org/tags/tarot/public dont un dans Salut à Toi ;-)

          sur https://linuxfr.org/users/j_kerviel/journaux/un-logiciel-de-tarot-utilisable-sous-gnulinux tu trouves dans les commmentaires :

          • belooted
          • goinche

          et pour des images en SVG de cartes : https://linuxfr.org/news/premier-jeu-de-cartes-en-svg-pur

          • [^] # Re: Il faut que j'essaie...

            Posté par  . Évalué à 2.

            Merci pour les infos. Mais c’est vrai que c’est quand même bien plus accessible le type de serveur comme trivabble (surtout qu’on ne veut pas de fonctionnalités avancées). Si on arrive à faire marcher les cartes sur le moteur de trivabble, ce sera super !

            • [^] # Re: Il faut que j'essaie...

              Posté par  . Évalué à 1.

              Pourquoi ne pas faire évoluer le projet trivabble ? Implementer des plateaux du style des malettes avec plus de 100 jeux dedans (chevaux, dames, Jeu de l'oie, cartes …) ?

              Certes il faudrait certainement des gens de bonne volonté pour le faire mais ça peut être un super projet non ?

            • [^] # Re: Il faut que j'essaie...

              Posté par  . Évalué à 0.

              Et voilà, la coinche est jouable : https://gitlab.com/amicf/loinche/

              Je l’ai mise disponible sur mon serveur perso, mais je ne préfère pas le mettre publiquement, n’hésitez pas à me contacter si vous voulez tester. Mais normalement avec le dépot git au-dessus, c’est très rapide à installer si vous avez un bout de serveur. Il n’y a évidemment pas de documentation propre encore. Le mieux est donc d’aller voir la documentation de trivabble (superbe maintenant), et de faire exactement la même chose !

              Surtout quand j’aurai vraiment mis le code à jour pour que ce soit vraiment parallèle à ce qui se fait sur trivabble.

              J’ai utilisé le jeu de cartes en SVG proposé au-dessus (qui est aussi celui utilisé par wikipedia), en prenant la version 2.0 pour les nombres et la 1.0 pour les figures, que je trouve plus jolies comme ça avec leur petit nom !

  • # Serveur officiel?

    Posté par  (site web personnel) . Évalué à 4.

    Excellente nouvelle.

    Mes parents cherchent à faire une mise à jour de Windows 8… J'ai suggéré à ma mère de passer sous Linux, et le seul programme qui lui manquait, c'était le Scrabble en Ligne qu'elle utilise.

    Existe-t-il un serveur officiel, qui nous met en relation avec d'autres personnes, pour jouer?

    Je reconnais que ma mère ne joue qu'avec des inconnus, et elle aurait du mal à trouver des joueurs autrement.

    Sinon, je peux fournir un serveur gratuitement pendant quelques mois, avant de rendre la chose non pas rentable, tout au moins équilibrée financièrement.

    • [^] # Re: Serveur officiel?

      Posté par  . Évalué à 4.

      On peut jouer sur le site du jeu, mais il n'y a pas de mise en relation.

    • [^] # Re: Serveur officiel?

      Posté par  (Mastodon) . Évalué à 3.

      le seul programme qui lui manquait, c'était le Scrabble en Ligne qu'elle utilise

      Ça se tente peut-être sous Wine. T'aurais un lien à donner ?

      En théorie, la théorie et la pratique c'est pareil. En pratique c'est pas vrai.

  • # remarques et questions

    Posté par  (Mastodon) . Évalué à 5.

    Le jeu semble essayer d'adopter la locale du navigateur. Pour ma part ayant un téléphone en espagnol, il m'a mis le jeu en anglais. Par contre il n'est pas mention de la langue dans laquelle se joue la partie, et la répartition des pièces est différente suivant les langues. As-tu prévu d'implémenter des sacs différents selon les langues? Si tu as besoin d'aide pour connaitre les répartitions des pièces suivant les pays, je pense qu'on peut t'aider facilement. Je jettrrai un coup d'oeil au repos quand j'aurais un peu de temps.

    Dans l'intervalle si ce n'est pas le cas il faudrait préciser que le jeu se joue en français car ce n'est pas évident si le pc est configuré dans une autre langue.

    Dernière remarque, l'affichage sur un smartphone est assez compliqué. À voir si tu peux appliquer du responsive design ou avoir un css mobile. Dans une famille il y aura toujours une personne qui voudra jouer depuis son téléphone ou sa tablette.

    Jami: beabb2b063da0a2f0a2acaddcd9cc1421245d5de

  • # droits d'auteur

    Posté par  (site web personnel) . Évalué à 4. Dernière modification le 21 avril 2020 à 09:56.

    Je reviens sur la question des droits d'auteur dont il a été question lors de la précédente présentation:le jeu doit être considéré comme partiellement libre parce qu'il est soumis à droits d'auteur de la part de Hasbro. Donc pas intérêt à en faire un usage commercial. Ceci dit, ce que raphj a fait est aussi soumis à droit d'auteur, donc si Hasbro voulait copier le code même partiellement pour faire un Scrabble en ligne, il aurait aussi intérêt à respecter les termes de la licence, et mieux entamer une négociation entre les parties.
    Trolldi ?

    • [^] # Re: droits d'auteur

      Posté par  (site web personnel, Mastodon) . Évalué à 2. Dernière modification le 21 avril 2020 à 10:30.

      Je trouve qu'il y a beaucoup de réponses qui restent en ligne sur une requête type https://www.google.com/search?q=scrabble+en+ligne

      Est-ce à dire que Hasbro n'a pas fait de démarche juridique depuis 2008 (celle que tu références dans ton lien) ? Est-ce que simplement changer le nom suffit à ne pas être en porte-à-faux vis-à-vis du droit d'auteur ?

    • [^] # Re: droits d'auteur

      Posté par  . Évalué à 8. Dernière modification le 21 avril 2020 à 12:40.

      Non, le jeu ne doit pas être considéré comme partiellement libre. Le code est complètement libre et c'est une question totalement séparée du droit des marques. Hasbro a zéro droit sur mon code. Un code partiellement libre, ça n'existe pas. Ça me parait super important.

      Bien sûr, cela n'exclut pas les problèmes autour du droit des marques et c'est bien de l'évoquer, mais je n'ai pas de nouveaux éléments par rapport à la dernière fois, la discussion était assez complète et peut intéresser les gens qui ont des questions sur ce sujet.

  • # Bug de la lettre qui disparaît corrigé !

    Posté par  . Évalué à 9. Dernière modification le 22 avril 2020 à 23:51.

    Grâce à un retour par mail hier matin, qui a rendu pour moi ce bogue de trois ans reproductible. Il suffisait de déplacer une pièce vers le chevalet sur une pièce existante. Les pièces sont alors poussées pour laisser de la place à la pièce qui arrive. À ce moment là, le client n'envoyait pas les bonnes commandes au serveur. Le serveur appliquait partiellement ces commandes avant d'envoyer une erreur, ignorée par le client.

    La correction a impliqué une correction du serveur et du client.

    Le serveur met maintenant les opérations à effectuer pour mettre à jour l'état du jeu dans une file d'attente, et ne les applique que tout à la fin quand tout est correct.

    Le client, lui, ignorait les erreurs du serveur, et il lançait des commandes incorrectes au serveur. Les deux choses sont corrigées. Le client refuse de continuer à fonctionner lors de la réception d'une erreur du serveur et il envoie les bonnes commandes dans ce cas là.

    La correction du client suffit à résoudre le problème et est déjà en place sur le le site du jeu.

    Des parties sont en cours (au moins 200 parties aujourd'hui !), et si j'ai tout fait pour pouvoir redémarrer le serveur sans que cela ne perturbe les parties en cours (au pire, un petit message invitant à patienter s'affiche brièvement), je préfère éviter de le faire. On verra plus tard !

    • [^] # Re: Bug de la lettre qui disparaît corrigé !

      Posté par  . Évalué à 1.

      Bonjour, et bravo. Dès que j'ai aperçu la news, j'ai organisé une partie, et j'aime, moi aussi, tout particulièrement l'aspect assez "manuel" on fait tout à la main. On y était pour de vrai, dans la partie, comme en IRL! Une petite visio en complément sur un autre écran, et c'est top.
      Nous avons rencontré, nous aussi, trois ou quatre fois, un phénomène de disparition de pièces, pour une partie jouée aujourd'hui à 18h, donc après la correction. Par contre, les pièces réapparaissent quand le magicien joueur rafraîchi la page immédiatement. Mais si un autre joueur a posé ses lettres entre temps, la pièce disparue ne réapparaît pas.
      Au final, pas bloquant, de par ce coté très libre, on peut jouer avec un trou dans un mot. Au pire, un coup de marqueur sur l'écran… :))

      • [^] # Re: Bug de la lettre qui disparaît corrigé !

        Posté par  . Évalué à 3. Dernière modification le 23 avril 2020 à 22:17.

        Merci pour ce retour !

        Tu saurais reproduire cette disparition "temporaire" ?
        Trois ou quatre fois en une partie c'est beaucoup !

        Au moins on sait que c'est côté client.

        • [^] # Re: Bug de la lettre qui disparaît corrigé !

          Posté par  . Évalué à 1. Dernière modification le 23 avril 2020 à 23:26.

          Deux nouvelles parties ce soir, trois participants, et pas mal de disparitions momentanées (3 à 4 par partie et par participant). De la prise sur le chevalet au transport sur le plateau, certaines lettres restantes sur le chevalet disparaissent. Mais je ne suis pas sur que ce soit identique pour les autres participants, et j'ai oublié de poser la question. Je ferai un retour plus complet dimanche, on a prévu une nouvelle partie.
          Ah et j'essayerai de "déclencher" les disparitions, voir si je peux cerner le phénomène.

          • [^] # Re: Bug de la lettre qui disparaît corrigé !

            Posté par  . Évalué à 4. Dernière modification le 26 avril 2020 à 13:47.

            Hier soir, j'ai changé la logique gérant le déplacement d'une pièce depuis le chevalet vers le plateau. J'ai bon espoir que ça limite ce genre de disparition qui pouvait avoir lieu quand des messages du serveur arrivent dans le désordre. Le genre de chose qui n'arrive pas quand je teste en local. En espérant que ça aide !

            • [^] # Re: Bug de la lettre qui disparaît corrigé !

              Posté par  . Évalué à 1.

              J'ai tardé à revenir, mais j'étais très très occupé à rester confiné…

              Bon, après quelques parties, il semblerait que le souci soit terminé, en tout cas pas de constat de disparition. Merci du boulot, et bravo!

              • [^] # Re: Bug de la lettre qui disparaît corrigé !

                Posté par  . Évalué à 3.

                Super nouvelle.

                Oui, finalement, ça occupe le confinement ! On est notamment occupé à ne pas sortir boire des coups, à ne pas faire de sport, à ne pas aller en rando, à ne pas voyager, quel programme !

                On rit comme on peut.

  • # ça m'intéresse !

    Posté par  . Évalué à 2.

    Je suis en train de réaliser également un jeu en ligne (Une implémentation du jeu de plis à deux "Fox in the Forest") et je me trouve confronté à un problème de stockage de l'état du jeu côté serveur.

    Sous quel format stockes-tu les parties côté serveur ?

    Vu que mon but est de proposer aussi une IA, je souhaitais sauvegarder l'ensemble des cartes jouées afin que l'IA puisse se baser sur les coups précédent afin de savoir quoi jouer, mais du coup mon "game state" est un dictionnaire assez bizarre (cartes jouées, en main, piochées…). Pour l'instant je le stocke sous forme de chaîne brute que je convertis en utilisant JSON dans une BDD, mais ça me semble assez sale.

    • [^] # Re: ça m'intéresse !

      Posté par  . Évalué à 3.

      L'état du jeu est constitué d'un ensemble de "jeux", contenant chacune l'état d'une partie. Je sérialise tout ça dans un fichier JSON, et je le recharge au redémarrage du jeu. Pas de base de données, mais c'est vrai que ça pourrait, avec un beau schéma relationnel :-)

      Ça garantirait pas de perte en cas de plantage, là on peut perdre quelques secondes (chaque modif déclenche un timeout qui va sauvegarder l'état du jeu). C'est aussi plus difficile à migrer.

  • # C'est vraiment top !

    Posté par  . Évalué à 3.

    Hello,

    D'abord Bravo et merci pour le dev de ce jeu.
    Je l'ai installé sur une kimsufi et l'installation est vraiment simple vu le peu de dépendances.
    On s'est connecté en audio sur une instance Jitsi et c'est vraiment cool. on est pas loin d'être dans la même pièce dans ces conditions.
    Ma mère et ma soeur on fait des parties seules et sans aucun soucis.

    2 idées de features :
    - quand on veut montrer son jeu ce serait bien de ne pouvoir montrer qu'une partie des lettres.
    - 2 ou 3 fois on aurait bien aimé pouvoir se montrer un emplacement sur le plateau. une fonctionnalité de "pointeur laser" ou quelque chose comme ça serait top.
    - pour le comptage des scores si on pouvait juste ajouter le score du tour en cours ça ferait moins de calcul mental :)

    Merci encore en tout cas.

    • [^] # Re: C'est vraiment top !

      Posté par  . Évalué à 3.

      Bonjour Seb,

      Merci pour ces retours. C'est super !

      • pour la possibilité de ne montrer qu'une partie des pièces, ne serait-il pas plus simple de les écrire dans le chat ?
      • excellent, l'idée du pointeur laser ! Je pense implémenter ça rapidement.
      • pouvoir ajouter le score du tour est prévu, on m'a demandé la fonctionnalité par mail :-) C'est clair que ça serait beaucoup plus utile comme ça.
  • # Lichess

    Posté par  (site web personnel) . Évalué à 7.

    Bravo pour ce beau projet !

    Ça me fait penser à un projet similaire, qui en l'espace de quelques années est devenu l'un des plus gros sites d'échecs du monde, Lichess. Le projet est entièrement libre et gratuit. Des dons permettent au créateur de s'y consacrer à plein temps, sachant qu'il est évidemment épaulé par plein de volontaires. Je ne sais pas si tu as autant d'ambition pour Trivabble, mais je me dis que ça peut être intéressant de voir comment le projet a été mené.

    Lichess : https://lichess.org/
    Interview du créateur : https://www.youtube.com/watch?v=iHP5AdRlRNY

    • [^] # Re: Lichess

      Posté par  . Évalué à 4.

      Merci pour l'info. La vidéo est superbe, merci beaucoup !

      Depuis que j'ai vu ton commentaire je me sens moins pressé pour sortir une version échecs du jeu puisqu'il existe déjà un choix libre et gratuit d'une qualité que je n'égalerai probablement jamais :-)

  • # Super principe

    Posté par  . Évalué à 1.

    J'adore le principe de pouvoir jouer "en temps réél" avec des amis.
    Je recherche un jeu de dé sur le même principe (ou chaque participant verraient ce que l'un des joueurs a lancé).
    Depuis le début du confinement, je fais des jeux de sociétés avec des amis, mais ceux que l'on peut jouer à distance sont rares et il faut parfois que chacun des participants aient une version du jeu chez lui.

    Axel

    • [^] # Re: Super principe

      Posté par  . Évalué à 2.

      Le jeu (non libre) Tabletop Simulator fonctionne sur ce même principe. Les règles du jeu ne sont pas implémentées, juste les composants des jeux. Du coup tu peux facilement faire ce que tu décris.

  • # Merci !

    Posté par  . Évalué à 4.

    Je trouve le principe du jeu excellent. Je l'ai montré à mon épouse qui regrette de ne pas pouvoir retrouver ses partenaires de jeu habituels. Je lui ai fait tester le jeu avec notre fille confinée à un autre bout du pays. Trivabble dans une fenêtre et une visio sur Suricate TV dans une autre leur a permis de jouer comme elle le font d'habitude : jeu ouvert et on cherche aussi à obtenir un total global le plus grand possible. Du coup ça cause beaucoup et la visio devient importante.
    En 2 parties elles ont eu chacune plusieurs fois le bug de la lettre qui disparaît, mais le rechargement de la page suffit à récupérer l'affichage. Dans ce cas cependant le contenu du chat est perdu, ce qui requiert de redemander à l'autre de montrer son jeu. Rien de rédhibitoire bien sûr.
    Encore merci, ainsi qu'à Algoo pour Suricate TV. :-)

    • [^] # Re: Merci !

      Posté par  . Évalué à 3. Dernière modification le 01 mai 2020 à 19:38.

      Bonjour Jean-Baptiste,

      Merci pour ce retour ! C'est chouette l'utilisation conjointe de Trivabble et Suricate TV, surtout que j'ai participé à la mise en place de ce dernier :-)

      J'ai corrigé pas mal de bogues liés à des pièces qui disparaissent, notamment aujourd'hui, j'espère que c'est résolu maintenant.

  • # Numéros de partie séquentiels

    Posté par  . Évalué à 4.

    Attention, il semble que tu tires les numéros de partie de manière séquentielle. Du coup, si on est maladroit (ou malveillant), on arrive sur la partie d'inconnus et on risque de voir des conversations qui ne nous regardent pas, ou tout simplement de perturber leur jeux (peut-on rendre les pièces et quitter le jeu) ?

    En général dans ce genre de situation on tire des numéros aléatoires et d'assez grande taille, avec des chiffres et des lettres (ou bien on donne des UUID, mais c'est gros) en gardant une base des parties en cours pour ne pas redonner un numéro déjà affecté.

    Sinon, c'est une belle réalisation. Bravo !

    • [^] # Re: Numéros de partie séquentiels

      Posté par  . Évalué à 3. Dernière modification le 01 mai 2020 à 19:40.

      Salut -mat, les numéros de parties sont bien tirés de manière aléatoire, avec utilisation d'un numéro jamais utilisé. Tu es peut-être sur un cas rare où les deux numéros se suivaient ? :-)

      Merci pour le retour !

      • [^] # Re: Numéros de partie séquentiels

        Posté par  . Évalué à 3.

        Mais comment tu fais lorsque tous les nombres a 4 chiffres ont été épuisées ? Un uuid serait pas plus simple ?

        Une petite feature request d'ailleurs lié à la partie, il serait pas possible de générer une URL a partager avec le numéro déja renseigné ? Ca évite les laborieuses recopies de numéros, surtout avec des gens pas à l'aise avec l'outil.

        • [^] # Re: Numéros de partie séquentiels

          Posté par  . Évalué à 7. Dernière modification le 08 mai 2020 à 09:44.

          Tu supposes que des numéros à 4 chiffres sont tirés, mais c'est juste parce qu'il y en a encore plein qui sont dispos :-)

          Si cet aspect t'intéresse je t'invite à lire le code :

          function newGameId() {
              let number;
          
              let k = 10000;
              let retries = 0;
          
              do {
                  number = Math.floor(Math.random() * k).toString();
          
                  if (retries > 10) {
                      retries = 0;
                      k *= 10;
                  } else {
                      retries++;
                  }
              } while (games[number]);
          
              return number.toString();
          }

          Le code cherche un nombre en dessous de 10000. Si 10 fois d'affilée, il tombe sur un numéro de partie déjà utilisé, il recommence avec 100 000, et ainsi de suite. Ça passe tout seul à l'échelle (j'avais oublié que j'avais fait ça, je suis plutôt content de moi en fait :-P).

          On pourrait tomber sur un numéro en dessous de 1000, mais il n'y a environ que 10% de chance que cela arrive, c'est pour ça qu'en général on tombe sur un numéro à 4 chiffres.

          Pour l'instant il n'y a pas eu de problème de performance lié au tirage. Bien sûr, le jour où ça pose problème, on devra aviser. On pourrait enregistrer la valeur de k par exemple au lieu de se payer 10 × x tentatives inutiles à chaque fois.

          Qu'apporte un uuid par rapport à cette solution ? Ça va être pénible à transmettre comparé à un numéro de quelques chiffres, et ça me semble beaucoup plus pénible à générer.

          Il s'avère aussi qu'en pratique, les gens qui ne sont pas à l'aise avec l'informatique s'en sorte bien avec le système actuel. Je le sais parce que j'ai reçu quelques mails, parfois de personnes âgées ou jouant avec des personnes âgées, et parmi les retours, on me dit que c'est simple à utiliser et on me demande de garder les choses simples à utiliser pour des personnes âgées. C'est facile de communiquer un numéro. Alors que copier une URL et l'envoyer, bah c'est moins intuitif :

          • cliquer sur un bouton copier l'URL (tout le monde n'a pas conscience qu'il ou elle peut copier l'adresse dans la barre du navigateur)
          • l'envoyer par mail (le numéro, ça s'envoie facile par texto, l'URL, un peu moins si tu n'es pas sur téléphone, et si le destinataire est sur son ordinateur, ça va l'embêter de recevoir une URL sur son téléphone)
          • l'autre clique… ou doit recopier l'URL

          Comparé à :

          • communiquer le numéro par mail ou texto
          • l'autre clique sur "Rejoindre ses adversaires"
          • saisit le numéro

          Plus simple ! Même si oui, il faut taper le numéro. Mais tout le monde sait taper ou recopier un numéro (c'est comme avec le téléphone que tout le monde sait utiliser), beaucoup plus de gens savent le faire que copier une URL.

          J'allais te répondre que ça serait cool, et une bonne idée, pour les "geek" / gens à l'aise d'avoir la possibilité de rejoindre une partie par URL mais cela pose un autre problème : elle s'enregistre dans l'historique. D'un coup, on introduit un bogue possible : le changement de numéro de partie silencieux et par inadvertance parce qu'on accède à la mauvaise adresse sans s'en rendre compte.

          J'ai réfléchi toute l'interface et en particulier ce mécanisme pour rejoindre une partie avec en tête quelqu'un qui a plus de 80 ans, et qui a découvert l'informatique et internet à travers une tablette il y a seulement quelques années. Je préfère une recopie pas si laborieuse à des comportements / une interface un peu compliquée. J'ai dû penser à l'époque à un mécanisme basé sur les URL pour rejoindre une partie (forcément séduisant !), et écarté l'idée pour les raisons mentionnées.

          Cela dit je suis ouvert au débat, dans le fond j'aimerais bien que cette fonctionnalité existe… mais seulement si elle résout un problème sans en ajouter d'autres :-)

  • # le sac

    Posté par  (site web personnel) . Évalué à 2.

    Salut,

    Projet très sympa : bravo !

    Une petite remarque : tu pourrais changer l'image du sac qui n'est pas très flatteuse ! Tu en trouveras plusieurs sur freesvg.org, la plupart ont un symbole de monnaie dessus, mais un petit tour dans inkscape te permettront de changer ceci en 2 clicks.
    Si tu ne veux pas te prendre la tête à changer une image, contacte moi, je te ferai ceci volontiers !

    Bonne journée.

    • [^] # Re: le sac

      Posté par  . Évalué à 2. Dernière modification le 11 mai 2020 à 19:05.

      Merci pour le retour, la suggestion et la petite recherche !

      C'est vrai que l'image du sac n'est pas tip top. En revanche je n'ai pas une nette préférence pour celles que tu pointes. Si je dois changer un élément si visible dans l'interface, il faudra que le remplaçant soit clairement meilleur (même si c'est très subjectif), les changements esthétiques ça peut perturber, je ne voudrais pas le faire inutilement.

      • [^] # Re: le sac

        Posté par  (site web personnel, Mastodon) . Évalué à 3.

        Je me suis amusée à en faire un pour Trivabble. Là en svg, j'ai repris les bruns du site et le plateau de jeu.

        « Tak ne veut pas quʼon pense à lui, il veut quʼon pense », Terry Pratchett, Déraillé.

        • [^] # Re: le sac

          Posté par  . Évalué à 3.

          Ah, sympa, merci ! Par contre le lien est protégé par mot de passe :-)

          • [^] # Re: le sac

            Posté par  (site web personnel, Mastodon) . Évalué à 3.

            Désolée, je paie un CHATONS notamment pour ce service, mais s'il est restreint sans que j'en sois avisée, ça fait vraiment braire.

            Donc voilà, il restera en ligne huit jours.

            Si je dois modifier des trucs, faut le dire. Je ferais en fonction de mes capacités :-)

            « Tak ne veut pas quʼon pense à lui, il veut quʼon pense », Terry Pratchett, Déraillé.

            • [^] # Re: le sac

              Posté par  . Évalué à 3.

              C'est peut-être un réglage ? Je crois qu'en partageant des liens avec NextCloud on peut choisir de protéger le partage par mot de passe :-)

              Bon en tout cas j'ai pu télécharger ton sac. Merci ! Tu veux bien qu'on en discute par courriel ? (adresse sur le site)

Suivre le flux des commentaires

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