[Devblog] Améliorations de la recherche en jeu

Répondre
Partager Rechercher
Citation :
Publié par MrFourbasse
Cela fait tellement longtemps que les joueurs ne se rappellent plus de mon pseudo pré-Ankama. Je ferais rectifier demain avec mon pseudo officiel, mais ça fait plaisir de se faire prendre pour un stagiaire x).
Tu m'apprends quelque chose là, j'avais jamais fait le rapprochement entre les deux !

Comme Ayu, pour être franc c'est totalement indigeste pour moi. Je ne comprends rien à ce genre de données, mais y'a une amélioration et ça va plus vite alors tant mieux. J'espère que Sili nous pondra au passage un petit outil de recherche dans l'interface des quêtes, ça serait la cerise sur le gâteau.
J'aime bien ce genre d'article en général, c'est juste dommage que ce soit à la fois trop léger pour ceux qui s'y intéressent et trop obscur pour ceux qui s'y connaissent pas.

Si des personnes ont la flemme de lire et veulent une version résumée et vulgarisée (à l'arrache, et sûrement incomplète voire partiellement fausse par endroits, ça découle juste de ma compréhension de l'article):

Citation :
Publié par résumé vulgarisé à l'arrache
Avant, quand on effectuait une recherche dans Dofus, le client procédait par force brute (tout ceci se passe au niveau du client au cas où, pas de charge niveau serveur). Ce qui revient un peu à lire chaque page d'un dictionnaire dans l'ordre pour chercher un mot, à ceci près que le dictionnaire ici était beaucoup plus court et qu'un ordinateur effectue ces opérations bien plus vite qu'un être humain. Du coup ça se voyait pas trop, même si la méthode est franchement dégueulasse.

Le problème s'est réellement posé avec le bestiaire et les succès qui ont fait exploser le nombre de textes à examiner lors d'une recherche, jusqu'à atteindre un temps de recherche de l'ordre de la seconde. D'autant plus que les données sur lesquelles sont effectuées les recherches sont formatées de manière à économiser de la place et simplifier les téléchargements (et empêcher les fouineurs sans un minimum de notions d'informatique de se gâcher le plaisir en jetant un œil dans les ressources, accessoirement). Ce qui suppose de tout "décoder" avant d'effectuer la recherche, et ça prend du temps supplémentaire.

La solution adoptée, est de rajouter à la fin des fichiers contenant les données à examiner des données supplémentaires pour faciliter la recherche, un peu à la manière d'un glossaire, en gros.
Par exemple, plutôt que de feuilleter tout votre manuel de maths de 6e parce que vous avez oublié le théorème de Pythagore (improbable mais soit), vous allez à la fin, cherchez "Pythagore" dans le glossaire trié par ordre alphabétique, et lisez la/les page(s) indiqué(e)s uniquement.
À cela, on ajoutera qu'on réalise un "glossaire" par champ (type d'objet, nom d'objet, niveau...) histoire de ne pas s'encombrer avec des recherches inutiles et de mieux classer.

