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 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.

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.
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.

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)

// 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é)

// 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 captures

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 comparaisons

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 :

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 :

  • 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.
Dernier message par Zatalyz - 19 Septembre 2020 à 10:00:17
Cliquez pour afficher le message
Oui, en fait ma sélection se base sur les "formes" plus que sur les couleurs (ça, ça va être dans la charte Khaganat, idem pour les polices même si je suis pas encore au point sur ça), c'est à dire la structuration du rendu html. Tout ce qui est css pur est assez facile à changer, par contre je peine plus sur la partie php, d'autant que c'est assez complexe pour un forum. Pour autant je veux quand même bouger des choses, par exemple la façon dont les sous-forums sont affichés.

En discutant hier, je me suis rendue compte que j'avais oublié de regarder les licences. Faut avouer que c'est pas simple, elles sont dans les zip. SMF étant sous une licence open, les thèmes peuvent être non-libres... Et c'est le cas de Morning, Greeny, Flexive et autres thèmes créés par SMFHack, qui ont en plus des fichiers inutilisables (feuilles css minifiées).

Pour Bastion, le code php est velu, pour le moment je ne comprends pas tout, mais j'ai déjà bidouillé un peu. Le css par contre est assez horrible, on sent que ce n'était pas la tasse de thé de celui qui a fait ça. Ça va être long à nettoyer mais la base est bonne.

D'ailleurs, la façon dont les thèmes sont gérés par SMF est plutôt bien. En fait, le code dans son ensemble est vieillot, avec des maladresses sur certains points, mais avec plein de bonnes choses aussi. Ça veut dire que c'est extrêmement personnalisable : donner une apparence phpbb-like est absolument faisable, pour qui a les compétences. Ce n'est pas complètement mon cas, puisque cela demande de déplacer des bouts de php et qu'il y a une sacrée masse de trucs.

J'ai une assez bonne idée de vers où je vais aller côté design, mais si quelqu'un d'autre a envie (réellement envie...) de se pencher sur le sujet et de travailler aussi sur le code, je peux faire des maquettes et un dépôt git. Si je suis seule, je ne vais pas m'embêter à ça dans un premier temps, ça demande plus de boulot.
Dernier message par Mopi - 18 Septembre 2020 à 22:37:58
Cliquez pour afficher le message
J'ai regardé très rapidement les images et pour l'instant il y en a trois qui m'ont tapé dans l'œil :


  • Bastion que j'aime beaucoup
  • Morning qui est sympa
  • Flexive qui passe

Je pense que d'autres pourraient être cool en changeant les couleurs ou les polices, c'est des gros détails qui se voient beaucoup, mais voilà ma tite sélection o/
Dernier message par Zatalyz - 18 Septembre 2020 à 21:39:20
Cliquez pour afficher le message
Flexive et NightBreeze font appel à des CDN (ajax.google.api.com dans le premier cas, jquery.com dans le second). C'est une fichue contrainte : traquer ce qui peut être appelé est pénible. Les deux autres sont des bases plus complexes : Bastion a besoin de beaucoup de fignolage et nettoyage, tandis que Böru a besoin de beaucoup de changement d'architecture. Vu que Bastion est celui qui m'inspire le plus, je vais probablement choisir de hurler sur ce dernier.

Oui, le développement en rageant, c'est une méthode pas agile qu'aucun manager n'osera vous proposer, mais c'est tellement bon...
Dernier message par Zatalyz - 18 Septembre 2020 à 21:00:29
Cliquez pour afficher le message
Je me suis enfin décidée à installer un clone du forum afin de toucher au thème. L'actuel combine trois problèmes :
- Il n'est pas responsive. Il y a la possibilité de passer en "wap2" (qui est pas mal) mais l'option est bien cachée. Or la plupart des gens utilisent un ordiphone au quotidien...
- Il n'est pas accessible. Idem, le wap2 aide, mais avant d'y arriver... Et ça, c'est encore moins acceptable que le pas responsive.
- Il a divers soucis d'ergonomie. Le thème ne résoudra pas tout mais peu aider un peu.

