Aller au menu du forum Aller au contenu du forum Aller à la recherche dans le forum
Logo Khaganat
Menu principal

Derniers messages

Dernier message par YannK - 14 Octobre 2022 à 16:50:26
Cliquez pour afficher le message
Une première sélection pour orienter les choix, j'ai tenté de faire un peu varié et il y a peut-être 2-3 blagues dans le lot, je ne garantis rien :p

CC BY Lorc, http://lorcblog.blogspot.com



CC BY Delapouite, https://delapouite.com



Comme j'ai les .svg, on peut aisément mélanger/adapter/uniformiser
Dernier message par Zatalyz - 13 Octobre 2022 à 19:11:11
Cliquez pour afficher le message
Appel aux bonnes idées graphiques !

Je vais avoir besoin de lots d'icones.

Première fournée : icônes destinées au menu. Pour être honnête, j'hésite à mettre des icones ici : d'un côté ça surcharge l'interface, de l'autre c'est, pour certaines personnes, plus rapide à retrouver que le texte seul. Comme je suis embêtée avec le code pour les mettre dans l'ordre que je veux, je crains que les icones soient une bonne idée. En tout cas celles par défaut ne me vont vraiment pas du tout.

La contrainte : elles doivent être simples et lisibles en petit, et tenir dans un carré de 16 px.

Les items :
    Accueil
    Rechercher
    Admin
    Modérer
    Membres
    Messagerie
    Alertes
    Profil
    Déconnexion
    Messages récents
    Messages non lus
    Sujets mis à jour
Dernier message par Zatalyz - 25 Août 2022 à 09:46:18
Cliquez pour afficher le message
Petite note à moi-même, concernant les "vues" à travailler en mode responsive, dans l'ordre de priorité :
- Board générale et sous-forum :
     - la liste des forums
     - et sur la même logique, la liste des sujets dans un sous-forum
- Sujet : quand on ouvre un sujet, l'enchaînement des messages.
- Répondre/éditer/prévisualiser
- Page du profil
    - édition et configuration
- Page de recherche
- Messagerie
- Liste des membres, statistiques
Dernier message par Zatalyz - 25 Août 2022 à 09:39:15
Cliquez pour afficher le message
Suite de la réflexion, après m'être rendu compte que nécessairement, il y a quelques différences lorsqu'on est co/pas co.

Le lien des derniers messages (dernières 24h, derniers 20 messages, peu importe) est utile pour suivre même si, pour une raison ou une autre, on ne peux pas se co. Par contre, une fois connecté, il est possible d'afficher les "messages non lus", plus fin. J'imagine que le mieux, pour ne pas alourdir l'ergonomie, est de remplacer le premier lien (24h) par le suivant (les non-lus).

Par ailleurs, il est difficile de mettre tous les liens utiles sans alourdir l'ergonomie. Je reste, en mode desktop, sur la logique suivante : barre générique de Khaganat, bannière du cms, puis contenu de ce dernier. Je pense que sur les écrans ayant une certaine largeur/hauteur, le menu sera probablement mieux sur le côté gauche ; de toute façon le corps des messages reste plus lisible si on ne dépasse pas trop les 80 caractères donc, cela laisse pas mal de vide à gauche et à droite. Je me dit d'ailleurs que peut-être tirer un peu plus partie de la largeur serait intéressant ; ainsi on aurait de gauche à droite, en colonne :
- le menu générique (avec les liens vers le profil, les derniers messages, la recherche, etc)
- la colonne avec les avatars et quelques infos liées
- la colonne avec les messages
- une colonne étroite avec les boutons propres à chaque message : citer, éditer, signaler, modérer (groupe que je baptise "outils" par la suite).

Ce qui fait que les messages eux-mêmes, au niveau des lignes du tableau, ne garderaient vraiment que ces trois éléments :
- Date (je crois qu'elle reste meilleure ici ? )
- corps du message
- signature - ou pas.

Car concernant les signatures, j'ai comme un doute. Elles font partie de la socialisation sur forum ; une façon de parler de soi. Mais sous les messages elles alourdissent aussi la lecture. Alors, est-ce qu'elles ne seraient pas mieux dans la partie "avatar" ? Dans cette optique, la case de l'avatar contiendrait les éléments suivants (avec en gras ce qui est obligatoire, tout le reste étant facultatif) :
- Nom : le pseudo est important pour savoir qui parle.
- Titre(s) : géré par le forum ; on pourrait virer mais j'aime bien alors na. Accessoirement cela fait partie des fonctions "sociales" du forum : repérer ainsi potentiellement les modos etc, mais aussi les personnes plus ou moins impliquées sur le forum.
- Image représentant l'avatar : par défaut, rien (on a le droit), OU avatar aléatoire tant que la personne n'a pas choisi une image ?
- Citation : texte libre, pouvant être mis en page via le bbcode, équivalent de la signature. On peut laisser la possibilité de mettre des images, mais sachant que le cadre a une taille limitée, cela demandera de la ruse pour avoir aussi flamboyant que certaines signatures des années 2000. Ce qui me convient. On peut prendre le risque de laisser la possibilité de mettre une url là-dedans aussi, car elle ne sera active que si la personne poste des messages, et si c'est un spammeur, il se retrouvera satellisé. Il doit même être possible d'interdire les url avant d'avoir posté un certain nombre de message.

Et c'est assez. Cliquer sur le nom ou l'avatar renverra vers le profil public, d'où il sera possible de voir les contributions de la personne et de lui envoyer un MP si on est connecté, et quelques autres détails de kikimeter, ainsi que des infos plus approfondies pour les admins (d'ailleurs y'a probablement un peu trop d'infos visibles par les admins, par défaut, mais bon...). Je n'ai pas envie de laisser sur la partie "avatar" des message des détails comme la date d'inscription, le lien direct vers les mp ou encore la présence en ligne.

