Jump to content
Traktool

AlkadiaSharp - Emulateur C#

Recommended Posts

Bonjour,

Aujourd'hui je vous annonce un projet qui me tient à **ur depuis un moment mais je commence seulement maintenant.

Il s'agit d'un émulateur Dofus 1.29.1 développé en C#, du nom de AlkadiaSharp.

Vous me direz "Encore un émulateur inutile, qui va couler".
Je vous répondrais que non, laissez moi vous expliquer pourquoi dans le reste de ce post.


I - Pourquoi C# et non Java ou C++ ?
 

J'ai décidé de faire l'émulateur en C#, car les émulateurs Java c'est bien, mais sont tous basées sur Ancestra, ce que je trouve dommage, car Ancestra est certes complet, pas mal débogue, mais pas du tout optimisé et surtout bourré de failles.
Ça a pour effet que il en fait un émulateur gourmand en RAM, qui a du mal à supporter une certaine population active et conséquente.


II - Je suis d'accord, mais pourquoi ne pas reprendre Ancestra et l'optimiser ?

 

Je préfère partir de zéro, ce qui permettra de tout revoir beaucoup plus facilement, de tout restructurer.
Et je tient à préciser que le C# est certes un dérivé du Java qu'a développé Microsoft au tout début avec FSharp (presque voir plus du tout utilisé) qui a ensuite donné vie au C#.


Ce qui fait donc du C#, un langage plus ou moins similaire que Java, mais demandant moins de RAM.
Après comme tout langage, il faudra l'optimiser, j'en suis conscient.
De plus, je commence tout de suite en faisant de la POO au lieu de tout faire à l'arrache et tout refaire en POO ensuite.


III - Au final, ça vas pas changer grand chose, il sera juste moins gourmand.

 

Je n'ai pas encore tout dit !
L'émulateur aura une interface graphique. Mais attention, pas n'importe laquelle.
L'interface sera donc accessible sur la machine dans laquelle vous avez lancé le serveur, mais aussi de n'importe où !


Je m'explique. Il y aura deux logiciels.
Un qui lance le serveur, avec l'interface graphique. Un autre qui aura exactement la même interface, mais se connecte simplement à l'émulateur pour y récupérer les données et donc pouvoir gérer le serveur de n'importe où sans pour autant devoir utiliser un logiciel de RDP.


IV - Et de cette interface, on pourra faire quoi exactement ?

 

Vous pourrez ajouter des monstres, maps, items en temps réel, sans avoir besoin de redémarrer le serveur.
Vous pourrez aussi dé / bannir, dé / mute, accorder des droits etc ..
Tout ça en temps réel, sans avoir à redémarrer quoi que ce soit.


Il y aura aussi n système de mise en pause du serveur.
Concrètement, ça servira à pouvoir mettre le serveur en pause (logique), ce qui donc ne déconnecte personne, mais ils ne peuvent temporairement plus jouer.
Tout ce qu'ils font est envoyé au serveur, mais le serveur ne les traites pas, tout en ayant gardé les précédentes données pour pouvoir remettre en marche le serveur, là où il en était.

Cela pourrai avoir son utilité au fait que, s'il y a une suspicion de triche, attaque ou autre, le serveur ne prend rien en compte, ce qui empêche tout de continuer.
Vous pourrez donc vérifier ce que vous voulez, sans arrêter le serveur, juste le mettre en pause, ce qui évite une perte de données pour les joueurs, qui plus est, étaient en combat par exemple.



Sachez que je commence à peine l'émulateur, donc il est très loin d'être fini !
De plus j’apprends en même temps, puis je suis des études, donc ça mettra du temps, mais je le ferai, ça c'est sûr !

J'espère vraiment arriver à faire tout ce que je veux faire.

L'émulateur ne sera je pense, pas open-source, j'y réfléchirai plus tard, mais sachez qu'il y aura toutes les fonctionnalités d'un serveur 1.29.1 !
Donc ce qui retire tout ce qu'il y a dans la 2.0, sauf ce qui peux être mis car ne change en rien le jeu.
J'y réfléchirai plus tard, mais il n'y aura pas de Kolizeum etc .. ce sera un émulateur 100% 1.29.1.

Sur ce, j'attends vos retours sur ce que vous en pensez.
Les gens qui sont là pour trolls seront priés de ne pas commenter.


Cordialement,
Traktool.

Edited by Traktool
  • Upvote 3