N'ayant pas envie de partir de zéro (trop de taf), je vais prendre un des thèmes responsives (malheureusement rien ne sort sur le côté accessible). Et parce que la recherche de thème sur smf est complètement foireuse, voici la liste des thèmes responsives compatibles avec la 2.0.17 (la notre).  Ça me permettra de recommencer à zéro quand je craquerais sur un des thèmes !
https://custom.simplemachines.org/themes/index.php?lemma=2941 : Ant's Curve : trop surchargé. Thème de base de SMF en responsive, en fait.
https://custom.simplemachines.org/themes/index.php?lemma=2833 :  Redsy : basique, un peu froid à mon goût et je ne parle pas des couleurs. Pas mal de truc pour le rendre moins "pro" et plus "potes".
https://custom.simplemachines.org/themes/index.php?lemma=2917 : NightBreeze : la partie responsive semble bien sur les captures d'écran, mais ça me semble un peu lourd sinon. Cependant, y'a ptet de quoi faire.
https://custom.simplemachines.org/themes/index.php?lemma=2929 : RDD : très classique, ce qui peut être bon, mais du coup assez surchargé aussi. Y'a une démo : responsive de mon...
https://custom.simplemachines.org/themes/index.php?lemma=2946 : Bastion : même auteur que RDD, même pseudo-responsive. Il y a cependant une organisation spatiale intéressante en version bureau. Ça me tente pas mal, je vais m'en inspirer.
https://custom.simplemachines.org/themes/index.php?lemma=2872 : Morning : proche de Bastion dans l'organisation, à voir... Il est un peu lourd sur certains morceaux mais réellement responsive. Mais quand même plein de petits soucis, sur Desktop comme sur Mobile.
https://custom.simplemachines.org/themes/index.php?lemma=2734 : MinDI : triste et pfff ça m'inspire pas.
https://custom.simplemachines.org/themes/index.php?lemma=2948 : Lifestyle : jamais.
https://custom.simplemachines.org/themes/index.php?lemma=2916 : Lazarus : de ce que je devine des captures d'écran, ça ne me passionne pas.
https://custom.simplemachines.org/themes/index.php?lemma=2950 : Jane : Simple et fonctionnel. Une base acceptable.
https://custom.simplemachines.org/themes/index.php?lemma=2835 : Greeny : du même auteur que Morning et quelques autres, et on sent que la base est similaire, avec les mêmes qualités et défauts.
https://custom.simplemachines.org/themes/index.php?lemma=2847 : Gaming Nation : trop lourd, j'ai vu mieux.
https://custom.simplemachines.org/themes/index.php?lemma=2846 : Flexive : dans la suite de Morning, mais avec une meilleure gestion des sujets en responsive (moins bon en desktop, mais moins mauvais que Greeny et Morning).
https://custom.simplemachines.org/themes/index.php?lemma=2836 : Exodus : Clone froid de Morning/Greeny.
https://custom.simplemachines.org/themes/index.php?lemma=2930 : Börü : des aspects sympas, pas mal de trucs à bouger cependant.
https://custom.simplemachines.org/themes/index.php?lemma=2806 : Reseller : Clone pro triste (mais propre) de Morning/Greeny.
https://custom.simplemachines.org/themes/index.php?lemma=2921 : SunRise : quand la description raconte que ça ne sera pas tout responsive, ça aide pas. Il est pas vilain de ce que j'en vois, mais bon...

Pour mes premiers tests, je vais naviguer entre NightBreeze, Bastion, Böru et Flexive, ce dernier étant probablement la meilleure base. Tout va dépendre ensuite de la qualité du code...
Dernier message par Zatalyz - 25 Août 2020 à 11:02:18
Cliquez pour afficher le message
Petite mise à jour sur les plugins...

Déjà, faut que je fasse du tri. Vi, moi, parce que je maitrise Dokuwiki plus que n'importe qui ici, je crois, que ce soit en tant qu'admin ou en tant qu'utilisatrice. Là, on a quelques plugins, je pense que ça fait partie des anciens bundle et ça ne sert plus à rien... Cela va me demander un peu de pistage (à grands coups de grep sur la syntaxe) mais c'est pas compliqué donc je devrais arriver à le faire... à un moment !

Ensuite pour Inlinetoc, plus d'infos dans les logs apache :
PHP Fatal error:  Declaration of action_plugin_inlinetoc::register(&$controller) must be compatible with dokuwiki\\Extension\\ActionPlugin::register(Doku_Event_Handler $controller) in /home/zatalyz/test_www/dokuwiki/lib/plugins/inlinetoc/action.php on line 0
Ne maitrisant pas le php, je vais ramer à en faire quelque chose, de celle-ci, mais au moins on sait quel fichier regarder (action.php dans le plugin, première ligne) et où chercher. Un mage bienveillant pour faire de la magie paix-hasch-paix ?

J'ai fait un dokuwiki de test, avec une installation vierge (pas en ferme), je suis en train de liste toutes ces choses en détail et après je pourrais faire des tests de bidouilles.

Edit : j'ai viré les plugins suivants :
- Source
- Syntaxhighlighter4
- Extended Table Syntax 3

Le reste est utilisé à un moment ou un autre, uu utile dans la gestion des wikis.

Edit bis : ben j'ai réussi à corriger Inlinetoc. Si si... faut juste que je trouve comment y mettre en ligne.

Edit ter  : y'a même mieux, quelqu'un qui a revu le plugin : https://github.com/Andreone/dokuwiki_inlinetoc/pull/7 ... Par contre comme le plugin est abandonné, ça n'a pas été inclus. J'ai ouvert un sujet là-dessus (forum dokuwiki), l'idéal étant de pousser sur Dokuwiki, mais pour nous, ça résoud le souci.
Licences Mentions légales Accueil du site Contact