C# HetwanSharp - L’émulateur pour apprendre

Hetarnam

Rédacteur
Inscrit
2 Octobre 2016
Messages
47
Reactions
114
#1
Bonjour à tous !

je souhaites aujourd’hui vous faire part d’un projet actuellement en développement, qui sera un jour publié ici gratuitement en open source pour remplacer (j’espère) stump.

Ce projet est donc un émulateur 2.55, accompagné de beaucoup de tools, majoritairement en C#, pour créer un serveur complet (éditeur D2I, D2O, maps, générateur de protocol, etc.)
Il y aura également une boutique/achat d’orgrines disponible, développée en typescript permettant l’identification d’un client, l’exposition et achat d’objet, et d’orgrines.

Cet émulateur sera différent du reste pour majoritairement quelques solutions techniques qu’il embarque :
- .NET CORE 3 (bienvenue au cross-plateforme)
- Les dependencies injections (fini le pattern singleton partout)
- Le chargement des resources du jeu (elles ne sont plus en base de données mais directement chargées depuis les D2O/D2I/DLM au démarrage de l’émulateur, et stockées en cache, ce qui permet une immense flexibilité)
- Un ECS (entity component system, vous pouvez lire a ce sujet facilement, man Google)
- EntityFramework pour l’ORM (le gestionnaire de base de données et entités)

Il est fait de manière simple, sans ajouter de choses superflus, dans le respect des normes C# avec la meilleure architecture que j'ai pu imaginer et même si j'ai fait surement quelques erreurs, ça sera déjà une très bonne base.

Cet émulateur, commencé il y a 2 mois, contient déjà pas mal de chose, liste ici :
- Multiserveur
- Etat des serveurs (en cours de démarrage, en ligne, sauvegarde, etc.)
- Connexion, déconnexion, gestionnaire RSA
- Liste des serveurs, recherche d’amis
- Creation, suppression, et liste des personnages
- Cartes et déplacements
- Gestion des objets et de leur effets (inclut objets vivants et montures)
- Gestion des statistiques du personnage
- Titres et ornements
- PNJ vendeurs

Boutique :

La vue de la boutique est faite avec Bootstrap 3.0 pour le responsive, malheureusement pas plus récent car le navigateur intégré de flash ne supporte pas certains éléments, notamment
Code:
opacity
et
Code:
display: flex
Elle est connecté aux world(s) (le(s) world(s) se connectent à elle pour être plus précis) affin de récupérer des informations mais également de communiquer lors d'un achat pour attribuer l'objet au personnage.

- Authentification client
- Page d’achat d’orgrines/kamas
- Liste des objets/catégories
- Recherche

Screens :

Partie émulateur
Exemples de handlers avec/sans lecture de message, avec/sans injection

Screenshot_3.png
Screenshot_4.png
Screenshot_5.png

Affichage console

Screenshot_6.png

Partie jeu
Screenshot_7-min.png
Screenshot_8-min.png
Screenshot_9-min.png
Screenshot_12.png

Partie boutique
Screenshot_10-min.png
Screenshot_11-min.png

Ce projet sera utilisé un peu de temps pour faire un serveur, et une fois décidé il sera libéré au public.

Les tools en revanche seront publiés sur ce forum dans les section partage une fois complètement terminés, le gestionnaire I18N ayant déjà été partagé.

Si vous avez des questions ou des remarques n’hésitez pas, je vous tiendrais au courant des avancés ici accompagnés de photos.

Bonne journée/soirée
 
Dernière édition:

Hetarnam

Rédacteur
Inscrit
2 Octobre 2016
Messages
47
Reactions
114
#2
UP : Ajout de quelques screens du tout !
 
Inscrit
7 Mai 2020
Messages
6
Reactions
5
#3
Chouette projet !

Je partage bientôt mon avancé sur Dofus Touch cela fais plaisir de voir d'autres projets se former :)

Bon courage pour la suite
 
Inscrit
19 Avril 2020
Messages
14
Reactions
12
#4
Très chouette projet, ça va peut être pouvoir relancer l'émulation et l'envie a un nouveau publique d'apprendre. +1 Courage a toi et très bel initiative
 
Inscrit
29 Juillet 2017
Messages
28
Reactions
9
#5
Du gros travaille ton projet, je vous souhaite bonne chance,
ça change totalement de Stump,
 

Hetarnam

Rédacteur
Inscrit
2 Octobre 2016
Messages
47
Reactions
114
#6
Liste des choses à venir dans les prochaines semaines, déjà amorcées :

Côté émulateur :
- Combats
- Ajout des combats (PvP uniquement)
- Formule de dégâts officielle - extraite depuis l'invoker
- Gestion d'environ 80% des sorts et effets
- Reconnexion en combat

