Derniers messages
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:58Pour moi, le plus important, c'est que la fonction « Voir les messages non lus depuis la dernière fois» fonctionne correctement
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.

CitationOK avec ça
- Traduction française : plein de choix de termes qui sont foireux ("soumettre" plutôt que "poster", "réponse" au lieu de "répondre"...)
CitationOK avec ça
- 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 !
CitationOK avec ces deux propositions
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.
CitationJe ne sais pas trop, je n'utilise pas tant le RSS que ça
- 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" ?
CitationCe serait pratique, mais pas essentiel selon moi
- 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...
CitationOui, un seul endroit me semble mieux
- "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...
CitationC'est parfois utile de savoir si une éventuelle absence de réponse est dû à une non lecture par manque de vues.
- 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...
CitationPas trop d'opinion là-dessus, il faudra voir en réel ce que ça donnera
- "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)
CitationPersonnellement j'aime bien la présence de l'icône, elle aide à bien voir.
- Si il y a du nouveau : peut-être juste mettre le titre en gras ; l'icone "nouveau" a un coté assez lourd.
CitationLà aussi, à voir ce que ça donnera à l'usage
- 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.
CitationJe suis aussi pour cette option
- 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.
CitationOK, à voir en effet, c'est important
- 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 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.
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.
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
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
#55
Programmation / Godot et réseau
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.
Ça continue de discuter, l'idéal sera d'éditer et caler la suite de la discussion ici une fois que ça sera fini
Cette après-midi, ce qui existe a été discuté, je laisse le log ici pour les recherches et archives.
Spoiler for Hiden:
Ça continue de discuter, l'idéal sera d'éditer et caler la suite de la discussion ici une fois que ça sera fini