Share this post


Link to post
Share on other sites

bonne continuation g²

Bon courage !

 

Merci à vous pour vos encouragements.

Share this post


Link to post
Share on other sites

Bonne chance :)

Je te souhaite bonne chance pour ton projet.

 

Merci, je suis en train de faire le lancement basique, pour afficher la console, gérer le nom de la fenêtre etc

Une fois bien terminé, je me hâte à la connexion, donc début du SQL, Socket ><

 

Car pour le moment je fait en console, je ferai l'interface plus tard, quand j'aurais très bien avancé, qu'on pourra jouer convenablement !

Share this post


Link to post
Share on other sites

Bonne chance et ne baisse pas les bras surtout ;)

C'est bien ce que je compte faire !

 

J'ai bien ri en lisant ton sujet, merci :)

Développe.

Car tout ce que j'ai dit est réalisable.

Edited by Traktool

Share this post


Link to post
Share on other sites

Vous me direz "Encore un émulateur inutile, qui va couler".

Oui.

 

I - Pourquoi C# et non Java ou C++ ?

 

J'ai décidé de faire l'émulateur en C#, car les émulateurs Java c'est bien, mais sont tous basées sur Ancestra, ce que je trouve dommage, car Ancestra est certes complet, pas mal débogue, mais pas du tout optimisé et surtout bourré de failles.

Ça a pour effet que il en fait un émulateur gourmand en RAM, qui a du mal à supporter une certaine population active et conséquente.

C++ tu n'auras jamais les compétences (et la logique qui va avec peut-être ?) et tu ne sais surement pas coder le Java (ni le C# d'ailleurs)

 

II - Je suis d'accord, mais pourquoi ne pas reprendre Ancestra et l'optimiser ?

 

Je préfère partir de zéro, ce qui permettra de tout revoir beaucoup plus facilement, de tout restructurer.

Et je tient à préciser que le C# est certes un dérivé du Java qu'a développé Microsoft au tout début avec FSharp (presque voir plus du tout utilisé) qui a ensuite donné vie au C#.

Ce qui fait donc du C#, un langage plus ou moins similaire que Java, mais demandant moins de RAM.

Après comme tout langage, il faudra l'optimiser, j'en suis conscient.

De plus, je commence tout de suite en faisant de la POO au lieu de tout faire à l'arrache et tout refaire en POO ensuite.

1) Donc pourquoi forcément prendre le C# et pas le Java pour partir de 0 ?

2) C# dérivé du Java ? C++ dérivé du txt aussi tant qu'on y est non ?

3) Si je comprends bien, FSharp et Java ont donnés le C# alors que le FSharp est plus récent que le C# ?

4) Depuis quand le C# consomme obligatoirement moins de RAM que le Java ?

5) Tu es conscient qu'il faut optimiser le langage ? Dans ce cas j'espère que tu es aussi conscient (ou pas) de ta connerie.

6) En même temps, difficile de ne pas faire de POO en C#.

 

Je n'ai pas encore tout dit !

L'émulateur aura une interface graphique. Mais attention, pas n'importe laquelle.

L'interface sera donc accessible sur la machine dans laquelle vous avez lancé le serveur, mais aussi de n'importe où !

Une interface graphique pourquoi pas mais totalement inutile (de mon point de vue) sur une application serveur, qui sera hébergé (logiquement) sur un serveur et donc personne pour interagir avec.

 

Il y aura aussi n système de mise en pause du serveur.

Concrètement, ça servira à pouvoir mettre le serveur en pause (logique), ce qui donc ne déconnecte personne, mais ils ne peuvent temporairement plus jouer.

Tout ce qu'ils font est envoyé au serveur, mais le serveur ne les traites pas, tout en ayant gardé les précédentes données pour pouvoir remettre en marche le serveur, là où il en était.

Cela pourrai avoir son utilité au fait que, s'il y a une suspicion de triche, attaque ou autre, le serveur ne prend rien en compte, ce qui empêche tout de continuer.

Vous pourrez donc vérifier ce que vous voulez, sans arrêter le serveur, juste le mettre en pause, ce qui évite une perte de données pour les joueurs, qui plus est, étaient en combat par exemple.

1) Totalement inutile.

2) Si tu te fais attaquer, ton serveur prendra de toute façons l'attaque tant que tu ne fermes pas la socket qui écoute.