- Gameplay
- Meilleure gestion du déplacement (c'est sur que quand on envoi les packets dans l'ordre ça marche mieux...)
- Correction de certains effets mal générés au niveau des items
- Ajout du havre-sac et modification de celui-ci (si vous saviez comment je m'éclate à mettre des assets partout)
- Correction de l’équipement d'une monture (fini les enclos, double clique sur le parchemin vous équipe la monture, la flemme a gagné)
- Ajout des potions de changement de nom, visage, couleurs, classe

Côté boutique :
- La connexion aux games se fait désormais correctement, récupération du total de kamas du joueur
- Fin de l'achat d'objet, ils apparaissent désormais dans la liste des objets à récupérer
- Ajout de l'internationalisation (i18n pour les intimes)

Côté site (quel site? c'était pas annoncé) :
J'ai décidé de faire un mini CMS avec toutes les bases pour en développer un plus gros pour ceux qui auront le courage par la suite, il est fait sous ReactJS avec une API en PHP avec Symfony5.
Ça ne sera pas utilisable en tant que tel, il contiendra juste les entités, les tools pour traiter les données (stats, effets d'objet etc), et quelques exemples de formulaires comme l'inscription, la connexion, etc.)
Il sera également internationalisable (je sais pas si ça existe ce mot) avec 2 langues par défaut, Français et Anglais.

INFORMATIONS :
L'émulateur est lourd au démarrage, ils nécessite une bonne machine, une fois les ressources du jeu chargés, et le container initialisé, il prend environ 1g de RAM, mais n'ira jamais vraiment plus haut, la bonne gestion fait que il n'y a aucune perte ou fuite.

Un code parfait n’existe pas, je fais simplement ce projet avec les outils disponibles à ce jour, pour amener une nouvelle fraîcheur dans l'émulation, STUMP se fait vieux, il était bien à son époque et reste toujours utilisable maintenant mais difficile de le mettre à jour ou de s'y retrouver dans les sources du fait de sa conception.
 
Inscrit
10 Mai 2015
Messages
325
Reactions
18
#7
Le projet est ambitieux bonne chance pour la suite, j'imagine même pas tout le boulot pour intégrer chaque IA de chaque monstre. Et concernant la base de donnée, tu l'as refait toi même ?
 

Hetarnam

Rédacteur
Inscrit
2 Octobre 2016
Messages
47
Reactions
114
#8
Le projet est ambitieux bonne chance pour la suite, j'imagine même pas tout le boulot pour intégrer chaque IA de chaque monstre. Et concernant la base de donnée, tu l'as refait toi même ?
Chaque monstre à part exception pour les boss de donjons ont des "groupes d'ia" qui appliquent le même comportement, du coup ça fait pas tant que ça.

Pour la base de donnée oui tout a été refait.
 
Inscrit
26 Janvier 2016
Messages
85
Reactions
16
#10
Tu travailles seul ?
Si oui GROS Big Up pacque se motiver à faire tout ça tout seul ...
 
Inscrit
14 Mai 2019
Messages
23
Reactions
6
#13
Bonjour à tous !

je souhaites aujourd’hui vous faire part d’un projet actuellement en développement, qui sera un jour publié ici gratuitement en open source pour remplacer (j’espère) stump.

Ce projet est donc un émulateur 2.55, accompagné de beaucoup de tools, majoritairement en C#, pour créer un serveur complet (éditeur D2I, D2O, maps, générateur de protocol, etc.)
Il y aura également une boutique/achat d’orgrines disponible, développée en typescript permettant l’identification d’un client, l’exposition et achat d’objet, et d’orgrines.

Cet émulateur sera différent du reste pour majoritairement quelques solutions techniques qu’il embarque :
- .NET CORE 3 (bienvenue au cross-plateforme)
- Les dependencies injections (fini le pattern singleton partout)
- Le chargement des resources du jeu (elles ne sont plus en base de données mais directement chargées depuis les D2O/D2I/DLM au démarrage de l’émulateur, et stockées en cache, ce qui permet une immense flexibilité)
- Un ECS (entity component system, vous pouvez lire a ce sujet facilement, man Google)
- EntityFramework pour l’ORM (le gestionnaire de base de données et entités)

Il est fait de manière simple, sans ajouter de choses superflus, dans le respect des normes C# avec la meilleure architecture que j'ai pu imaginer et même si j'ai fait surement quelques erreurs, ça sera déjà une très bonne base.

Cet émulateur, commencé il y a 2 mois, contient déjà pas mal de chose, liste ici :
- Multiserveur
- Etat des serveurs (en cours de démarrage, en ligne, sauvegarde, etc.)
- Connexion, déconnexion, gestionnaire RSA
- Liste des serveurs, recherche d’amis
- Creation, suppression, et liste des personnages
- Cartes et déplacements
- Gestion des objets et de leur effets (inclut objets vivants et montures)
- Gestion des statistiques du personnage
- Titres et ornements
- PNJ vendeurs

Boutique :

La vue de la boutique est faite avec Bootstrap 3.0 pour le responsive, malheureusement pas plus récent car le navigateur intégré de flash ne supporte pas certains éléments, notamment
Code:
opacity
et
Code:
display: flex
Elle est connecté aux world(s) (le(s) world(s) se connectent à elle pour être plus précis) affin de récupérer des informations mais également de communiquer lors d'un achat pour attribuer l'objet au personnage.

- Authentification client
- Page d’achat d’orgrines/kamas
- Liste des objets/catégories
- Recherche

Screens :

Partie émulateur
Exemples de handlers avec/sans lecture de message, avec/sans injection

Afficher la pièce jointe 384
Afficher la pièce jointe 385
Afficher la pièce jointe 386

Affichage console

Afficher la pièce jointe 387

Partie jeu

Partie boutique

Ce projet sera utilisé un peu de temps pour faire un serveur, et une fois décidé il sera libéré au public.

Les tools en revanche seront publiés sur ce forum dans les section partage une fois complètement terminés, le gestionnaire I18N ayant déjà été partagé.

Si vous avez des questions ou des remarques n’hésitez pas, je vous tiendrais au courant des avancés ici accompagnés de photos.

Bonne journée/soirée
Monstrueux !

Petite question comme sa fait longtemps que je me suis pas co sur cadernis, tu seras pas Nameless ou Dr Brooklyn ? Ce sont les seuls que je connaisse à s’intéresser à l'ECS , EF Core, DI ..
 
Inscrit
7 Avril 2010
Messages
150
Reactions
2
#14
Salut,
Bon courage pour ton projet en espérant que tu le mène le plus loin possible
Cordialement
 

Hetarnam

Rédacteur
Inscrit
2 Octobre 2016
Messages
47
Reactions
114
#15
Monstrueux !

Petite question comme sa fait longtemps que je me suis pas co sur cadernis, tu seras pas Nameless ou Dr Brooklyn ? Ce sont les seuls que je connaisse à s’intéresser à l'ECS , EF Core, DI ..
Absolument pas haha, mais si ça les intéresse du coup ils pourront jeter un œil quand ça sortira :p
 
Inscrit
28 Février 2014
Messages
88
Reactions
6
#16
Magnifique projet !!! Je suppose que si tu fais de l'injection de dépendance et de l'EntityFramework, tu es sous ASP .net Core ?
 
Inscrit
2 Octobre 2016
Messages
47
Reactions
114
#17
Magnifique projet !!! Je suppose que si tu fais de l'injection de dépendance et de l'EntityFramework, tu es sous ASP .net Core ?
Comme marqué dans le post -> .NET CORE 3
Je me suis dit que c'était le meilleur framework à utiliser pour faire quelque chose de propre, et ça me permet de switch entre Linux et Windows sans soucis.
 
Inscrit
2 Juin 2009
Messages
29
Reactions
3
#18
Très bon travail ! Effectivement ça change de Stump !
Bravo, et bon courage à toi pour la suite !
 

Hetarnam

Rédacteur
Inscrit
2 Octobre 2016
Messages
47
Reactions
114
#19
Bonjour à tous, des nouvelles un peu !

Dans un soucis de rapidité le projet a été finalement portée sur du TypeScript converti en JS et exécuté en NodeJS, ça ne change absolument rien a l’architecture imaginée et la manière de le faire, c'est simplement pour être plus rapide pour sortir un serveur de test.

Une fois assez avancé il sera backporté en C# et LES DEUX versions seront partagées à la fin.

L'avantage pour moi de le faire en TypeScript est que je peux faire les outils et facilement les liés les un aux autres. Une aisance que j'ai moins en C#.

Les deux versions seront de la même stabilité globalement, et ça vous donnera une opportunité de voir deux approches différentes en fonction des langages (au niveau du code, pas de l'architecture).

Tant que j'y suis le partage des outils va continuer avec bientôt (d'ici ~ 1 semaine) un éditeur D2O COMPLET qui ressort des fichiers parfait et utilisables directement en jeu après (la table de recherche notamment que l'outil de STUMP ne gérait pas)

Voilà c'est tout ! Non je déconne, changelog time :

- Combats fonctionnels
- Sorts fonctionnels à 90% (manque quelques effets liés aux bombes et aux items ayant des effets en combat)
- Pathfinding (j'avais la flemme avant mdr)
- Début du FM
- Gestion des objets utilisables
- Gestion Zaap/Zaapis
- Patchs et autres notamment pour la stabilité (les fichiers D2O et DLM ne sont désormais plus stockés au démarrage de l'émulateur mais dans un cache spécial en fonction du type, pour exemple la search table est désormais utilisée pour les D2O)

Voilà, A+
 
Inscrit
12 Mars 2017
Messages
12
Reactions
7
#20
Tant que j'y suis le partage des outils va continuer avec bientôt (d'ici ~ 1 semaine) un éditeur D2O COMPLET qui ressort des fichiers parfait et utilisables directement en jeu après (la table de recherche notamment que l'outil de STUMP ne gérait pas)
Le forum DoE en sang face à l'annonce de ce partage
 
Haut Bas