améliorations sur la nouvelle barre d'objets

Répondre
Avatar de l’utilisateur
TonyFlow
Messages : 985
Inscription : 02 mai 2007, 09:26
Localisation : Normandie / Pierre-Blanche
Contact :

améliorations sur la nouvelle barre d'objets

Message par TonyFlow »

Je me suis mis à réétudier un peu le code de la nouvelle barre de raccourcis d'objets, en pensant aux réactions de certains joueurs qui peuvent regretter le fonctionnement de l'ancienne barre.

Si j'avais mis une option pour remplir la barre à partir de l'inventaire, celà est loin d'être satisfaisant pour retrouver l'usage que l'on en faisait auparavant (c'est juste une action ponctuelle que l'on déclenche, rien d'automatique).

En faisant le tour du problème, j'en ai conclu 2 choses :
  • c'est envisageable de rendre la barre automatiquement synchronisée avec l'inventaire, au prix de quelques changements techniques dans le code et la manière de gérer ces raccourcis
  • cette réorganisation technique, en dehors d'être nécessaire pour cette amélioration, est de toute manière plus efficace (notament le calcul des quantités sur les raccourcis qui ne se ferait plus dans la fonction display)

Je me suis donc lancé dans les modifications et je suis arrivé à un résultat fonctionnel qui me convient bien. J'ai déjà pas mal testé le truc... donc je me suis permis de publier celà sur le svn (r2361), comme ça si d'autres peuvent eux aussi mettre à l'épreuve et confirmer que les fonctionalités sont bonnes, qu'ils n'hésitent pas ;)

Alors d'un point de vue utilisateur, les changements consistent en 2 nouvelles options dans le menu contextuel de la barre rapide :
  • "Compléter automatiquement" : Tout objet disponible dans l'inventaire sera ajouté à la barre rapide si aucun raccourci n'existait encore
  • "Supprimer automatiquement" : Dès qu'un objet de la barre n'est plus disponible (grisé avec qté=0) alors le raccourci est immédiatement supprimé

N'hésitez pas à tenter tout et n'importe quoi, à jouer avec différentes combinaisons d'options activées, à priori ça devrait tenir la route... Et je pense que si la màj corrective peut inclure ces fonctionalités ça en ravira plus d'un !

PS: Vi je sais bien que le but à l'heure actuelle n'est pas de risquer l'introduction de nouveaux bugs, mais c'est presque du correctif finalement ^^ Et ce message ne signifie pas que je doute de ma modif, c'est juste pour faire les choses sérieusement en assurant bien le truc :p
Just in case you never knew I miss you Slim, I love you too Oh! See my heart, it's black and blue When I die I will find you... My lovely man
But when you walk that walk and talk that talk You do it oh so well She's stone cold bush
Let me stand next to your Fire, my Pretty Little Ditty

Ackak
Messages : 7348
Inscription : 18 déc. 2005, 19:31

Re: améliorations sur la nouvelle barre d'objets

Message par Ackak »

On peut faire des modifs, aucun soucis, vu que pour l'instant on a pas "prévu" une mise à jour du client.

Pour les raccourcis claviers, j'ai entendu un joueur n'aimant pas le CTRL+SHIFT pour les objets (c'est peut-être le seul, je n'ai pas fait de "sondage"). Donc à voir en fonction des remontées des joueurs.
Celui qui apprend quelque chose de moi enrichit son savoir sans réduire le mien, tout comme celui qui allume sa chandelle à la mienne se donne de la lumière sans me plonger dans l'obscurité.
-- Thomas Jefferson

Avatar de l’utilisateur
TonyFlow
Messages : 985
Inscription : 02 mai 2007, 09:26
Localisation : Normandie / Pierre-Blanche
Contact :

Re: améliorations sur la nouvelle barre d'objets

Message par TonyFlow »

Il y a Kargorm qui a cherché le raccourci pour déposer un objet, je ne sais pas si c'est lui que tu as entendu ou un autre.