Si vous voyez d'autres éléments utiles à voir dans cet espace, ou si vous pensez que j'en met déjà trop, je vous lirais avec attention.

Concernant le menu sur le côté gauche, pour entrer un peu dans les précisions : lorsque nous ne sommes pas connecté, il affichera (probablement dans un autre ordre, à voir ce qui est "logique")
- Rechercher : ouvre la fenêtre vers la recherche avec option. Je pense que je préfère ça à un champ direct, car chercher sur un forum demande toujours d'affiner un peu pour avoir des résultats pertinents.
- Choix de la langue d'affichage
- Thème : là j'hésite mais il me semble que pouvoir facilement switcher de thème même sans être co permettra de mieux répondre à certains besoins : thèmes sombres/clairs/plus contrastés/adaptés à certaines dyslexies (chargement de police). Vraiment dans une optique d'accessibilité en premier lieu...
- Les derniers messages
- Connexion/inscription

Une fois co, la liste des items sera la suivante :
- Rechercher
- Choix de la langue d'affichage
- Thème
- Les messages non-lus depuis la dernière visite
- Notifications (concerne uniquement les sujets/forums où on est abonné)
- Messagerie
- Mes messages
- Mes brouillons (nouvelle fonctionnalité que je trouve intéressante)
- Gestion du profil
- Déconnexion

Ce à quoi la connexion en tant qu'admin ajoutera les items du menu admin, mais ça ça concerne peu de monde donc osef et ça ne change rien à la logique.

À noter que je pourrais alléger aussi : actuellement, cliquer sur son nom dans le menu ouvre un sous-menu, assez bien rempli, avec les options de gestion de profil, mais aussi les liens "mes messages" et "mes brouillons".

Voilà pour la version "large desktop".

En dessous d'une certaine taille, on passe dans un format que j'appelle "tablette" mais qui est aussi valable sur des usages fenêtrés (vu que c'est assez usitée par au moins une de nos utilisatrices, je vais le prendre en compte autant que possible). C'est mon format le plus bâtard car la surface reste plus grande qu'un mobile mais peu être complètement étrange en terme de ratio. Là, l'item "menu" reviendra sous la bannière, en ligne ; quitte à faire deux lignes. La présentation des messages va me rendre chèvre. Je pense que je garderais la logique en 3 colonnes (avatar-message-outils), en réduisant la partie avatar à sa plus simple expression : le nom et l'image en format mini-vignette. Mais, si ça ne va pas, je prendrais la même option qu'en mode "mobile".

Le mode mobile correspond en gros à la taille d'un écran de smartphone, c'est à dire très étroit et pas très grand. Ici on va rester encore plus sobre. Le menu sera similaire à celui sur les wiki : un hamburger en haut à déplier. Les messages reprendront le thème par défaut actuel, qui est très bien : une seule colonne, bien moins d'infos affichées. En gros cela s'organise ainsi :
- Nom de l'intervenant
- Date
- Corps du message
- Outils

Voilà en gros l'idée générale.
Dernier message par Zatalyz - 17 Août 2022 à 11:42:33
Cliquez pour afficher le message
Pour le bug, si vous arrivez à décrire une procédure pour le reproduire, ça pourrait aider à tester :)
Dernier message par YannK - 17 Août 2022 à 10:29:42
Cliquez pour afficher le message
Citation de: Zatalyz le 17 Août 2022 à 09:29:58
La première chose qui m'aiderait, c'est que vous me pointiez des forums où vous êtes actifs. Rien que de pouvoir voir leur ergonomie sera déjà utile. Si, en plus, vous pouvez analyser vos usages, voir ce qui fait que votre participation est fluide, ce qui vous plait, c'est encore mieux. À ce stade, c'est pour moi le plus important.
Pour moi, le plus important, c'est que la fonction « Voir les messages non lus depuis la dernière fois» fonctionne correctement :)

Citation
- Traduction française : plein de choix de termes qui sont foireux ("soumettre" plutôt que "poster", "réponse" au lieu de "répondre"...)
OK avec ça

Citation
- Enlever la réponse rapide. Nous ne sommes pas sur un chat, le but est justement d'être moins dans l'immédiateté.
- Smiley : va nécessiter un plugin... pas possible dans l'admin d'assigner des raccourcis à des smileys, de configurer leur titre et alt. Bon point : les alt sont renseignés. Question : sont-ils lisibles ? Par ailleurs, je préfèrerais un bouton pour déplier la liste de smiley, pouvoir les organiser en catégorie, en ajouter, etc... Oui le smiley est vital sur forum !
OK avec ça