Dernier message par Zatalyz - 19 Janvier 2021 à 13:50:01
Cliquez pour afficher le message
J'ai réparé un bug d'envoi de mail, ce qui a révélé des bugs dans le Kloud.
C'est un sacré travail d'y réparer, et dans l'absolu avec Deed on aimerait migrer ça sur le nouveau service Numenaute, donc ça m'embête de passer 3 jours à réparer le Kloud, puis une semaine à paramétrer la Soute et 2 jours encore à transférer le Kloud dans la Soute. Alors je vais réduire un peu en évitant la première étape.
Le plan d'action que je propose :
1) On laisse le cron du kloud de khaganat éteint, et ses erreurs etc. Cela veut dire que le Kloud n'est pas entièrement fonctionnel pour le moment ! Mais vu l'activité je ne pense pas que ça sera gênant.
2) Sur la Soute :
- On traque les erreurs restantes. Je ne veux ni error, ni warning.
- On paramètre pour avoir plusieurs noms de domaines sur la même instance ET un thème par nom de domaine (cf https://help.nextcloud.com/t/howto-individual-themes-per-domain/27585 ). C'est faisable, reste à le faire...
- On regarde si on ne peux pas transférer les users, voir les partages (j'ai un doute sur ça...)
3) On transfère les données du Kloud vers la Soute ; j'ai les commandes qui vont bien pour ça, ça ne devrait pas être long.
C'est un sacré travail d'y réparer, et dans l'absolu avec Deed on aimerait migrer ça sur le nouveau service Numenaute, donc ça m'embête de passer 3 jours à réparer le Kloud, puis une semaine à paramétrer la Soute et 2 jours encore à transférer le Kloud dans la Soute. Alors je vais réduire un peu en évitant la première étape.
Le plan d'action que je propose :
1) On laisse le cron du kloud de khaganat éteint, et ses erreurs etc. Cela veut dire que le Kloud n'est pas entièrement fonctionnel pour le moment ! Mais vu l'activité je ne pense pas que ça sera gênant.
2) Sur la Soute :
- On traque les erreurs restantes. Je ne veux ni error, ni warning.
- On paramètre pour avoir plusieurs noms de domaines sur la même instance ET un thème par nom de domaine (cf https://help.nextcloud.com/t/howto-individual-themes-per-domain/27585 ). C'est faisable, reste à le faire...
- On regarde si on ne peux pas transférer les users, voir les partages (j'ai un doute sur ça...)
3) On transfère les données du Kloud vers la Soute ; j'ai les commandes qui vont bien pour ça, ça ne devrait pas être long.
Dernier message par SIELA1915 - 07 Décembre 2020 à 10:53:31
Cliquez pour afficher le message
D'ailleurs la coordonnée Z de "surface" des ponts est sur le pont est pas dans la zone en dessous. En spawnant des objets (par exemple un feu de camp) sous un pont, le moteur de jeu va chercher la surface et le feu va apparaitre sur le pont et pas en dessous. Pareil pour le personnage, si on se reconnecte (ou se téléporte), le Z est recalculé pour la position, donc si on s'est déconnecté sous un pont, on réapparaitra sur le pont. Ou si une zone de téléportation intersecte avec une falaise par exemple, on se retrouva des fois en haut de la falaise au lieu d'à coté du téléporteur.
Dernier message par YannK - 04 Décembre 2020 à 21:08:02
Cliquez pour afficher le message
Je pense que tu as rassemblé tout ce qu'on avait pu trouver. Sans accès aux sources des cartes où les hacks ont été mis en place, on n'en saura pas plus, malheureusement.
Je crois que le baking des maps par le pipeline fait que pour chaque position XY, le serveur calcule les points XY auxquels on peut accéder, avec un Z de positionnement visuel. Mais si le baking calcule la pente pour bloquer un passage (si elle est trop forte), cela ne veut pas dire qu'il tient compte du Z pour recréer l'espace en 3D pour le jeu en production. Là les maps se contentent de dire, pour les collisions si le XY vers lequel on veut aller est accessible depuis le XY où on est. Et ensuite le placement est Z est donné pour un placement visuel. Mais en aucun cas on n'est réellement dans du XYZ, on est juste sur du XY, qui est posé sur un modèle en 3D qui comporte du Z visuel, au moins au niveau des collisions.
Je ne sais pas si je suis clair, je pourrai en reparler sur le chat si besoin, mais en plus c'est un peu flou dans ma tête, ça commence à dater.
Je crois que le baking des maps par le pipeline fait que pour chaque position XY, le serveur calcule les points XY auxquels on peut accéder, avec un Z de positionnement visuel. Mais si le baking calcule la pente pour bloquer un passage (si elle est trop forte), cela ne veut pas dire qu'il tient compte du Z pour recréer l'espace en 3D pour le jeu en production. Là les maps se contentent de dire, pour les collisions si le XY vers lequel on veut aller est accessible depuis le XY où on est. Et ensuite le placement est Z est donné pour un placement visuel. Mais en aucun cas on n'est réellement dans du XYZ, on est juste sur du XY, qui est posé sur un modèle en 3D qui comporte du Z visuel, au moins au niveau des collisions.
Je ne sais pas si je suis clair, je pourrai en reparler sur le chat si besoin, mais en plus c'est un peu flou dans ma tête, ça commence à dater.
Dernier message par Zatalyz - 04 Décembre 2020 à 18:44:14
Cliquez pour afficher le message
L'axe Z, qui sert en principe à placer la hauteur des objets, a un fonctionnement assez particulier sur ce moteur. Si j'ai à peu près suivi (et je rappelle que je ne suis pas dev, donc il va falloir vérifier), le serveur envoie des coordonnées X,Y, Z : les deux premières ne sont pas très complexes, ça place les objets sur la carte. Le Z, par contre... Attention !
Aleajactaest travaille sur la récupération de ces coordonnées pour les échanges clients/serveurs et sans grande surprise, cet axe Z se conduit d'une façon peu intuitive. Je recopie ses messages.
Sachant que Liria avait pas mal épluché le sujet, et me souvenant de longues conversations autour des ponts dans Ryzom, j'ai cherché dans les vieux logs et les archives. Mais je crains que ces conversations aient eu lieu en jeu ou même en direct, je n'ai pas retrouvé les détails en rapport avec ce qui surnageait dans ma mémoire.
Je vais essayer d'expliquer ce dont je me souviens, après je colle encore quelques logs en rapport, qui donnent les pistes... encore une fois, entre ma mémoire et mes connaissances fragmentaires, ce que je dis peut être totalement faux ! mais ça fait des pistes.
<liria> l'absence d'axe Z c'est surtout que tu ne peux superposer eux chemin l'un au dessus de l'autre
<liria> sinon y 'a toujours une info Z qui est de où est le sol pour la coordonée X,Y
Lors de la génération des cartes, un certain nombre de choses vont être calculés et être fixées à ce moment. Entre autre "où est le sol" afin que les personnages puissent y marcher. Je pense que le niveau 0 de l'axe Z n'est pas absolu, mais relatif, c'est à dire : c'est au niveau de la surface du sol. Le reste se positionne par rapport à ça. À noter d'ailleurs que les collisions sont une aberration au niveau de l'axe Z, elles sont au niveau de l'infini, ce qui ne simplifie pas le fait de "sauter par dessus une barrière". Donc, en principe dans Ryzom, impossible d'avoir un chemin qui passe au dessus d'un autre, comme une route sur et sous un pont : le seul endroit où le personnage peut marcher est le point "0". Pourtant il y a quelques ponts dans Ryzom. Si on a l'occasion d'analyser ces cartes (et je crois qu'elles ne sont pas dispo dans les assets libérés), on se rend compte qu'un pont de ce genre est en réalité constitué de deux zones, et qu'on passe des sortes de portails entre elles (c'est invisible en tant que joueur, mais y'a des "trucs" sur les cartes). Ça se rapproche de ce qu'on peut croiser dans des moteurs de jeux en géométrie non euclidienne, et c'est absolument pas intuitif à comprendre. C'était cependant pas si rare à l'époque (les années 2000), visiblement le moteur de Landes Éternelles a un truc similaire.
Il est possible que la variable "Interior" soit justement utilisé pour ces hacks, c'est même assez probable. Bref, en gros, lorsqu'on est "sur" le pont, on est dans une zone, "sous" le pont dans une autre, et elles ne se chevauchent pas même si on peut visuellement voir le perso qui se ballade au dessus/dessous.
Logs qui datent de y'a longtemps ! (2013)
<liria> Lyne en générant la carte d'une région tu spécifies aussi les zones inaccessibles non traversable
<Lyne> Donc toutes les limites de pontons sont intraversables, c'est ça ?
<liria> par exemple la rembarde la falaise ou le bord du ponton...
<Lyne> D'accord
<liria> hum
<liria> d'un autre coté
<liria> on peut virer cette limite
<liria> sauf
<liria> que
<Lyne> Et je suppose qu'on ne peut pas les rendre traversable dans une seule direction ? *soupire*
<liria> vis à vis du mécanism du jeu
<liria> tu pourra aussi sortir de l'eau là
<liria> ce qui est moins logique
<Lyne> Sur un ponton, encore, s'il n'est pas trop haut, on peut se suspendre et faire un rétablissement. Sur une falaise....
<vaiatua> huhu
<liria> par défaut lors de la génération de la carte, il calcule le dénivellé entre deux points cote à cote et si la pente est torp forte
<liria> tu ne passe pas
<vaiatua> escalade rapide
<Lyne> "par défaut", "pente trop forte"... On peut l'envisager avec une pente forte vers le bas ?
<liria> non lyne
<Lyne> Dommage....
<liria> le mécanisme te dessine les surface du sol ou tu peux alle
<liria> aller*
<liria> pas un sens de passage
<vaiatua> pour l'animation escalier : si elle était implantée : elle se déclencherait seule ? comment ça se passe ?
<liria> calculer la pente c'est juste pour aider à déterminer si ce point est dans la surface atteignable
<liria> mais au final il ne garde que cette notion de surface atteignable
Osquallo a aussi travaillé sur le sujet, s'il passe, il sera le plus à même d'expliquer car il combine les connaissances du moteur de jeu et des mécanismes 3D.
L'axe Z est vraiment très particulier sur Nel. Baroque, même. Ça fait partie des trucs qui devaient avoir une bonne raison à l'époque, mais qui a créé des freins ensuite. Un des morceaux qui demanderait un dev au cœur bien accroché pour dépoussiérer la chose... et qu'on aie un axe Z qui fonctionne comme dans les jeux modernes. Cependant, ce n'est absolument pas trivial. Ce qui est souvent traduit par "une absence d'axe Z" dans les conversations ryzomiennes est une des choses qui marque le plus les joueurs de Ryzom, et comme certains d'entre eux sont dev, je suis certaine que tous ceux-là ont du regarder ça, puis repartir dans la foulée, effrayé. Il faut garder en tête que cela veut dire bidouiller des trucs qui touchent à la 3D, sujet épineux. Dans notre cas, vu qu'on part dans l'idée de virer l'actuel client 3D, il est possible que toucher à ce code soit un peu moins "gros" parce qu'on n'a pas besoin de toucher à la partie Nel... à voir.
Deed ajoute que ring/ark permet de superposer les choses, mais le fonctionnement de ces éléments est un peu différent, et on ne va pas trop s'embêter avec. Et de mémoire, on peut superposer les objets statiques (instanciés) qui ignorent les collisions, mais pas recréer des ponts/étages, où les objets mouvants (personnages, mobs) pourraient se déplacer.
Aleajactaest travaille sur la récupération de ces coordonnées pour les échanges clients/serveurs et sans grande surprise, cet axe Z se conduit d'une façon peu intuitive. Je recopie ses messages.
Citation de: Aleajactaest
Voici les deux codes incriminés. Le code côté Envoi de la position (coté client) - (j'ai viré du code pour simplifier)Code Sélectionner
// khanat-opennel-code/code/ryzom/common/src/game_share/action_position.cpp:96
void CActionPosition::pack (NLMISC::CBitMemStream &message)
{
// Get the right position, depending on the "relative" bit, and
// scale precision from 1 mm to 16 mm and take only 16 lower bits (=> 1048 m range)
uint32 pxy16;
uint16 posx16, posy16, posz16;
posx16 = (uint16)(Position[0] >> 4);
posy16 = (uint16)(Position[1] >> 4);
pxy16 = ((uint32)(posx16) << 16) | (uint32)posy16;
posz16 = ((uint16)(Position[2] >> 4) + 2) & ((uint16)0xFFFC);
if ( IsRelative ) posz16 |= (uint16)0x1;
if ( Interior ) posz16 |= (uint16)0x2;
message.serialAndLog1( pxy16 );
message.serialAndLog1( posz16 );
Le code coté VisualProperties - (j'ai viré du code pour simplifié)Code Sélectionner
// khanat-opennel-code/code/ryzom/client/src/property_decoder.cpp:73
void CPropertyDecoder::receive(TPacketNumber /* packetNumber */, CAction *action)
{
if (action->Code == ACTION_POSITION_CODE)
{
CActionPosition *act = (CActionPosition *)(action);
if ( act->IsRelative )
{
act->Position[0] = (sint32)act->Position16[0];
act->Position[1] = (sint32)act->Position16[1];
act->Position[2] = (sint32)act->Position16[2];
_Entities[act->Slot].PosIsRelative = true;
_Entities[act->Slot].PosIsInterior = false;
}
else
{
// Absolute position
decodeAbsPos2D( act->Position[0], act->Position[1], act->Position16[0], act->Position16[1] );
act->Position[2] = ((sint32)((sint16)act->Position16[2])) << 4;
if (act->Interior)
act->Position[2] += 2;
_Entities[act->Slot].PosIsRelative = false;
_Entities[act->Slot].PosIsInterior = act->Interior;
}
et le résultat dans les capturesCode Sélectionner
2020/05/14 21:58:38 packet_1727 Client3 Server1 MsgXML/POSITION/X 8868703
2020/05/14 21:58:38 packet_1727 Client3 Server1 MsgXML/POSITION/Y -10595373
2020/05/14 21:58:38 packet_1727 Client3 Server1 MsgXML/POSITION/Z 5724
2020/05/14 21:58:38 packet_1727 Client3 Server1 MsgXML/POSITION/Heading -0.5890485644340515
2020/05/14 21:58:39 packet_1739 Server1 Client2 VisualProperty/Slot_184/POSITION_CODE/px 30005
2020/05/14 21:58:39 packet_1739 Server1 Client2 VisualProperty/Slot_184/POSITION_CODE/py 58685
2020/05/14 21:58:39 packet_1739 Server1 Client2 VisualProperty/Slot_184/POSITION_CODE/pz 66
2020/05/14 21:58:39 packet_1739 Server1 Client2 VisualProperty/Slot_184/POSITION_CODE/IsRelative False
2020/05/14 21:58:39 packet_1739 Server1 Client2 VisualProperty/Slot_184/POSITION_CODE/Interior True
2020/05/14 21:58:43 packet_1779 Server1 Client2 VisualProperty/Slot_184/Sint64/PROPERTY_ORIENTATION 3200265882
J'ai mis les données en bit, plus facile pour les comparaisonsCode Sélectionner
2020/05/14 21:58:38 packet_1727 Client3 Server1 MsgXML/POSITION/X 00000000100001110101001101011111
2020/05/14 21:58:38 packet_1727 Client3 Server1 MsgXML/POSITION/Y 11111111010111100101001111010011
2020/05/14 21:58:38 packet_1727 Client3 Server1 MsgXML/POSITION/Z 00000000000000000001011001011100
2020/05/14 21:58:38 packet_1727 Client3 Server1 MsgXML/POSITION/Heading 10111110011101000101101110001100
2020/05/14 21:58:39 packet_1739 Server1 Client2 VisualProperty/Slot_184/POSITION_CODE/px 0111010100110101
2020/05/14 21:58:39 packet_1739 Server1 Client2 VisualProperty/Slot_184/POSITION_CODE/py 1110010100111101
2020/05/14 21:58:39 packet_1739 Server1 Client2 VisualProperty/Slot_184/POSITION_CODE/pz 0000000001000010
2020/05/14 21:58:39 packet_1739 Server1 Client2 VisualProperty/Slot_184/POSITION_CODE/IsRelative False
2020/05/14 21:58:39 packet_1739 Server1 Client2 VisualProperty/Slot_184/POSITION_CODE/Interior True
2020/05/14 21:58:43 packet_1779 Server1 Client2 VisualProperty/Slot_184/Sint64/PROPERTY_ORIENTATION 10111110110000000010111010011010
si on regarde plus finement on obtient :Code Sélectionner
X : 00000000100001110101001101011111 => xxxxxxxxxxxx0111010100110101xxxx
Y : 11111111010111100101001111010011 => xxxxxxxxxxxx1110010100111101xxxx
Z : 00000000000000000001011001011100 ?? 0000000001000010
Heading : 10111110011101000101101110001100 ==10111110110000000010111010011010
bref, on retrouve une relation entre X, Y & Heading, par contre Z (même en ajoutant +2 , cela ne marche pas)
Sachant que Liria avait pas mal épluché le sujet, et me souvenant de longues conversations autour des ponts dans Ryzom, j'ai cherché dans les vieux logs et les archives. Mais je crains que ces conversations aient eu lieu en jeu ou même en direct, je n'ai pas retrouvé les détails en rapport avec ce qui surnageait dans ma mémoire.
Je vais essayer d'expliquer ce dont je me souviens, après je colle encore quelques logs en rapport, qui donnent les pistes... encore une fois, entre ma mémoire et mes connaissances fragmentaires, ce que je dis peut être totalement faux ! mais ça fait des pistes.
<liria> l'absence d'axe Z c'est surtout que tu ne peux superposer eux chemin l'un au dessus de l'autre
<liria> sinon y 'a toujours une info Z qui est de où est le sol pour la coordonée X,Y
Lors de la génération des cartes, un certain nombre de choses vont être calculés et être fixées à ce moment. Entre autre "où est le sol" afin que les personnages puissent y marcher. Je pense que le niveau 0 de l'axe Z n'est pas absolu, mais relatif, c'est à dire : c'est au niveau de la surface du sol. Le reste se positionne par rapport à ça. À noter d'ailleurs que les collisions sont une aberration au niveau de l'axe Z, elles sont au niveau de l'infini, ce qui ne simplifie pas le fait de "sauter par dessus une barrière". Donc, en principe dans Ryzom, impossible d'avoir un chemin qui passe au dessus d'un autre, comme une route sur et sous un pont : le seul endroit où le personnage peut marcher est le point "0". Pourtant il y a quelques ponts dans Ryzom. Si on a l'occasion d'analyser ces cartes (et je crois qu'elles ne sont pas dispo dans les assets libérés), on se rend compte qu'un pont de ce genre est en réalité constitué de deux zones, et qu'on passe des sortes de portails entre elles (c'est invisible en tant que joueur, mais y'a des "trucs" sur les cartes). Ça se rapproche de ce qu'on peut croiser dans des moteurs de jeux en géométrie non euclidienne, et c'est absolument pas intuitif à comprendre. C'était cependant pas si rare à l'époque (les années 2000), visiblement le moteur de Landes Éternelles a un truc similaire.
Il est possible que la variable "Interior" soit justement utilisé pour ces hacks, c'est même assez probable. Bref, en gros, lorsqu'on est "sur" le pont, on est dans une zone, "sous" le pont dans une autre, et elles ne se chevauchent pas même si on peut visuellement voir le perso qui se ballade au dessus/dessous.
Logs qui datent de y'a longtemps ! (2013)
<liria> Lyne en générant la carte d'une région tu spécifies aussi les zones inaccessibles non traversable
<Lyne> Donc toutes les limites de pontons sont intraversables, c'est ça ?
<liria> par exemple la rembarde la falaise ou le bord du ponton...
<Lyne> D'accord
<liria> hum
<liria> d'un autre coté
<liria> on peut virer cette limite
<liria> sauf
<liria> que
<Lyne> Et je suppose qu'on ne peut pas les rendre traversable dans une seule direction ? *soupire*
<liria> vis à vis du mécanism du jeu
<liria> tu pourra aussi sortir de l'eau là
<liria> ce qui est moins logique
<Lyne> Sur un ponton, encore, s'il n'est pas trop haut, on peut se suspendre et faire un rétablissement. Sur une falaise....
<vaiatua> huhu
<liria> par défaut lors de la génération de la carte, il calcule le dénivellé entre deux points cote à cote et si la pente est torp forte
<liria> tu ne passe pas
<vaiatua> escalade rapide

<Lyne> "par défaut", "pente trop forte"... On peut l'envisager avec une pente forte vers le bas ?
<liria> non lyne
<Lyne> Dommage....
<liria> le mécanisme te dessine les surface du sol ou tu peux alle
<liria> aller*
<liria> pas un sens de passage
<vaiatua> pour l'animation escalier : si elle était implantée : elle se déclencherait seule ? comment ça se passe ?
<liria> calculer la pente c'est juste pour aider à déterminer si ce point est dans la surface atteignable
<liria> mais au final il ne garde que cette notion de surface atteignable
Osquallo a aussi travaillé sur le sujet, s'il passe, il sera le plus à même d'expliquer car il combine les connaissances du moteur de jeu et des mécanismes 3D.
L'axe Z est vraiment très particulier sur Nel. Baroque, même. Ça fait partie des trucs qui devaient avoir une bonne raison à l'époque, mais qui a créé des freins ensuite. Un des morceaux qui demanderait un dev au cœur bien accroché pour dépoussiérer la chose... et qu'on aie un axe Z qui fonctionne comme dans les jeux modernes. Cependant, ce n'est absolument pas trivial. Ce qui est souvent traduit par "une absence d'axe Z" dans les conversations ryzomiennes est une des choses qui marque le plus les joueurs de Ryzom, et comme certains d'entre eux sont dev, je suis certaine que tous ceux-là ont du regarder ça, puis repartir dans la foulée, effrayé. Il faut garder en tête que cela veut dire bidouiller des trucs qui touchent à la 3D, sujet épineux. Dans notre cas, vu qu'on part dans l'idée de virer l'actuel client 3D, il est possible que toucher à ce code soit un peu moins "gros" parce qu'on n'a pas besoin de toucher à la partie Nel... à voir.
Deed ajoute que ring/ark permet de superposer les choses, mais le fonctionnement de ces éléments est un peu différent, et on ne va pas trop s'embêter avec. Et de mémoire, on peut superposer les objets statiques (instanciés) qui ignorent les collisions, mais pas recréer des ponts/étages, où les objets mouvants (personnages, mobs) pourraient se déplacer.
Dernier message par alcyone - 05 Octobre 2020 à 21:40:56
Cliquez pour afficher le message
Pour ma part, je n'ai pas de préférence particulière.
Je prête juste particulièrement attention en vrac :
Je prête juste particulièrement attention en vrac :
- au côté responsive (pas vraiment testable sans installer) qui est la principale attente d'un changement de thème il me semble
- à la licence bien sûr
- aux appels externes style Google Font et autres joyeusetés.






