Hellooow à tous, petit point sur l'architecture et les avancements.
Donc l'architecture complète de l'émulateur sera dans un seul dossier dans lequel vous placerez vos services, et vous pouvez les lancer facilement avec une commande (tout sera expliqué dans la doc ne vous inquiétez pas!)
Vous aurez également quelques autres dossiers:
- dofus-io-{version} -> correspondant à la librairie associé à la version du jeu que vous aurez choisi, elle contiendra tout les éléments pour interagir avec le client (protocole, gestion des fichiers du jeu, signature RSA etc)
- hetwan (c lému ici lol)
- updater (ici le programme magique, vous donnez un invoker en entrée, en sortie vous obtiendrez la librairie dofus-io associé, mais également un invoker patché avec une clef rsa généré automatiquement, il y aussi quelques autre commandes disponibles pour générer le hash de vos hosts (à entrer en config), et quelques autres trucs sympa)
- manager (la vue react qui vous permet de contrôler l'état du serveur, des services, et d'envoyer des actions aux clients)
Vous pourrez avoir plusieurs versions supportés donc en fonction du/des librairies io que vous avez, ce qui rend donc possible le support de plusieurs versions si nécessaire, mais vous devrez faire gérer vos DB pour ne pas avoir de conflit de données de 2 versions différentes)
Pour le moment je travaille majoritairement sur l'updater, actuellement un update de version (sans changer les code des services) prend environ 10 minutes (ça va franchement, ça fait le taff à votre place)
Les services reçoivent des events du type:
- dofus.client.data (raw data du message)
- dofus.client.message (message passé par le serializer automatique, qui vous sort une belle classe du message déjà rempli, magique)
Associé aux events vous avez un contexte qui vous permet de savoir de quel client il s'agit, de quel serveur il provient (game-{id} ou login) et aussi les contextes définis par les autres services, ça vous permet de garder une trace de où votre client est passé et vérifier que les messages que vous recevez sont bien en accord avec l'état du contexte que vous avez (si le client est en combat, c'est pas normal de recevoir un message d'ouverture d'HDV par exemple)
Tout avance à son rythme, c'est un peu long je fais au mieux m'en voulez pas :'(
Je vous enverrais des screens bientôt !
A+