Citation
Menu et global :
- Lien vers les messages non lus. Configurer pour que lors de la création du compte, tous les messages soient lus (oui c'est bête mais...). 
- Ajouter aussi un bouton "messages des dernières 24h" ? Probable que ce soit redondant et moins utile, pourtant je m'en sers plus que les non-lus sur le forum de ryzom.
OK avec ces deux propositions

Citation
- Lien vers flux RSS facile à trouver. À noter qu'il existe un plugin pour s'abonner spécifiquement à un/des sous-forum via RSS : cela vous semblerais utile ou de toute façon ce sera du "tout suivi" ?
Je ne sais pas trop, je n'utilise pas tant le RSS que ça

Citation
- Améliorer la visibilité de l'option "s'abonner au forum" (=> notification de tout nouveau message par mail).  Ajouter l'option pour le faire sur l'ensemble du forum, sans cliquer dans chaque sous-forum...
Ce serait pratique, mais pas essentiel selon moi

Citation
- "Rechercher" est redondant (deux boutons). Champ en haut => rapide mais n'affiche pas les options. Bouton plus bas => lien vers les options. Garder celui-ci, je crois...
Oui, un seul endroit me semble mieux

Citation
- Séparer les colonnes "réponse" et "vues". Je ne sais pourquoi, mais ça passe mieux. Cependant, le nombre de vue me semble une donnée vraiment inutile sauf pour l'ego...
C'est parfois utile de savoir si une éventuelle absence de réponse est dû à une non lecture par manque de vues.

Citation
- "Démarré par" : Alléger un max, "Par" suffit amplement, voir juste le pseudo.
- L'en-tête des colonnes doit être clairement séparé de la liste des messages (fond de couleur par exemple)
Pas trop d'opinion là-dessus, il faudra voir en réel ce que ça donnera

Citation
- Si il y a du nouveau : peut-être juste mettre le titre en gras ; l'icone "nouveau" a un coté assez lourd.
Personnellement j'aime bien la présence de l'icône, elle aide à bien voir.

Citation
- Séparer la colonne "messages" et "sujets". "Sujets" doit être en premier
- En-tête des colonnes avec "Sujets, message, dernière réponse" ; ces infos n'ont rien à faire sur les lignes (c'est hyper redondant).
- Dernier message : $titre par $répondant, (retour ligne) $date $heure. Uniquement le titre cliquable. Mieux, toute la zone est un lien cliquable vers la réponse.
Là aussi, à voir ce que ça donnera à l'usage

Citation
- Par défaut, abonnement et notification mail à toute réponse à un sujet où on a participé. Chacun peut aussi régler ça chez soi ensuite.
Je suis aussi pour cette option

Citation
- Les icones de "nouveau messages" restent-elles allumées après qu'on aie vue le message ? Ça hélas on va le découvrir après migration, j'ai du mal à reproduire le bug.
OK, à voir en effet, c'est important :)
Dernier message par Zatalyz - 17 Août 2022 à 09:29:58
Cliquez pour afficher le message
Il y a déjà deux ans, nous avions pris conscience que le forum actuel, dans son ergonomie, ne favorisait pas les échanges. Cette marche d'entrée rebutait suffisamment pour expliquer qu'il aie été si peu utilisé après le passage à SMF. Je sais que les usages évoluent aussi, pourtant je reste persuadée qu'un forum peu être vivant à condition d'être un lieu agréable.

Pour corriger ça, je me lance enfin dans sa réfection. Et je vais aussi avoir besoin de vos retours, afin d'améliorer au mieux les choses.

La première chose qui m'aiderait, c'est que vous me pointiez des forums où vous êtes actifs. Rien que de pouvoir voir leur ergonomie sera déjà utile. Si, en plus, vous pouvez analyser vos usages, voir ce qui fait que votre participation est fluide, ce qui vous plait, c'est encore mieux. À ce stade, c'est pour moi le plus important.

La seconde chose, c'est de bosser sur la liste des choses à changer par rapport au thème de base de SMF. Pas celui du forum, déjà un peu bidouillé, mais ce qu'on peut voir ici : https://www.simplemachines.org/community/index.php

Le reste de ce message concerne mes premières notes, qu'il est possible de discuter bien sûr.

À noter que le nouveau thème de SMF est responsive par défaut ; je vais tenter de ne pas casser ça. Et il semble plus accessible aussi, mais il faudra vérifier dans les coins. Quoi qu'il arrive, à terme le thème pour Khaganat sera responsive et accessible (autant que possible), cela fait partie des points importants.

Points génériques à modifier
- Traduction française : plein de choix de termes qui sont foireux ("soumettre" plutôt que "poster", "réponse" au lieu de "répondre"...)

Concernant les sujets :
- Enlever la réponse rapide. Nous ne sommes pas sur un chat, le but est justement d'être moins dans l'immédiateté.
- Smiley : va nécessiter un plugin... pas possible dans l'admin d'assigner des raccourcis à des smileys, de configurer leur titre et alt. Bon point : les alt sont renseignés. Question : sont-ils lisibles ? Par ailleurs, je préfèrerais un bouton pour déplier la liste de smiley, pouvoir les organiser en catégorie, en ajouter, etc... Oui le smiley est vital sur forum !