L'usage qui en était fait était le ramassage de sac, je ne pense pas que ce soit la méthode la plus simple pour celà de toute façon : double-clic sur le bouton obtenir, ou deux fois Alt+r (reparamétrable dans key.ini) me paraissent mieux dans ce cas.

Du coup j'ai encore tendance à supposer que cette action (déposer l'intégralité d'un item au sol) n'est pas la plus courament utilisée, et que la déplacer en Ctrl+Shift+Clic n'est pas bien génant...

Pour rappel, tel que défini à présent sur l'inventaire (ou la barre rapide) :
- Ctrl + clic : ajoute en raccourci dans la barre (ou le retire)
- Shift + clic : range au dépot (idem)
- Ctrl + Shift + clic : dépose au sol (idem)

Mais n'hésitez pas à vous exprimer si ça pose soucis (même si faut bien trancher et qu'on ne peut pas toujours satisfaire tout le monde ^^')
Just in case you never knew I miss you Slim, I love you too Oh! See my heart, it's black and blue When I die I will find you... My lovely man
But when you walk that walk and talk that talk You do it oh so well She's stone cold bush
Let me stand next to your Fire, my Pretty Little Ditty

Avatar de l’utilisateur
Flovixy
Messages : 1095
Inscription : 05 mai 2007, 08:56

Re: améliorations sur la nouvelle barre d'objets

Message par Flovixy »

Pour ma part, je préfère comme tu proposes, cela évite les erreurs. Par contre, je regrette que le racourci rapide pour "utiliser" les objets de la barre rapide soit passé à Ctrl + Shift + Numéro, ce n'est plus vraiment très "rapide". (Je me plaaaaains, mais j'adore la nouvelle barre qu'il faut "équiper".)
Eldorian au grand coeur
Maniant l’Épée et les Runes
Libre comme le Vent.

Avatar de l’utilisateur
TonyFlow
Messages : 985
Inscription : 02 mai 2007, 09:26
Localisation : Normandie / Pierre-Blanche
Contact :

Re: améliorations sur la nouvelle barre d'objets

Message par TonyFlow »

Sindy a écrit :Par contre, je regrette que le racourci rapide pour "utiliser" les objets de la barre rapide soit passé à Ctrl + Shift + Numéro
Les raccourcis en Ctrl/Alt(Shift)+numéro, ça c'est un "problème" à part. Il suffit d'éditer le fichier key.ini pour les définir comme on veut. Si la touche Shift a été ajoutée par défaut sur certaine combinaison, je crois que c'était pour résoudre des soucis sous windows... Jamais vu de problème a laisser Ctrl+num sous linux sinon. Dans tous les cas tu peux toujours essayer en retirant les LSHIFT dans le key.ini, possible que ça marche.
Just in case you never knew I miss you Slim, I love you too Oh! See my heart, it's black and blue When I die I will find you... My lovely man
But when you walk that walk and talk that talk You do it oh so well She's stone cold bush
Let me stand next to your Fire, my Pretty Little Ditty

Ackak
Messages : 7348
Inscription : 18 déc. 2005, 19:31

Re: améliorations sur la nouvelle barre d'objets

Message par Ackak »

Sur le serveur de test, j'ai fait des modifications pour que l'on puisse utiliser le flag ITEM_UID sur le client. J'ai essayé de faire quelques modifications rapides pour la nouvelle barre rapide, mais il semble y avoir un soucis avec les objets non empilables (j'avais plusieurs objets différents avec des images identiques : la binette et la pelle). Donc à voir encore pour améliorer les choses.

Reste aussi à bien tester, que les changements ne posent pas d'autres soucis.
Celui qui apprend quelque chose de moi enrichit son savoir sans réduire le mien, tout comme celui qui allume sa chandelle à la mienne se donne de la lumière sans me plonger dans l'obscurité.
-- Thomas Jefferson

