Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • World
  • Users
  • Groups
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse

NodeBB

  1. Home
  2. Informatique
  3. Projets des membres
  4. [Librarie C++/C#/Java] LibNet - Librarie network du projet Highlands MMO Framework

[Librarie C++/C#/Java] LibNet - Librarie network du projet Highlands MMO Framework

Scheduled Pinned Locked Moved Projets des membres
13 Posts 6 Posters 3.0k Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • AlexMogA
    AlexMogA
    AlexMog
    Modérateur spécialisé
    wrote on last edited by
    #1

    <p>Bonjour à tous,</p>
    <p> </p>
    <p>Je développe en ce moment une librairie permettant de gérer des connexions réseau de la manière la plus simple possible (aussi bien niveau AS-I/O (Asynchrone Input Output) que S-I/O (Synchrone Input Output)).</p>
    <p> </p>
    <p>Le but étant de fournir un Framework réseau, pouvant être utilisé pour plusieurs choses (je vise principalement le gaming, puisque cette lib a été spécialement crée pour mon PFA (projet de fin d'année) à Epitech, qui est un MMO).</p>
    <p> </p>
    <p><strong><span style="color:#ff9900;"><em>Genèse</em></span></strong></p>
    <p>Dans le but de permettre une manipulation simple du réseau, et permettre de la modulation au projet, nous avons décidé de créer un Framework MMO avec mon équipe (le but principal étant d'utiliser ce framework pour un de nos projets, voir même le rendre public avec un engine fournis (bref, on réfléchit)).</p>
    <p>Pour ce faire, j'ai du développer une lib réseau, qui c'est plutôt concentrée sur un côté Framework (donc la lib gère aussi le lancement exécutif) et nous avons décidé de la partager. (vous pouvez trouver des informations sur ce framework (en C++ avec support Unity3D) <a href="https://www.facebook.com/pages/PFA-Marseille-Highlands-Framework/805015802897040?sk=timeline#" rel="external nofollow">ici</a>.)</p>
    <p> </p>
    <p>Plusieurs raisons pour ce partage:</p>
    <ul><li>Nous aimons beaucoup le monde de l'OpenSource.</li>
    <li>Les utilisateurs potentiels sont des développeurs, et peuvent donc nous faire des retours, voir même nous conseiller.</li>
    <li>Le partage c'est le bien, nous avons beaucoup appris grâce aux partages, nous souhaitons nous aussi partager nos projet!</li>
    </ul><p>Bref, un projet OpenSource est né <img alt="smile.png" src="<base_url>/applications/sslimageproxy/interface/image.php?url=http://forum.ironcraft.fr/public/style_emoticons/default/smile.png" title=":)"/>.</p>
    <p> </p>
    <p><span style="color:#ff9900;"><strong><em>Généralités et avancement</em></strong></span></p>
    <p><em>Mais des lib réseau, en C++, il y en a plein!</em> me direz-vous. Et je suis entièrement d'accord avec vous. Cela ne m'empêche pas de continuer à développer la lib, pour ceux qui en auraient besoin à un moment où un autre.</p>
    <p> </p>
    <p>Pour parler de l'avancement, je vais vous parler de ce qui est prévu, et de ce qui est fait.</p>
    <p> </p>
    <p>Ce qui est prévu (par ordre de priorités):</p>
    <ul><li>La gestion du protocole WebSocket</li>
    <li>Une version C# de la lib</li>
    <li>Une version Java de la lib</li>
    <li>Ajouter une protection par Mutex à la lib C++ (ça arrive, je trouve la meilleure façon de l'optimiser actuellement)</li>
    </ul><p>Ce qui est fait:</p>
    <ul><li>Publication et développement de la version C++</li>
    </ul><p>Voilà.</p>
    <p> </p>
    <p><span style="color:#ff9900;"><em><strong>Objectifs</strong></em></span></p>
    <p>Les objectifs de la lib sont simples: Permettre à l'utilisateur de créer un serveur/client de manière simple et efficasse, en permettant le multi-plateforme/langage.</p>
    <p>Pour ce faire, je me suis basé sur la librairie réseau de Java, qui est très simple à utiliser, et j'y ai rajouté des objets préfaits. (Ainsi, nous pouvons trouver "TcpASIOServer" qui est l'objet qui permet de créer un serveur ASIO).</p>
    <p>Des exemples sont disponibles dans le dossier "test".</p>
    <p>Voici un exemple de serveur (sans listeners):</p>
    <pre class="ipsCode prettyprint">
    #include <mognetwork/Packet.hh>
    #include <mognetwork/TcpASIOServer.hh>
    #include <mognetwork/TcpASIOWriter.hh>
    #include <stdio.h>
    #include <iostream>
    #include <exception>

    mognetwork::TcpASIOServer* server; // oui, cette global n'est pas cool, mais c'est pour des tests!

    void shandler(int)
    {
    std::cout << "Stopping server..." << std::endl;
    server.stop();
    }

    int main(void)
    {
    mognetwork::TcpASIOServer server_instance(4242); // Cool, on prépare un serveur sur le port 4242!
    server = &server_instance;
    signal(SIGINT, shandler); // On free tout quand on coupe le serveur, nanmého!
    std::cout << "Starting server..." << std::endl;
    try {
    server.start(); // On allume le serveur, il se coupera avec un CTRL+C
    std::cout << "Server ended." << std::endl;
    } catch (const std::exception& e) {
    std::cerr << e.what() << std::endl;
    }
    std::cout << "Finish." <<std::endl;
    return (0);
    }
    </pre>
    <p><span style="color:#ff9900;"><em><strong>Liens et sources</strong></em></span></p>
    <p>Voilà, je vous ai tout dis au niveau du projet, j'espère que vous serez nombreux à l'utiliser, et que j'aurais beaucoup de retours.</p>
    <p> </p>
    <p><em>Sources:</em></p>
    <p>Version C++: <a href="https://github.com/AlexMog/LibNet" rel="external nofollow">https://github.com/AlexMog/LibNet</a></p>
    <p>Version C#: <a href="https://github.com/AlexMog/LibNetCSharp" rel="external nofollow">https://github.com/AlexMog/LibNetCSharp</a></p>
    <p>Version Java: <a href="https://github.com/AlexMog/LibNetJava/" rel="external nofollow">https://github.com/AlexMog/LibNetJava/</a></p>
    <p> </p>
    <p><em>Documentation:</em></p>
    <p>Version C++: <a href="http://alexmog.labs-epimars.eu/projets/mognetwork-doc/doc/html/" rel="external nofollow">http://alexmog.labs-epimars.eu/projets/mognetwork-doc/doc/html/</a></p>
    <p>Version C#: A VENIR</p>
    <p>Javadoc: A VENIR</p>
    <p></p><p>N'hésitez pas à poster votre avis sur la lib, et vos retours <img alt="smile.png" src="<base_url>/applications/sslimageproxy/interface/image.php?url=http://forum.ironcraft.fr/public/style_emoticons/default/smile.png" title=":)"/>.</p>
    <p>Cordialement,</p>
    <p>AlexMog.</p>

    Multiplayer GameDev @ Unexpected
    

    Mon CV

    1 Reply Last reply
    0
    • AlexMogA
      AlexMogA
      AlexMog
      Modérateur spécialisé
      wrote on last edited by
      #2

      <p>J'ai mis à jour le sujet en rajoutant le dépôt Java. Pour l'instant, j'ai fait uniquement des tests, qui s'avèrent être fonctionnels (j'arrive à communiquer correctement avec le serveur C++ <img alt="smile.png" src="<base_url>/applications/sslimageproxy/interface/image.php?url=http://forum.ironcraft.fr/public/style_emoticons/default/smile.png" title=":)"/>)</p>

      Multiplayer GameDev @ Unexpected
      

      Mon CV

      1 Reply Last reply
      0
      • F
        F
        Fantom3z
        Modérateur spécialisé
        wrote on last edited by
        #3

        <p>Bonne chance pour ton projet 😉 </p>

        1 Reply Last reply
        0
        • AzadA
          AzadA
          Azad
          wrote on last edited by
          #4

          <p>Énorme projet, mais comme tout ceux que tu entreprends, j'ai hâte de voir ce que ça donne. 🙂 </p>
          <p>Si tu as besoin de quoique ce soit, n'hésite pas à demander ça à la communauté !</p>
          <p>
          Good luck dude. 😉 </p>

          Administrateur du forum.
          Contactez-moi par message privé ou par mail.

          1 Reply Last reply
          0
          • PirkoaP
            PirkoaP
            Pirkoa
            wrote on last edited by
            #5

            <p>Bon courage, ça a l'air prometteur ! 🙂 </p>

            Étudiant en 2ème année de DUT InformatiqueJetez un coup d’œil à mon CV !

            1 Reply Last reply
            0
            • C
              C
              cegdd
              wrote on last edited by
              #6

              <p>bon courage 😉 </p>

              créateur de Reconquête-Salvatrice, un petit RPG 2D en ligne multi-plateforme [OpenGL / C]

              1 Reply Last reply
              0
              • AlexMogA
                AlexMogA
                AlexMog
                Modérateur spécialisé
                wrote on last edited by
                #7

                <p>Merci pour vos encouragements 🙂 . Ca fais plaisir 😄 </p>

                Multiplayer GameDev @ Unexpected
                

                Mon CV

                1 Reply Last reply
                0
                • AlexMogA
                  AlexMogA
                  AlexMog
                  Modérateur spécialisé
                  wrote on last edited by
                  #8

                  <p>La communication via packets entre C++ et C# est complètement fonctionnelle! YAY!</p>
                  <p> </p>
                  <p>Dernières màj:</p>
                  <p>Java: Tests sur des packets... QUI MARCHENT PAS POUR L'INSTANT 😞 </p>
                  <p>C++: Ajout de modifications pour préparer la compilation sur windows + adaptation de packet >> char*, qui utilise un int32_t au lieu de int64_t pour s'adapter au C#.</p>
                  <p>C#: Packets fonctionnels avec le serveur C++!</p>

                  Multiplayer GameDev @ Unexpected
                  

                  Mon CV

                  1 Reply Last reply
                  0
                  • AlexMogA
                    AlexMogA
                    AlexMog
                    Modérateur spécialisé
                    wrote on last edited by
                    #9

                    <p>LA documentation est passée en anglais pour aider aux utilisateurs non français dans l'utilisation de la lib.</p>

                    Multiplayer GameDev @ Unexpected
                    

                    Mon CV

                    1 Reply Last reply
                    0
                    • E
                      E
                      Eloha
                      Membre d'honneur
                      wrote on last edited by
                      #10

                      <p>Moi je dis bravo Alex ! 🙂 </p>

                      1 Reply Last reply
                      0
                      • AlexMogA
                        AlexMogA
                        AlexMog
                        Modérateur spécialisé
                        wrote on last edited by
                        #11

                        <blockquote class="ipsQuote" data-cite="Eloha" data-ipsquote="" data-ipsquote-contentclass="forums_Topic" data-ipsquote-contentcommentid="14602" data-ipsquote-contentid="1381" data-ipsquote-contenttype="forums" data-ipsquote-timestamp="1418824901" data-ipsquote-username="Eloha"><div>
                        <div>
                        <p>Moi je dis bravo Alex ! 🙂 </p>
                        </div>
                        </div></blockquote>
                        <p>merci à toi 🙂 </p>

                        Multiplayer GameDev @ Unexpected
                        

                        Mon CV

                        1 Reply Last reply
                        0
                        • AlexMogA
                          AlexMogA
                          AlexMog
                          Modérateur spécialisé
                          wrote on last edited by
                          #12

                          <p>J'ai ajouté les mutex manquantes sur la lib, ce qui évitera la plupart des segfaults randoms dues à l'écriture et lecture simultanées.</p>
                          <p>Modifications:</p>
                          <p>- C++ : Ajout des mutex, et réparation de la lecture infinie à la lecture du pipe sur le TcpASIOListener.</p>

                          Multiplayer GameDev @ Unexpected
                          

                          Mon CV

                          1 Reply Last reply
                          0
                          • AlexMogA
                            AlexMogA
                            AlexMog
                            Modérateur spécialisé
                            wrote on last edited by
                            #13

                            <p>La release stable finale est disponible.</p>
                            <p>Avec un temps moyen de 0.025ms pour l'interprétation, LibNet est actuellement une des libs les plus performantes au niveau du réseau (sans proposer de "compilation" de packets", pour comparer, les tests portés sur Boost::ASIO donnent 0.215ms en moyenne pour l'interprétation).</p>
                            <p> </p>
                            <p>Dernière release disponible ici: <a href="https://github.com/AlexMog/LibNet/releases/tag/v172" rel="external nofollow">https://github.com/AlexMog/LibNet/releases/tag/v172</a></p>
                            <p> </p>
                            <p>Enjoy.</p>

                            Multiplayer GameDev @ Unexpected
                            

                            Mon CV

                            1 Reply Last reply
                            1

                            Hello! It looks like you're interested in this conversation, but you don't have an account yet.

                            Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.

                            With your input, this post could be even better 💗

                            Register Login
                            Reply
                            • Reply as topic
                            Log in to reply
                            • Oldest to Newest
                            • Newest to Oldest
                            • Most Votes


                            • Login

                            • Login or register to search.
                            Powered by NodeBB Contributors
                            • First post
                              Last post
                            0
                            • Categories
                            • Recent
                            • Tags
                            • Popular
                            • World
                            • Users
                            • Groups