Menu et global :
- Lien vers les messages non lus. Configurer pour que lors de la création du compte, tous les messages soient lus (oui c'est bête mais...). 
- Ajouter aussi un bouton "messages des dernières 24h" ? Probable que ce soit redondant et moins utile, pourtant je m'en sers plus que les non-lus sur le forum de ryzom.
- Lien vers flux RSS facile à trouver. À noter qu'il existe un plugin pour s'abonner spécifiquement à un/des sous-forum via RSS : cela vous semblerais utile ou de toute façon ce sera du "tout suivi" ?
- Améliorer la visibilité de l'option "s'abonner au forum" (=> notification de tout nouveau message par mail).  Ajouter l'option pour le faire sur l'ensemble du forum, sans cliquer dans chaque sous-forum...
- "Rechercher" est redondant (deux boutons). Champ en haut => rapide mais n'affiche pas les options. Bouton plus bas => lien vers les options. Garder celui-ci, je crois...

Liste des sujets :
- Séparer les colonnes "réponse" et "vues". Je ne sais pourquoi, mais ça passe mieux. Cependant, le nombre de vue me semble une donnée vraiment inutile sauf pour l'ego...
- "Démarré par" : Alléger un max, "Par" suffit amplement, voir juste le pseudo.
- L'en-tête des colonnes doit être clairement séparé de la liste des messages (fond de couleur par exemple)
- Si il y a du nouveau : peut-être juste mettre le titre en gras ; l'icone "nouveau" a un coté assez lourd.

Forum et sous-forum
- Séparer la colonne "messages" et "sujets". "Sujets" doit être en premier
- En-tête des colonnes avec "Sujets, message, dernière réponse" ; ces infos n'ont rien à faire sur les lignes (c'est hyper redondant).
- Dernier message : $titre par $répondant, (retour ligne) $date $heure. Uniquement le titre cliquable. Mieux, toute la zone est un lien cliquable vers la réponse.

Détail de configuration (côté admin pour le truc par défaut) :
- Par défaut, abonnement et notification mail à toute réponse à un sujet où on a participé. Chacun peut aussi régler ça chez soi ensuite.

Bugs à vérifier :
- Les icones de "nouveau messages" restent-elles allumées après qu'on aie vue le message ? Ça hélas on va le découvrir après migration, j'ai du mal à reproduire le bug.
Dernier message par YannK - 25 Avril 2022 à 21:32:02
Cliquez pour afficher le message
Faisant suite à mon message d'hier sur l'architecture des services, j'ai mis au propre une proposition des exécutables sur lesquels nous devront nous pencher, et les dépôts Git qui y sont liés. Une partie de ces derniers seront communs, via des addons Godot qui permettront de partager les données entre les différents projets. Certains existent déjà, d'autres pas encore.



J'ai rassemblé les différents exécutables serveur sous un seul terme, « Ensemble serveur ».

Le « Khréateur » désigne ce qui servira aux level designers d'ajouter du contenu en jeu, de préparer les éléments, objets, missions, textes et cartes qui seront ensuite envoyés sur le serveur pour y être instanciés.

« L'oeil de la reine » servira à intervenir en direct sur le contenu en jeu : mise en place d'événements temporaires, action directe sur certaines données de jeu, modération en temps réel... Il pourrait même intégrer des caméras IG qui retransmettent des endroits.

Le client 3D est le premier à être envisagé, permettant de parcourir le Khanat en 3D.

Là encore, c'est une proposition qui est là pour être discutée, retravaillée etc. et mon svg est dispo pour celles qui veulent le reprendre.
Dernier message par YannK - 24 Avril 2022 à 22:31:12
Cliquez pour afficher le message
Ça fait un petit moment que je réfléchis à ce que l'on devrait mettre en place comme infrastructure technique et je me suis décidé à mettre ça un peu au propre. Si vous y voyez de très fortes inspirations d'OpenNeL, c'est normal, c'est basé dessus dans ses concepts. Par ailleurs, je trouve chouette d'essayer de garder au max leurs termes, pour rendre hommage à leur boulot qui demeure une source énorme d'inspiration pour Khaganat.

J'ai essayé de voir ce qui nous serait nécessaire à terme et de penser en modules qui pourraient eux-mêmes ensuite être découpés de nouveau, voire répartis sur plusieurs machines (dans ce cas il faudrait y ajouter de nouveaux gestion de load-balancing et de cohésion de la structure, mais on en est pas encore là).