Avatar de l’utilisateur
TonyFlow
Messages : 985
Inscription : 02 mai 2007, 09:26
Localisation : Normandie / Pierre-Blanche
Contact :

Re: améliorations sur la nouvelle barre d'objets

Message par TonyFlow »

Ackak a écrit :Sur le serveur de test, j'ai fait des modifications pour que l'on puisse utiliser le flag ITEM_UID sur le client. J'ai essayé de faire quelques modifications rapides pour la nouvelle barre rapide, mais il semble y avoir un soucis avec les objets non empilables (j'avais plusieurs objets différents avec des images identiques : la binette et la pelle). Donc à voir encore pour améliorer les choses.

Reste aussi à bien tester, que les changements ne posent pas d'autres soucis.
Salut ! J'ai voulu y jeter un coup d'oeil, mais apparement le serveur test ne m'envoit pas d'uid...
C'est normal ? ça a été désactivé sur le serveur ?
Just in case you never knew I miss you Slim, I love you too Oh! See my heart, it's black and blue When I die I will find you... My lovely man
But when you walk that walk and talk that talk You do it oh so well She's stone cold bush
Let me stand next to your Fire, my Pretty Little Ditty

Avatar de l’utilisateur
Nati
Messages : 12612
Inscription : 05 août 2004, 22:25
Localisation : Gelbique
Contact :

Re: améliorations sur la nouvelle barre d'objets

Message par Nati »

Le flag de compilation avait été désactivé côté serveur, suite à la dernière mise à jour.

Je viens de redémarrer le serveur test avec ce flag activé.

Avatar de l’utilisateur
Nati
Messages : 12612
Inscription : 05 août 2004, 22:25
Localisation : Gelbique
Contact :

Re: améliorations sur la nouvelle barre d'objets

Message par Nati »

Retour en arrière : si je l'active, plus aucun testeur Windows n'a accès au serveur de test dans des conditions normales, car je n'ai pas de client Windows avec ce flag activé sous la main.

Dès que j'ai mis la main sur un client Win qui l'a et qui marche, je remet le serveur avec le flag.

Hasdrubal
Messages : 5997
Inscription : 26 août 2007, 11:30

Re: améliorations sur la nouvelle barre d'objets

Message par Hasdrubal »