3) Comment tu vas vérifier qu'un joueur triche si il ne peut plus rien faire ?

 

Sachez que je commence à peine l'émulateur, donc il est très loin d'être fini !

De plus j’apprends en même temps, puis je suis des études, donc ça mettra du temps, mais je le ferai, ça c'est sûr !

J'espère vraiment arriver à faire tout ce que je veux faire.

Bonne chance  :giggle:

 

Sur ce, j'attends vos retours sur ce que vous en pensez.

Les gens qui sont là pour trolls seront priés de ne pas commenter.

Cordialement,

Traktool.

Cordialement,

Ma bite.

Edited by Walk
  • Upvote 5

Share this post


Link to post
Share on other sites

C++ tu n'auras jamais les compétences (et la logique qui va avec peut-être ?) et tu ne sais surement pas coder le Java (ni le C# d'ailleurs)

Tout s'apprends. Mais si on essaye pas c'est sûr qu'on ne saura pas.

Et j'ai la motivation pour apprendre, mon projet m'y pousse.

 

1) Donc pourquoi forcément prendre le C# et pas le Java pour partir de 0 ?

2) C# dérivé du Java ? C++ dérivé du Javascript aussi tant qu'on y est non ?

3) Si je comprends bien, FSharp et Java ont donnés le C# alors que le FSharp est plus récent que le C# ?

4) Depuis quand le C# consomme obligatoirement moins de RAM que le Java ?

5) Tu es conscient qu'il faut optimiser le langage ? Dans ce cas j'espère que tu es aussi conscient (ou pas) de ta connerie.

6) En même temps, difficile de ne pas faire de POO en C#.

1 - Je préfère le C# et de plus je l'étudie en cours, ça me permettra de me performer sur mes cours.

2 / 3 - Je veux dire par là, que au début Microsoft a développé le FSharp pour concurrencer Java, puis ils ont ensuite développé le C#.

4 - Avec un code équivalant, C# consomme moins de RAM.

5 - Comme tout langage, j'en suis bien conscient.

6 - On peux faire un programme sans POO, du moins avec un semblant de POO, mais c'est juste horrible à dev et pas du tout optimisé.

Une interface graphique pourquoi pas mais totalement inutile (de mon point de vue) sur une application serveur, qui sera hébergé (logiquement) sur un serveur et donc que personne ne sera la pour interagir avec.

Si tu avais lut plus attentivement, il y aura un second logiciel qui se connectera à l'emulateur pour obtenir les données qu'il a en mémoire.

1) Totalement inutile.

2) Si tu te fais attaquer, ton serveur prendra de toute façons l'attaque tant que tu ne fermes pas la socket qui écoute.

3) Comment tu vas vérifier qu'un joueur triche si il ne peut plus rien faire ?

1 - Je n'ai pas trop d'exemple bien concret à donner, mais c'est utile.

2 - Je me suis mal exprimé, j'aurai plutôt dû parler de usefaille mais de façon absurde, qui a un impact sur le serveur.

3 - Tu n'as pas compris ce que je voulais dire. Ce que je voulais dire, c'est que si on remarque l'utilisation d'un même packet, vraiment identique, assez rapidement, par une même personne, on pourra mettre en pause le serveur pour temporairement arrêter son activité et vérifier notre suspicion, chose qui théoriquement dure 2 minutes.

 

Hé ben, bon courage. J'espère que tu seras trèèèès patient pour réaliser ce genre d'émulateur. Surtout en C#.

Je le serai, mon envie de finaliser ce projet est belle et bien là.

Share this post


Link to post
Share on other sites

Tout s'apprends. Mais si on essaye pas c'est sûr qu'on ne saura pas.

Et j'ai la motivation pour apprendre, mon projet m'y pousse.

 

1 - Je préfère le C# et de plus je l'étudie en cours, ça me permettra de me performer sur mes cours.

2 / 3 - Je veux dire par là, que au début Microsoft a développé le FSharp pour concurrencer Java, puis ils ont ensuite développé le C#.

4 - Avec un code équivalant, C# consomme moins de RAM.

5 - Comme tout langage, j'en suis bien conscient.

6 - On peux faire un programme sans POO, du moins avec un semblant de POO, mais c'est juste horrible à dev et pas du tout optimisé.

Laisse tomber  :tmi:

 