J'ai donc fait un petit schéma simplifié pour vous proposer une base d'architecture et commencer à poser le vocabulaire (histoire de savoir de quoi on parle et ce qu'on met dans chaque terme). L'idée est aussi qu'on ait quelques billes en tête quand Godot 4 sera sorti et qu'on pourra vraiment commencer à implémenter le client de démo non multijoueur. On a intérêt à anticiper pour ne pas avoir à tout refaire pour le moment où on introduira le multijoueur. En sachant comment les services s'articuleront, on peut déjà commencer à bosser nos modules/classes et méthodes pour que leur déport soit ensuite facilité.



Il n'y a rien de révolutionnaire, c'est une structure épurée de ce que proposait le NeL, qui devrait nous offrir tout ce dont on aura besoin à moyen terme, sans gêner la montée en charge. Je ne sais pas encore ce que ça représenterait en terme d'exécutables à générer et/ou de machines à envisager pour le moment. Il me semble que se mettre d'accord sur ce qu'on va bâtir est un préalable avant de voir comment tout ça pourrait se générer via Godot.

Pour le client du milestone 0.1, on n'aurait qu'à se soucier de quelques classes et méthodes de l'Entity Game Service et du Global Position Manager Service, en gros.

Pour celles qui veulent, je peux partager mon .svg si vous voulez jouer avec  :)

Et pour celles qui veulent avoir quelques billes sur ce qu'on avait trouvé dans OpenNeL :
- https://khaganat.net/wikhan/fr:serveur_tour
- https://khaganat.net/wikhan/fr:commandes_serveur_ai_share
- https://khaganat.net/wikhan/fr:commandes_egs

Dernier message par Zatalyz - 24 Avril 2022 à 16:21:32
Cliquez pour afficher le message
Godot 4 voit arriver la gestion du réseau. Parallèlement à ça, une chaine vidéo développe la mise en place d'un réseau pour MMORPG basé sur Godot : https://www.youtube.com/playlist?list=PLZ-54sd-DMAKU8Neo5KsVmq8KtoDkfi4s.

Cette après-midi, ce qui existe a été discuté, je laisse le log ici pour les recherches et archives.

