Veuillez m'excuser du double post, mais Warz j'ai pas pu te répondre la dernière fois car j'étais ban
Un émulateur WoW, ça consiste en pas mal de choses
Tout commença durant l'alpha de WoW en 2003/2004, une jeune pomme mal intentionnée parvint à mettre la main sur le client de WoW et à reverse engineer le protocole de connexion, d'ailleurs j'ai aucune idée de comment il a pu faire c'est un malade (ok j'imagine que c'est probablement le truc le moins dur à faire mais sans sniffer les paquets, ce qui trivialise la chose, je vois pas : il n'y avait aucun serveur blizzard qui tournait encore à l'époque, je précise, donc on pouvait rien sniffé à part des rails de c0k3)
Donc oklm le mec a pu se connecter en jeu, rien ne marchait mais il pouvait au moins se balader et découvrir les zones du jeu, ce qui fit clairement chier Blizzard au point où ils déposèrent plainte
C'est là les grandes lignes d'un émulateur WoW : émuler le serveur (on devrait dire émulateur de serveur WoW mais personne ne va s'amuser à émuler autre chose que le serveur donc par abus de langage on dit émulateur WoW = émulateur serveur WoW) . Faire communiquer le client avec un autre serveur que celui de Blizzard est d'une trivialité sans nom, reste à ce que le serveur lui réponde les bonnes choses, et c'est là toute la complexité de la chose : il faut connaître WoW sur le bout des doigts pour être le plus fidèle possible, recréer TOUTE la base de donnée car tu te doutes bien que côté client on met le strict minimum en termes de données pour des raisons de sécurité et de taille exemple trivial : Toi tu as créer WoW, et un monstre donné à une liste d'objets qu'il peut lacher. Toi en tant qu'algorithm engineer tu te dis : tiens on va gagner de l'espace sur le serveur, ces listes de drops des monstres on va le foutre dans le client et on ira chercher le drop correspondant du monstre directrement dans cette liste Sauf que Jean-Omni a modifié son client et a fait en sorte que les lapins lachent des sets entiers d'armures ultra rares qui nécessitaient une année entière de tryhard
Le jeu est alors foutu
Bon, reprenons
La base de donnée, c'est super chiant à faire, car elle doit pouvoir communiquer avec tes programmes serveurs et il faut du coup s'assurer d'avoir toutes les bonnes structures de données pour que le code puisse facilement évoluer/être porter/être repris si jamais on a fait une connerie par-ci par là (d'où l'intérêt du génie logiciel et de très bien connaître le jeu )
Bon après une fois que tu as "designé" ta base de donnée tu laisses le stagiaire remplir les centaines de milliers de lignes (textes de quêtes, objets du jeu, propriétés de sorts etc...)
Sauf que t'as pas de stagiaire, tu fais du hacking là ISSOU
La méthode la plus simple pour faire rapidement évoluer ton serveur, c'est de sniffer les packets de Blizzard, voir ce que le serveur répond, et faire en sorte que ton serveur réponde pareil, ce qui nécessite des compétences de cryptanalyse tout de même assez avancées
À partir de là, tu commences à avoir un truc solide, tu commences à comprendre tout le client du jeu et le serveur WoW, comment les "tâches" sont réparties et donc tu sais rapidement trouver une information
Le problème c'est que le travail est absolument colossal
Aujourd'hui il y a un serveur open source d'une qualité incroyable, plus stable que le serveur WoW officiel de l'époque, avec un peu + de bugs mais aussi des bugs en moins par rapport à l'officiel, écrit entièrement en C++. Le problème c'est que WoW évoluait beaucoup trop vite par rapport au développement des émulateurs, ce qui fait qu'aujourd'hui on a réellement que 3 émulateurs, dédiés à une unique extension chacun : Vanilla (aucune extension, le wow originel), Burning Crusade (1ère extension) et enfin Wrath of the Lich King (2ème extension)
Mais c'est pas plus mal car après WoW c'est devenu une DAUBE sans nom
Je passe vite fait sur le fait que le serveur gère bien plus de choses que juste les connexions et les drops de monstres heins Il s'assure aussi du bon déplacement des joueurs, et ça par exemple c'est le client qui lui répond sa position tout les instants t, et rien n'empêche un hacker de répondre de se téléporter côté client, c'est au serveur de détecter que le mec triche, et des cas comme ça où on peut abuser du client il y en a des milliers, donc déjà un serveur incorpore forcément une problématique " anti cheat " extrêmement complexe. Dès que le client a une réponse à fournir au serveur pour telle ou telle fonction du jeu, il faudra penser à tout ce qu'un hacker peut faire.
Après t'as forcément une grosse partie algorithme, rien que pour gérer le déplacement des monstres/PNJ (d'un point de vue objet c'est la même chose) par exemple, vu que les monstres sont forcément côté serveurs sinon bonjour la synchro entre les joueurs et le cheat ...
D'ailleurs ils utilisent vraiment un A* pour le coup mais Blizzard l'ont fait faire par des stagiaires à tous les coups : ils ont une heuristique de merde dans leur algo, ça se voit assez facilement sur les serveurs officiels.
Côté émulateur, c'est encore moins bien, et c'est LE truc que je trouve le plus pourris : mon projet est donc de faire une refonte de leur système de path finding et de le commit
Mais le serveur privé dont je tairais le nom qui a fermé récemment, qui était un serveur vanilla, avait l'émulateur le plus poussé à ce jour (basé sur le serveur open source dont j'ai parlé) qui surpassait le serveur officiel de l'époque sur honnêtement TOUS les points. Mais vraiment TOUS. Son pathfinding était tellement au-dessus de celui de Blizzard que ça apportait carrément une autre dimension à la gestion des compagnons. C'était d'une pureté incroyable. Ils comptaient rendre leur émulateur open source (c'était des français d'ailleurs) mais Blizzard les as contactés pour discuter (ils venaient de faire fermer le serveur) et depuis ils sont notre espoir que Blizzard fasse des serveurs oldschool sur les vieilles extensions
J'espère t'avoir éclairer