Bon en pratique ce ne sera pas toujours si rose vu que lors de recherches partielles ("memb" dans "camembert" par exemple), on ne peut pas juste appliquer une recherche dichotomique*. Là, pas d'autre choix que de passer en revue tous les textes, mais au moins, on se limite à certains champs.
En plus comme les ordinateurs ont le travers de chipoter sur les détails comme les majuscules ou les accents, ils sont capables de ne pas vous proposer "l'exquise cerise de Missiz Frizz" si vous tapez "éxquise" (quand bien même c'est votre othographe qui est fautive ici).
En effet, ce n'est pas le même code en mémoire: autant on voit bien que 'e' ou 'é' c'est presque pareil, autant 01100101 et 10000010 c'est plus compliqué, surtout que pour les caractères spéciaux les moins courants ça peut varier énormément suivant le charset (correspondance numero - caractère en gros). Bref, faire traduire tout ça par le programme, c'est lourd, autant recopier les textes en traduisant les textes accentués sans accents juste pour la recherche, et c'est ce qu'ils ont fait.

Au final: ça marche bien pour 5~6Mo de plus. Mission accomplie.

*Exemple de recherche dichotomique : ouvrez le dico en plein milieu, comparez un mot de la page avec le mot recherché, si vous êtes allés trop loin répétez sur la première moitié, si pas assez, sur la seconde. L'idée est d'éliminer la moitié des candidats à la recherche à chaque étape ce qui donne une complexité logarithmique en pratique (comprenez que c'est cool si vous ne savez pas ce que c'est, de toute façon, tout le monde sait que c'est comme ça qu'on cherche efficacement dans un dico et ça s'adapte aux différentes recherches en général).
Edit:

Citation :
Publié par Freeman-sama
Tu m'apprends quelque chose là, j'avais jamais fait le rapprochement entre les deux !
idem
Au passage, le truc qui m'intrigue c'est sur la recherche dans les noms... vous avez une structure particulière pour faciliter la recherche (en dehors de la non prise en compte des accents, je veux dire), ou c'est du bête parcours de l'ensemble des textes?
Citation :
Publié par thalvyn
Manque plus que ctrl+f nous mette directement le curseur dans le champ de recherche de l'interface en cours. ^-^
Impossible! C'est le plein écran! Article Intéressant, MrLeStagiaire! :P
pour un stagiaire MFourbasse gère super bien

c'est sûr que l'article ne parlera pas à tout le monde mais il a le mérite d'expliquer les avancées techniques du jeu. En soi c'est toujours utile merci bien !
Citation :
Publié par ShosuroPhil
Bon, en gros, ils nous expliquent que les structures de données adaptées a ce qu'on veut en faire, c'est bien. Bref, ils ont récemment embauche un jeune qui a fait des études propres d'informatique, et pas "seulement" (dit sans aucune animosité) d'infographie.

Bref, ça fait plaisir de voir que, parfois, les trucs qu'on se tue a dire a nos étudiants, ça peut servir
Ce qui ne fait pas plaisir en revanche c'est de voir que les enseignants français sont encore trop souvent condescendants et éloignés des contraintes réelles du travail en entreprise.

Au moins en Belgique on ne traite pas nos Développeurs d'Infographistes.
Citation :
Publié par Enyo
Au moins en Belgique on ne traite pas nos Développeurs d'Infographistes.
Je n'ai nullement traité les développeurs d'infographistes (les majuscules ne sont pas non plus de rigueur). D'ailleurs je ne vois pas en quoi dire de quelqu'un qu'il est infographiste serait plus ou moins insultant que de dire qu'il est développeur - il s'agit clairement de deux métiers totalement différents, autant désigner chacun par le bon terme plutôt.

Simplement là, le sujet du billet, comme le montrent les réactions, est assez technique, on parle, même indirectement, d'algorithmique, de structures de données, de trucs qui ne "passent" pas complètement naturellement auprès du grand public. Et mon commentaire était plutôt un commentaire amusé pour dire que ce sont des choses sur lesquelles les universitaires passent beaucoup de temps dans leurs cours, parfois en ayant l'impression de prêcher dans le désert, et que ça fait plaisir de voir que, de temps en temps, "ça sert vraiment" (avec les adaptations nécessaires, évidemment).
Citation :
Publié par ShosuroPhil
Au passage, le truc qui m'intrigue c'est sur la recherche dans les noms... vous avez une structure particulière pour faciliter la recherche (en dehors de la non prise en compte des accents, je veux dire), ou c'est du bête parcours de l'ensemble des textes?
Citation :
Publié par Lifescythe
[...]

La recherche d’une chaine de caractères


Exemple : trouver les Objets dont le nom contient un « e »

Dans l’exemple illustré plus haut, il faudra trouver « Cuivre », « Ecaliseur » et « Pain doré »

C’est là que les ennuis reviennent pour deux raisons :

  • Il faut parcourir toutes les valeurs de textes puisqu’on ne recherche pas une valeur précise : cela rend la recherche plus longue.
  • Il ne faut tenir compte ni des accents ni des majuscules : les majuscules ne posent pas de soucis car Flash sait les gérer nativement. Il n’en est pas de même avec les accents, il faut le coder soi-même.
[...]
Malheureusement, là encore, ils semblent tout parcourir. C'est dommage ça aurait effectivement pu être intéressant un algorithme moins naif pour la recherche partielle dans un nom. M'enfin a priori, j'en vois aucun sans passer par une structure alambiquée assez longue à construire, lourde à représenter dans un fichier ainsi qu'en mémoire, peu intuitive lors de la lecture/écriture.
Répondre

Connectés sur ce fil

 
1 connecté (0 membre et 1 invité) Afficher la liste détaillée des connectés