il semble y avoir un soucis avec les objets non empilables (j'avais plusieurs objets différents avec des images identiques : la binette et la pelle).

Ce ne serait pas simplement parce que ces deux objets-ci ont réellement la même image dans la version actuelle du jeu ?

Avatar de l’utilisateur
TonyFlow
Messages : 985
Inscription : 02 mai 2007, 09:26
Localisation : Normandie / Pierre-Blanche
Contact :

Re: améliorations sur la nouvelle barre d'objets

Message par TonyFlow »

Hasdrubal a écrit :il semble y avoir un soucis avec les objets non empilables (j'avais plusieurs objets différents avec des images identiques : la binette et la pelle).

Ce ne serait pas simplement parce que ces deux objets-ci ont réellement la même image dans la version actuelle du jeu ?
C'est justement tout l'intérêt du flag ITEM_UID : le serveur affecte alors un numéro unique aux différents objets, le client peut donc les différencier de manière plus fiable (sans quoi il n'a que le numéro de l'image pour le faire, d'où le soucis avec des objets partageant la même icone).
Just in case you never knew I miss you Slim, I love you too Oh! See my heart, it's black and blue When I die I will find you... My lovely man
But when you walk that walk and talk that talk You do it oh so well She's stone cold bush
Let me stand next to your Fire, my Pretty Little Ditty

Avatar de l’utilisateur
Nati
Messages : 12612
Inscription : 05 août 2004, 22:25
Localisation : Gelbique
Contact :

Re: améliorations sur la nouvelle barre d'objets

Message par Nati »

Bon, désormais c'est bon, serveur de test compilé avec le flag. Vous pouvez tester à condition d'avoir le client SVN.

Les testeurs ont à disposition un client SVN pour éviter les soucis.

Avatar de l’utilisateur
trinita
Messages : 2722
Inscription : 15 avr. 2006, 10:23
Localisation : Charente - France
Contact :

Re: améliorations sur la nouvelle barre d'objets

Message par trinita »

J'avais mis à dispo un client pour info
Trinita,

Administrateur,
Contact: trinita@landes-eternelles.com

Suivez et partagez les Landes Eternelles sur Twitter !
La page Facebook des Landes Eternelles !


" Le bon sens est la qualité la moins partagée de ce monde " Jean-Pierre TROLL

Avatar de l’utilisateur
TonyFlow
Messages : 985
Inscription : 02 mai 2007, 09:26
Localisation : Normandie / Pierre-Blanche
Contact :

Re: améliorations sur la nouvelle barre d'objets

Message par TonyFlow »

Une petite précision d'ailleurs : il est préferrable de toujours laisser la compilation du client avec le flag, que tout le monde soit ainsi équipé d'une version supportant les ITEM_UID.

Car l'activation sur le serveur est moins génante : normalement un client compilé avec ITEM_UID peut fonctionner avec un serveur qui l'utilise, ou pas ! Le client détecte si les infos d'UID sont présentes et si ce n'est le cas, il fonctionne "à l'ancienne".

Alors que la réciproque est fausse : un client sans le flag risque de plantouiller sur un serveur qui l'utilise.

Note: c'est d'ailleurs un peu lourd à gérer par moment dans le code, ce système de "item_uid_enabled" géré par le client... ça complique un peu les #ifdef qui doivent toujours tester si le support a été activé par le serveur, et sinon laisser faire les tests d'origines (sur l'image_id). Mais bon, comme c'est hérité du code US, à priori ça ne serait pas plus clair de s'en passer.
Just in case you never knew I miss you Slim, I love you too Oh! See my heart, it's black and blue When I die I will find you... My lovely man
But when you walk that walk and talk that talk You do it oh so well She's stone cold bush
Let me stand next to your Fire, my Pretty Little Ditty

Avatar de l’utilisateur
TonyFlow
Messages : 985
Inscription : 02 mai 2007, 09:26
Localisation : Normandie / Pierre-Blanche
Contact :

Re: améliorations sur la nouvelle barre d'objets

Message par TonyFlow »

J'ai publié des modifs sur le svn pour le support des ITEM_UID dans la barre rapide (r3399).

Par rapport aux 1ères modifs faites par Ackak, je pense qu'il manquait surtout l'aspect optionnel des ITEM_UID : il faut normalement vérifier que le serveur transmet bien les UID avant de les utiliser, sans quoi on revient à l'usage des image_id. A priori cette vérif peut se faire de 2 manières :
  • soit "item_uid_enabled" est vrai
  • soit l'uid de l'item vaut autre chose que "unset_item_uid"
Je pense que la seconde méthode est à privilégier, puisqu'elle controle la validité de l'uid de l'item concerné. Donc c'est éventuellement plus fin sans être plus couteux.

J'ai pas fait énormément de tests mais ça m'a l'air okay...
Just in case you never knew I miss you Slim, I love you too Oh! See my heart, it's black and blue When I die I will find you... My lovely man
But when you walk that walk and talk that talk You do it oh so well She's stone cold bush
Let me stand next to your Fire, my Pretty Little Ditty

Avatar de l’utilisateur
TonyFlow
Messages : 985
Inscription : 02 mai 2007, 09:26
Localisation : Normandie / Pierre-Blanche
Contact :

Re: améliorations sur la nouvelle barre d'objets

Message par TonyFlow »

J'ai fait quelques modifs supplémentaires dans items.c et storage.c pour exploiter l'ITEM_UID quand il est disponible. Cela concerne des parties de codes en FR_VERSION (quelques possibilités de déplacements d'objets que j'avais ajouté par le passé), qui donc n'avaient pas héritées du code US pour tirer partie des UID.

Une modif également concernant la barre rapide : globalement elle marchait, mais il y avait des problèmes
quand on se trainait dedans des raccourcis créés avec les versions précédentes du client.
C'est pt'être ça qui avait perturbé Ackak dans ses essais... En fait une fois qu'on a purgé la barre, elle fonctionne normalement.

Du coup tout s'explique : la barre rapide est mémorisée dans un fichier sur le client, c'est juste un tableau d'items. Si le format des items change (présence ou non du champs id), alors forcément les données enregistrées ne collent plus... Et on se retrouve à initialiser le tableau des raccourcis n'importe comment !

Donc j'ai ajouté un controle à la lecture du fichier :
  • au lieu de lire dans le fichier 1 élément de taille sizeof(fr_quickitem_list), je demande à en lire FR_QUICKITEMS_MAXSIZE de taille sizeof(item)
  • je récupère le nombre d'éléments lus en retour du fread, et compare qu'il y en a bien eu FR_QUICKITEMS_MAXSIZE
  • si le nombre d'élément lus ne correspond pas, je considère que le fichier n'est pas valide et la barre rapide est rendue vierge
Comme ça la 1ère fois qu'un perso lance le client avec le flag ITEM_UID, okay il perd ses raccourcis et devra refaire sa barre, mais au moins elle ne contient pas de données erronées.
Just in case you never knew I miss you Slim, I love you too Oh! See my heart, it's black and blue When I die I will find you... My lovely man
But when you walk that walk and talk that talk You do it oh so well She's stone cold bush
Let me stand next to your Fire, my Pretty Little Ditty

Avatar de l’utilisateur
TonyFlow
Messages : 985
Inscription : 02 mai 2007, 09:26
Localisation : Normandie / Pierre-Blanche
Contact :

Re: améliorations sur la nouvelle barre d'objets

Message par TonyFlow »

J'ai encore vu des choses bizarres, mais j'ai l'impression que c'est le serveur qui envoit des infos d'uid farfelues...

Ca semble cohérent quand on récupère les infos item par item via GET_NEW_INVENTORY_ITEM, par contre y'aurait pas un soucis avec l'initialisation faite via HERE_YOUR_INVENTORY ?
Just in case you never knew I miss you Slim, I love you too Oh! See my heart, it's black and blue When I die I will find you... My lovely man
But when you walk that walk and talk that talk You do it oh so well She's stone cold bush
Let me stand next to your Fire, my Pretty Little Ditty

Avatar de l’utilisateur
TonyFlow
Messages : 985
Inscription : 02 mai 2007, 09:26
Localisation : Normandie / Pierre-Blanche
Contact :

Re: améliorations sur la nouvelle barre d'objets

Message par TonyFlow »

TonyFlow a écrit :J'ai encore vu des choses bizarres, mais j'ai l'impression que c'est le serveur qui envoit des infos d'uid farfelues...

Ca semble cohérent quand on récupère les infos item par item via GET_NEW_INVENTORY_ITEM, par contre y'aurait pas un soucis avec l'initialisation faite via HERE_YOUR_INVENTORY ?
Problème résolu sur le serveur, merci Nati ;)

PS: Ceux qui ont utilisés un client avec ITEM_UID activé sur le serveur avant cette correction peuvent se trainer des incohérences dans leur inventaire, barre rapide et recettes enregistrées. Purger la barre, les recettes, et vider son inventaire au sol par exemple permettra de repartir avec des valeurs saines.

PS2: J'oubliais la nouvelle foncitonnalité de listes d'items qui serait certainement impacté de la même manière par d'anciennes valeurs incohérentes.
Just in case you never knew I miss you Slim, I love you too Oh! See my heart, it's black and blue When I die I will find you... My lovely man
But when you walk that walk and talk that talk You do it oh so well She's stone cold bush
Let me stand next to your Fire, my Pretty Little Ditty

Répondre