Spoiler for Hiden:
<YannK> J'ai découvert une super série d'un gars sur YT qui fait une suite de vidéos sur les techniques pour créer un MMORPG avec Godot, avec toutes els problématiques serveur (gateway, échnages sécurisés, déplacement de certains services sur le serveur pour éviter els exploits etc. etc.) : https://www.youtube.com/playlist?list=PLZ-54sd-DMAKU8Neo5KsVmq8KtoDkfi4s 
<YannK> C'est à la fois très précis niveau implémentation, mais il explique aussi les questions de façon un peu théorique pour qu'on comprenne les raisons de ses choix. 
<YannK> Je n'ai pas fini de regarder, mais jusque là j'ai trouvé ça de très très bonne qualité :) 
<YannK> Et du coup, j'y ai appris qu'un serveur seul sous Godot ne peut pas gérer plus de 4095 connections en même temps ^^ 
<YannK> Et il parle donc des méthodes pour ne pas avoir son architecture limitée par cette contrainte 
<Link Mauve> C'est dû à quoi ? 
<YannK> La contrainte des 4095 ? 
<‎Link Mauve>: Oui. 
<YannK> Hard codé dans Godot, mais je ne sais pas pourquoi 
<YannK> Mais de toute façon, on arrive à des goulots bien avant à d'autres niveaux :) 
<YannK> Tycho, si jamais tu as un jour l'envie de regarder cette série, j'aimerais bien ton avis sur son approche de la sécurité car il semble prendre ça très au sérieux :) 
<Tycho> oh god, il y a tellement de contenu... 
<YannK> Ah mais carrément, je trouve que c'est une des meilleurs chaines Godot que j'ai trouvées, avec GDQuest 
<Tycho> bon, je commence à regarder vite fait 
<Tycho> je pense faire mes remarques au fur et à mesure 
<Tycho> déjà je ne regarde pas tout, juste els vidéo qui causent de sécu 
<Tycho> donc je commance avec « Godot Multiplayer - Player Authentication | Godot Dedicated Server #3 » 
<Tycho> à 4:40, il parle de filtrage d'IP afin de ne pas totalement exposer le serveur d'auth : c'est OK, mais perso je pousserai plus loin en regroupant tous les serveurs dans un réseau privé et donc le serveur d'auth ne serait que dans ce réseau local, pas du tout sur internet 
<Tycho> et je précise que disposer d'un filtrage par IP alors que l'on est dans le réseau privé peut rester une bonne idée suivant la sensibilité des données 
<Tycho> ça ne coûte pas plus cher et ça augmente la sécurité, alors go 
<Tycho> à 5:14, il parle d'un token : alors ça se fait et c'est un choix respectable 
<Tycho> après, il y a également d'autres méthodes qui sont également cool 
<Tycho> le choix de la solution va surtout dépendre ses caractéristiques et des contraintes que l'on a 
<Tycho> je ne sais pas si c'est adapté à un MMORPG, mais un biscuit ( https://www.biscuitsec.org/ ) c'est super cool 
<Tycho> genre c'est adapté dans le sens où ça aide énormément à scale la solution, après le seul point qui m'inquiète c'est la taille du biscuit qui devra être transmis sur le réseau 
<YannK> Super, merci Tycho de ces retours. pourrais-tu juste mettre un tag genre #godotmultiplayerGDCtutorial comme ça je pourrais ensuite compiler tout ça à la fin ? 
<Tycho> punaise, j'ai vraiment l'impression qu'il stock le mot de passe en clair 
<Tycho> NE JAMAIS FAIRE ÇA 
<Tycho> j'ai pas mal attendu afin de voir si c'était temporaire et qu'il allait corriger 
<Tycho> ça n'a pas l'air d'être le cas 
<Tycho> et bien entendu, la comparaison du mot de passe est faite avec ==, ce qui est totalement sensible à une timing attack 
<Tycho> pareil pour le check de l'existence du client, ce qui est fun car il explique pourquoi il ne faut pas laisser savoir si c'est le login ou le mot de passe qui est mauvais 
<Tycho> mais bon, c'est moins grave 
<Tycho> allez, je passe direct à « Network Token Verification | Godot Dedicated Server #6 » 
<Tycho> bon, sa génération de token est pourave 
<Tycho> 32 bits d'entropie c'est pas assez 
<Tycho> bon, vu qu'il y a un timestamp ça passe, mais du peu que j'ai vu du code ça a l'air potentiellement foireux 
<Tycho> sérieusement mec, faut 128 bits d'entropie pour un truc unique et fiable 
<Tycho> puis le SHA-256 sert à quedal là 
<YannK> Sur le stockage du mot de passe en clair, il explique que c'est mal et pourquoi et ensuite il a une vidéo sur le hash et le salt 
<Tycho> ha ok, faudra que je regarde ça alors 
<Tycho> punaise, le timestamp qui à l'air sujet au bug de 2038 https://en.wikipedia.org/wiki/Year_2038_problem 
<YannK> Ses titres sont assez explicites, du coup tu vois comment il développe peu à peu les concepts 
<Tycho> rectification : ça semble dépendre d el'implem de l'OS, donc ça doti passer 
<Tycho> franchement, la génération du token c'est mauvais 
<Tycho> il prend 32 bits, qu'il hash afin d'ateindre une longueur de 256 bits (mais qui ne dispose toujours que de 32 bits d'entropie) qu'il va représenter sur 64 caractères donc 512 bits 
<Tycho> bref, prendre 128 bits d'aléat et les représenter en hexa divise la longueur de la première partie du token par 2 et en améliore considérablement la sécurité 
<Tycho> à noter que ça ne sert à rien de prendre plus de 128 bits d'entropie 
<Tycho> c'est juste de la perte de ressources 
<Tycho> fun fact : sa fonction de purge des tokens expirés pourrait etre plus performante 
<Tycho> supprimer 1 par 1 chaque token est pourri car sa liste est de base ordonnée (et s'il veut il peut s'en assurer de manière plus fiable), donc il suffit qu'il repère le token valide le plus vieux et qu'il supprime tous ceux qui sont situés avant dans la liste 
<Tycho> et du coup regarder la liste par le début ou par la fin se calcule en fonction des usage, faut monitorer et faire des stats afin de savoir lequel des 2 modes est le plus efficient (pareil pour la fréquence de purge d'ailleurs) 
<‎pep.>: TIL biscuit 
<Tycho> ouais, un biscuit (ainsi que d'autres technos telles qu'un HMAC, JWT, etc) permettrait d'éviter la boucle qu'il fait pour attendre l'éventuel retard de réception du token par le serveur de jeu 
<Tycho> OMFG 
<Tycho> la jolie faille :p 
<Tycho> je reprend la vidéo après avoir mangé et soudainement, en regardant sa boucle, ça me saute aux yeux 
<Tycho> while OS.get_unix_time() - int(token.right(64)) <= 30 
<Tycho> vous l'avez ? :) 
<Tycho> token.right(64) ← il utilise une donnée non-authentifiée provenant de l'utilisateur dans un calcul 
<Tycho> un token forgé dans lequel on met tout au max et sa boucle ne s'arretera jamais 
<Tycho> enfin théoriquement si, mais vu la durée le serveur sera fermé/reboot/whatever bien avant que ça ne s'arrete 
<Tycho> lui qui est parano au sujet des DOS causés par des connexions trop longues, il a oublié cet aspect là ^^ 
<Tycho> au passage, je me demande ce qu'il se passe si le token est plus court que prévu et que du coup il n'y a pas la longueur nécessaire pour juste le timestamp 
<YannK> Je crois qu'il fait un tru ensuite contre cet exploit justement, Tycho 
<Tycho> sinon, vu que le token est détruit, je confirme que ça peut totalement être remplacé par un mécanisme de HMAC qui est moins sujet à ce genre de problèmes, faut juste prévoir une rotation des clés une fois de temps en temps (par exemple, sur EvE online il y a 1 reboot chaque jour, c'est le moment idéal pour changer la clé) 
<YannK> Comme il tente de faire des vidéos pas trop longue, il implémente un concept à la fois, donc des fois il laisse les choses un peu "en l'état", mais il l'expliquait je ne sais plus quand 
<Tycho> YannK: exact, il en parle 
<Tycho> j'avais juste pas atteint l'endroit 
<Tycho> c'est dans la même vidéo, mais un peu plus loin 
<YannK> ouf, ça va alors :) 
<YannK> Comme ile me paraissait sérieux, j'ai eu peur qu'il ait laissé un éléphant dans la pièce ^^ 
<YannK> (ce qui aurait hypothéqué le sérieux de l'ensemble je trouve) 
<Tycho> ya encore la génération du token qui est pourrie 
<Tycho> et j'ai pas encore vu sa correction sur le stockage du mot de passe 
<YannK> Disons que ce qui m'intéresse aussi, c'est la logique générale, si elle te semble sérieuse et cohérente. Les méthodes utilisées pour implémnter la logique m'inquiètent moins car ça peut toujours s'améliorer, comme tu le propose juste en regardant rapidement, déjà :) 
<Tycho> je suis quand même déçu qu'il fasse le test en conservant sa fonction vulnérable à une modification du token 
<Tycho> allez hop, go « DTLS Encryption with SSL Certificates | Godot Dedicated Server #7 » 
<Tycho> oula, j'aime pas le début 
<Tycho> OMFG 
<Tycho> un certif auto-signé 
<Tycho> désolé mais c'est merdique 
<Tycho> NE PAS LIER LA GÉNÉRATION DU CERTIFICAT AU SERVEUR 
<Tycho> on fait ça à coté 
<Tycho> punaise c'est de la torture cette vidéo de création de certif auto-signé 
<Tycho> puis RSA bien entendu, c'est pas mauvais mais c'est pas le plus optimal 
<Tycho> et puis RSA 4096, genre le mec crois que parce que 4096 est supérieur à 2048 c'est forcément mieux (pas trop, ça prend juste plus de ressources) 
<Tycho> ha, il cause enfin de la différence entre un vrai certif et une bouze auto-signée 
<Link Mauve> (Beaucoup plus de ressources.)
<Tycho> le mec qui dit qu'un certif bien signé ça coûte du fric... 
<Tycho> dans une vidéo de 2020, donc quand let's encrypt existe déjà 
<Tycho> et fournit des certif gratos et qu'en plus c'est automatisable 
<Tycho> je me pose des questions sur l'utilisation de DTLS au lieux de TLS 
<Tycho> vu qu'il ne chiffre que les communications qui ne sont pas critiques (donc en UDP ou similaire), il n'en met que sur les connexions qui peuvent se permettre d'etre en TCP et donc TLS 
<Tycho> peut-etre que c'est une limitation de godot 
<Zatalyz> Tycho, tu es OK pour que je mette tout ça sur le forum par la suite ? ça facilitera pour retrouver les infos :) 
<Tycho> Zatalyz: yep ! 
<Tycho> bon, ya pas de véritable config de DTLS, du coup faut faire confiance à godot 
<Tycho> allez, je passe rapidement sur « Create New Account Function | Godot Dedicated Server #8 » 
<Tycho> a priori ya pas grand chose d'intéressant mais au cas où je regarde à certains moments 
<YannK> C'était surtout l'architecture de connexion sur laquelle j'avais envie d'avoir tes retours, mais si tu es curieux du reste, fais toi plaisir ^^ 
<YannK> Et du coup tu penses qu'on devrait mettre en place avec un certificat Let'sEncrypt dès le départ ? 
<Tycho> allez hop, go sur « Salting and Hashing Passwords | Godot Dedicated Server #9 » 
<‎Link Mauve> YannK, oui, ça ne coûte rien de plus que de l'utiliser pour un site ou quoi. 
<Deed>: humm, je vais peut-être dire une bêtise mais je ferai une connexion en "ssh" avec une clé pour la connexion client - serveur 
<Tycho> YannK: perso j'utiliserai vraiment un token client signé avec un HMAC plutot que de transférer le token au serveur de jeu, mais sa solution reste correcte, modulo la génération de la partie aléatoire 
<Tycho> bon, génération du sel pour le hachage de mot de passe : même erreur 
<Tycho> sérieux, c'est quoi la facination morbude des devs pour les fonctions de hachage ? 
<Tycho> OH SHIT 
<Tycho> sa fonction de hachage maison est, sans surprise, totalement pourrie 
<Tycho> après, comme il l'a expliqué avant, les vraies fonctions de hachage ne sont pas implémentées de base 
<Tycho> le mec ose comparer sa méthode à la con à bcrypt, ça me tue 
<Tycho> rien que sa manière d'intégrer le sel est mauvaise 
YannK imagine Tycho en train de faire des bonds sur sa chaise :D 
<Tycho> et du coup ya une autre failel de sécurité qu'il n'a pas vu venir : un utilisateur qui balance un mot de passe volontairement erronné mais absolument énorme (plusieurs milliers de caractères) 
<Tycho> sans limite haute, sa fonction de hachage va prendre un temps monstrueux 
<Tycho> sérieusement, réimplémenter PBKDF2 c'est pas bien compliqué vu qu'il a déjà les fonctions de hash qui vont bien (et sans doute un HMAC) 
<Tycho> en plus (comme PBKDF2), ya juste une protection sur le temps, yen a pas sur l'utilisation de la mémoire 
<Tycho> YannK: si tu as la doc du langage python-like qu'il utilise ça m'intéresse 
<YannK> https://docs.godotengine.org ^^ 
<Tycho> merci 
<Tycho> grrrrrr, il compare les hash direct avec ==, c'est pas bien >.< 
<Tycho> bon, il y a les HMAC de base, c'est cool 
<Tycho> sérieux, il aurait pu au moins utiliser ça 
<Tycho> tiens, ya un constant_time_compare donc, dès qu'on touche à de la crypto, faut l'utiliser au lieux de == 
<Tycho> au passage, la partie crypto dispose aussi d'un generate_random_bytes, ce qui semble bien mieux que ses truc d'int random 
<Tycho> bon, du coup je vais m'arreter là je pense 
<Tycho> YannK: du coup, tu penses utiliser son système en corrigeant les soucis ou bien passer sur ma méthode à base de HMAC ? 
<YannK> Je te fais confiance pour les meilleurs choix à faire en terme de sécurité :)
On en est très loin de faire le système, mais de savoir qu'on peut faire un truc très propre en restant dans Godot pour tous les éléments me plait bien. Si tu n'y vois rien de réellement problématique dans l'infra proposée et les seules problématiques comme étant améliorables à un niveau acceptable, ça me va parfaitement :) 
<YannK> Je compilerai tes remarques sur HMAC et Let's Encrypt en particulier pour lui faire un retour :) 
<Zatalyz> L'idée est plus de voir quelle architecture sera correcte pour tout ça 
<YannK> C'est ça, si on peut avoir un seul environnemùent de développement avec des fonctions intégrées qui se complètent, j'aime bien :) 
<Zatalyz> là, il semble y avoir des bases desquelles partir, modulo plus d'attention à certains aspects de sécurité (genre le choix des librairies, si j'ai compris, mais pas que) 
<YannK> Surtout que Godot a bossé sur cette partie pour la 4.0 
<Zatalyz> plus le temps passe et moins vous gardez de trucs du Nel par contre. Bon, ok, sur la partie sécu c'est aussi bien, mais... 
<Deed‎> j'allais le dire Godot 4 a bien bosser ce côté 
<Tycho> en totu cas godot n'a pas l'air d'avoir intégré de fonction de hachage de mots de passe :/ 
Zatalyz se demande si un jour elle verras le MMORPG :P 
<YannK> C'est à dire qu'on a un dev qui bosse sur Godot, là contre 0 qui étudient NeL, donc je préfère aller par là ;) 
<YannK> (l'article sur le Multiplayer dans Godot 4 : https://godotengine.org/article/multiplayer-changes-godot-4-0-report-3
<Deed‎> Zatalyz: on s'appuie sur NeL pour l'exemple quand même 
<YannK> Tout à fait Deed, je suis d'ailleurs en train de réfléchir à la façon dont on pourrait se baser sur les datasheets en XML pour penser une achitecture des données dans Godot :) 
<Zatalyz> oui   
<YannK> Tycho, dans l'article, il y a un exemple de code avec une méthode appelée dtls_server_setup ça te plaît ? ^^ 
<Tycho> YannK: quel article ? 
<YannK> Celui que je viens de partager :) 
<Tycho> ha, vu 
<Tycho> je regarde 
<Tycho> nope, ça load juste la clé privée et le certif 
<Tycho> confirmé : https://docs.godotengine.org/en/latest/classes/class_enetconnection.html#class-enetconnection-method-dtls-server-setup 
<Zatalyz> Le souci c'est le manque de monde. Chaque chose qu'on recode autrement demande du travail (sans parler de tout le reste : penser au gameplay, au gamedesign, au monde, etc). Donc attention, la priorité doit vraiment être d'avoir un bout de démo qui fasse envie. Il faut laisser de côté toutes les fonctionnalités secondaires pour éviter de perdre du temps dessus. Et le réseau, c'est un gros bout, donc je préfère vraiment qu'on s'y attaque quand il y aura du monde (ou alors si quelqu'un n'est motivé que par ça), mais qu'avant on est un bout de carte joli où se balader (même si on ne fait pas grand chose de plus) 
<YannK> Ah oui. Ça n'a rien à voir avec le premier client sur lequel on bosse, Zatalyz :) 
<Zatalyz> oui oui, je sais, mais je préfère bien enfoncer le clou :P 
<YannK> C'est juste pour savoir si on sera coincé par Godot à un moment ou pas. Et là il semblerait qu'on puisser petit à petit développer tout ce dont on aura besoin dedans, sans devoir chercher de quoi le compléter 
<Zatalyz> Oui, moins on a besoin de recoder des bloc, mieux c'est aussi; 
<Zatalyz> là, de ce que dit Tycho (tu me corrige si j'ai mal compris), il y aurait des blocs à coder pour utiliser des librairies de crypto correctes  ; mais, sachant ça, on peut y remonter à godot, les orienter vers les bonnes solutions, et espérer que d'ici à ce qu'on bosse sur le réseau, ça soit implémenté 
<YannK> Il y a plein de parties dans le NeL qui sont des outils que Godot intègre nativement, donc si ils conviennent, autant prendre els fonctions les plus haut-level du NeL et els réimplémenter dans Godot proprement plutôt que de chercher à bidouiller en connectant ce qu'on peut à un NeL boiteux 
<Zatalyz> oui 
<Tycho> Zatalyz: pour le token d'auth basé sur un HMAC c'est simple à faire car godot intègre ce qu'il faut, je peux meme contribuer 

Ça continue de discuter, l'idéal sera d'éditer et caler la suite de la discussion ici une fois que ça sera fini :)
Licences Mentions légales Accueil du site Contact