En toute honnêteté, je pense que tu veux vraiment faire quelque chose et bien le faire. Mais, dans ce que tu dis on voit clairement que tu ne sais pas tellement de quoi tu parles et par conséquent tu n'as pas les capacités à faire ce que tu veux.

 

Optimiser un langage ? Non. (laisse Microsoft et son compilateur le faire) mais le code oui.

Le F# n'a jamais été conçu pour concurrencer le Java et il est sorti après le C#. C# lui, a repris certains concepts du Java mais n'en est absolument pas un dérivé.

Un code en C# ne consomme pas forcément plus qu'un code en Java. C'est juste les VM sous lesquelles ils s'exécutent qui sont configurées différemment.

Tu peux dev sans faire de POO comme en C ou C++ mais en C# tu ne sais pas faire autrement qu'avec la POO donc quand tu dis que tu commences à développer avec la POO c'est tellement logique mais illogique en même temps.

Share this post


Link to post
Share on other sites

Laisse tomber  :tmi:

 

En toute honnêteté, je pense que tu veux vraiment faire quelque chose et bien le faire. Mais, dans ce que tu dis on voit clairement que tu ne sais pas tellement de quoi tu parles et par conséquent tu n'as pas les capacités à faire ce que tu veux.

 

Optimiser un langage ? Non. (laisse Microsoft et son compilateur le faire) mais le code oui.

Le F# n'a jamais été conçu pour concurrencer le Java et il est sorti après le C#. C# lui, a repris certains concepts du Java mais n'en est absolument pas un dérivé.

Un code en C# ne consomme pas forcément plus qu'un code en Java. C'est juste les VM sous lesquelles ils s'exécutent qui sont configurées différemment.

Tu peux dev sans faire de POO comme en C ou C++ mais en C# tu ne sais pas faire autrement qu'avec la POO donc quand tu dis que tu commences à développer avec la POO c'est tellement logique mais illogique en même temps.

Je sais que je peux y arriver. Non. Je vais y arriver.

Quand je fait un truc, je le fait jusqu'au bout, donc crois moi, même s'il y a des moments j'aurais du mal, j'y arriverai.

Je sais que je peux faire un bon émulateur, seul, tout en apprennant.

  • Upvote 1

Share this post


Link to post
Share on other sites

Faut se donner les moyens d'y arriver aussi... C'est pas en disant que je vais devenir maître de l'univers que ce sera forcément le cas.

Share this post


Link to post
Share on other sites

Faut se donner les moyens d'y arriver aussi... C'est pas en disant que je vais devenir maître de l'univers que ce sera forcément le cas.

C'est pour ça que j'avance, depuis hier soir j'avance sur mon émulateur, je commence les connexions à la base de données là.

Share this post


Link to post
Share on other sites

I - Pourquoi C# et non Java ou C++ ?

 

J'ai décidé de faire l'émulateur en C#, car les émulateurs Java c'est bien, mais sont tous basées sur Ancestra, ce que je trouve dommage, car Ancestra est certes complet, pas mal débogue, mais pas du tout optimisé et surtout bourré de failles.

Ça a pour effet que il en fait un émulateur gourmand en RAM, qui a du mal à supporter une certaine population active et conséquente.

 

C'est pas parce que Ancestra est en Java que tout les émulateurs en Java sont basé sur Ancestra. Rien n'empêche d'en refaire un nouveau en Java.

 

Enfin bref bonne chance quoi ...

Share this post


Link to post
Share on other sites

C'est pas parce que Ancestra est en Java que tout les émulateurs en Java sont basé sur Ancestra. Rien n'empêche d'en refaire un nouveau en Java.

 

Enfin bref bonne chance quoi ...

Je sais bien, mais il faut se le dire, 95% des émulateurs Java sont basés sur Ancestra.

Mais je préfère changer un peu, ça fait un peu de re-nouveau.

Share this post


Link to post
Share on other sites

Je préfère le C# et de plus je l'étudie en cours, ça me permettra de me performer sur mes cours.

C'est vraiment une mauvaise idée de choisir un langage car tu l'étudie en cours...

(En cours, je fais du python et de l'assembleur :))

Share this post


Link to post
Share on other sites

Je sais bien, mais il faut se le dire, 95% des émulateurs Java sont basés sur Ancestra.

Mais je préfère changer un peu, ça fait un peu de re-nouveau.

tu viens de commencer en c# est tu veux faire un bon emulateur , oublie 

Share this post


Link to post
Share on other sites

×
×
  • Create New...