Aller directement au contenu
  • Catégories
  • Récent
  • Mots-clés
  • Populaire
  • Web
  • Utilisateurs
  • Groupes
Habillages
  • Clair
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Sombre
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Défaut (Aucun habillage)
  • Aucun habillage
Réduire
Melinyel

Melinyel

  1. Accueil
  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

Planifié Épinglé Verrouillé Déplacé Projets des membres
13 Messages 6 Publieurs 3.0k Vues
  • Du plus ancien au plus récent
  • Du plus récent au plus ancien
  • Les plus votés
Répondre
  • Répondre à l'aide d'un nouveau sujet
Se connecter pour répondre
Ce sujet a été supprimé. Seuls les utilisateurs avec les droits d'administration peuvent le voir.
  • AlexMogA Hors-ligne
    AlexMogA Hors-ligne
    AlexMog
    Modérateur spécialisé
    a écrit sur dernière édition par
    #1

    Bonjour à tous,

    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)).

    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).

    Genèse

    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)).

    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) ici.)

    Plusieurs raisons pour ce partage:

    • Nous aimons beaucoup le monde de l'OpenSource.
    • Les utilisateurs potentiels sont des développeurs, et peuvent donc nous faire des retours, voir même nous conseiller.
    • Le partage c'est le bien, nous avons beaucoup appris grâce aux partages, nous souhaitons nous aussi partager nos projet!

    Bref, un projet OpenSource est né ![smile.png](<base_url>/applications/sslimageproxy/interface/image.php?url=http://forum.ironcraft.fr/public/style_emoticons/default/smile.png ":)").

    Généralités et avancement

    Mais des lib réseau, en C++, il y en a plein! 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.

    Pour parler de l'avancement, je vais vous parler de ce qui est prévu, et de ce qui est fait.

    Ce qui est prévu (par ordre de priorités):

    • La gestion du protocole WebSocket
    • Une version C# de la lib
    • Une version Java de la lib
    • Ajouter une protection par Mutex à la lib C++ (ça arrive, je trouve la meilleure façon de l'optimiser actuellement)

    Ce qui est fait:

    • Publication et développement de la version C++

    Voilà.

    Objectifs

    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.

    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).

    Des exemples sont disponibles dans le dossier "test".

    Voici un exemple de serveur (sans listeners):

    #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);
    }
    

    Liens et sources

    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.

    Sources:

    Version C++: https://github.com/AlexMog/LibNet

    Version C#: https://github.com/AlexMog/LibNetCSharp

    Version Java: https://github.com/AlexMog/LibNetJava/

    Documentation:

    Version C++: http://alexmog.labs-epimars.eu/projets/mognetwork-doc/doc/html/

    Version C#: A VENIR

    Javadoc: A VENIR

    N'hésitez pas à poster votre avis sur la lib, et vos retours ![smile.png](<base_url>/applications/sslimageproxy/interface/image.php?url=http://forum.ironcraft.fr/public/style_emoticons/default/smile.png ":)").

    Cordialement,

    AlexMog.

    Multiplayer GameDev @ Unexpected

    Mon CV

    1 réponse Dernière réponse
    0
    • AlexMogA Hors-ligne
      AlexMogA Hors-ligne
      AlexMog
      Modérateur spécialisé
      a écrit sur dernière édition par
      #2

      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++ ![smile.png](<base_url>/applications/sslimageproxy/interface/image.php?url=http://forum.ironcraft.fr/public/style_emoticons/default/smile.png ":)"))

      Multiplayer GameDev @ Unexpected

      Mon CV

      1 réponse Dernière réponse
      0
      • F Hors-ligne
        F Hors-ligne
        Fantom3z
        Modérateur spécialisé
        a écrit sur dernière édition par
        #3

        Bonne chance pour ton projet 😉

        1 réponse Dernière réponse
        0
        • AzadA Hors-ligne
          AzadA Hors-ligne
          Azad
          a écrit sur dernière édition par
          #4

          Énorme projet, mais comme tout ceux que tu entreprends, j'ai hâte de voir ce que ça donne. 🙂

          Si tu as besoin de quoique ce soit, n'hésite pas à demander ça à la communauté !

          Good luck dude. 😉

          Administrateur du forum.

          Contactez-moi par message privé ou par mail.

          1 réponse Dernière réponse
          0
          • PirkoaP Hors-ligne
            PirkoaP Hors-ligne
            Pirkoa
            a écrit sur dernière édition par
            #5

            Bon courage, ça a l'air prometteur ! 🙂

            Étudiant en 2ème année de DUT Informatique

            Jetez un coup d’œil à mon CV !

            signature.jpg

            1 réponse Dernière réponse
            0
            • C Hors-ligne
              C Hors-ligne
              cegdd
              a écrit sur dernière édition par
              #6

              bon courage 😉

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

              1 réponse Dernière réponse
              0
              • AlexMogA Hors-ligne
                AlexMogA Hors-ligne
                AlexMog
                Modérateur spécialisé
                a écrit sur dernière édition par
                #7

                Merci pour vos encouragements 🙂 . Ca fais plaisir 😄

                Multiplayer GameDev @ Unexpected

                Mon CV

                1 réponse Dernière réponse
                0
                • AlexMogA Hors-ligne
                  AlexMogA Hors-ligne
                  AlexMog
                  Modérateur spécialisé
                  a écrit sur dernière édition par
                  #8

                  La communication via packets entre C++ et C# est complètement fonctionnelle! YAY!

                  Dernières màj:

                  Java: Tests sur des packets... QUI MARCHENT PAS POUR L'INSTANT 😞

                  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#.

                  C#: Packets fonctionnels avec le serveur C++!

                  Multiplayer GameDev @ Unexpected

                  Mon CV

                  1 réponse Dernière réponse
                  0
                  • AlexMogA Hors-ligne
                    AlexMogA Hors-ligne
                    AlexMog
                    Modérateur spécialisé
                    a écrit sur dernière édition par
                    #9

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

                    Multiplayer GameDev @ Unexpected

                    Mon CV

                    1 réponse Dernière réponse
                    0
                    • E Hors-ligne
                      E Hors-ligne
                      Eloha
                      Membre d'honneur
                      a écrit sur dernière édition par
                      #10

                      Moi je dis bravo Alex ! 🙂

                      1 réponse Dernière réponse
                      0
                      • AlexMogA Hors-ligne
                        AlexMogA Hors-ligne
                        AlexMog
                        Modérateur spécialisé
                        a écrit sur dernière édition par
                        #11

                        Moi je dis bravo Alex ! 🙂

                        merci à toi 🙂

                        Multiplayer GameDev @ Unexpected

                        Mon CV

                        1 réponse Dernière réponse
                        0
                        • AlexMogA Hors-ligne
                          AlexMogA Hors-ligne
                          AlexMog
                          Modérateur spécialisé
                          a écrit sur dernière édition par
                          #12

                          J'ai ajouté les mutex manquantes sur la lib, ce qui évitera la plupart des segfaults randoms dues à l'écriture et lecture simultanées.

                          Modifications:

                          • C++ : Ajout des mutex, et réparation de la lecture infinie à la lecture du pipe sur le TcpASIOListener.

                          Multiplayer GameDev @ Unexpected

                          Mon CV

                          1 réponse Dernière réponse
                          0
                          • AlexMogA Hors-ligne
                            AlexMogA Hors-ligne
                            AlexMog
                            Modérateur spécialisé
                            a écrit sur dernière édition par
                            #13

                            La release stable finale est disponible.

                            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).

                            Dernière release disponible ici: https://github.com/AlexMog/LibNet/releases/tag/v172

                            Enjoy.

                            Multiplayer GameDev @ Unexpected

                            Mon CV

                            1 réponse Dernière réponse
                            1

                            Bonjour ! Vous semblez intéressé par cette conversation, mais vous n’avez pas encore de compte.

                            Marre de refaire défiler les mêmes messages ? Créez un compte pour retrouver votre position, recevoir des notifications des nouvelles réponses, sauvegarder vos favoris et voter pour les messages que vous appréciez.

                            Grâce à votre participation, ce message peut devenir encore meilleur 💗

                            S'inscrire Se connecter
                            Répondre
                            • Répondre à l'aide d'un nouveau sujet
                            Se connecter pour répondre
                            • Du plus ancien au plus récent
                            • Du plus récent au plus ancien
                            • Les plus votés


                            • Se connecter

                            • Connectez-vous ou inscrivez-vous pour faire une recherche.
                            Powered by NodeBB Contributors
                            • Premier message
                              Dernier message
                            0
                            • Catégories
                            • Récent
                            • Mots-clés
                            • Populaire
                            • Web
                            • Utilisateurs
                            • Groupes