Page 1 sur 1

améliorations sur la nouvelle barre d'objets

Publié : 26 avr. 2010, 10:50
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

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

Publié : 26 avr. 2010, 13:27
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.

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

Publié : 26 avr. 2010, 21:05
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 ^^')

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

Publié : 27 avr. 2010, 13:20
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".)

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

Publié : 27 avr. 2010, 17:23
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.

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

Publié : 14 févr. 2011, 00:26
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.

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

Publié : 26 mars 2011, 01:56
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 ?

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

Publié : 26 mars 2011, 11:52
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é.

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

Publié : 26 mars 2011, 12:23
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.

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

Publié : 27 mars 2011, 01:43
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 ?

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

Publié : 27 mars 2011, 17:32
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).

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

Publié : 27 mars 2011, 19:11
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.

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

Publié : 27 mars 2011, 21:21
par trinita
J'avais mis à dispo un client pour info

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

Publié : 27 mars 2011, 22:52
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.

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

Publié : 28 mars 2011, 00:03
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...

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

Publié : 28 mars 2011, 03:42
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.

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

Publié : 28 mars 2011, 15:53
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 ?

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

Publié : 29 mars 2011, 23:13
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.