Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Moteur de jeu] Ungine

Moteur complet et puissant

    21 juillet 2010 à 0:48:34

    l'Ungine a été remplacé par Nazara


    Image utilisateur


    Bonjour,

    Je m'appelle Jérôme(Lynix), j'ai 17 ans et je programme depuis tout jeune. Mes capacités vont du C/C++/PHP/Lua (Maitrisés) au xHTML/CSS/Javascript/SQL/VB (Maniés).

    Il y a presque deux ans, je me suis lancé dans la création de mon propre jeu, mais les moteurs que j'ai testé (OGRE, Irrlicht) ne me convenaient pas, j'ai alors décidé de me lancer dans la création de mon propre moteur de jeu.

    l'Ungine



    C'est un moteur dont le but est d'être puissant, complet, rapide et facile à utiliser (Interface utilisateur).
    Il dispose de classes haut-niveau qui permettent à l'utilisateur de faire des choses très facilement, par exemple charger un modèle depuis un fichier ne prend qu'une ligne, l'Ungine se chargeant même de trouver la texture tout seul si vous lui demandez.
    Mais cette interface haut-niveau est basée sur des interfaces de niveau de plus en plus faible, permettant à l'utilisateur d'avoir un accès bas-niveau si besoin est.

    L'Ungine est séparé en modules, dont le moteur 2D, le moteur 3D, le Renderer, le moteur physique, le moteur réseau, le moteur audio.

    Sans oublier que l'Ungine propose aussi un module pour le scripting en Lua, très facile à utiliser.

    Le noyau est ce qui est le plus abouti pour l'instant, je travaille en ce moment sur le moteur 3D et le Renderer.

    Voici une liste non-exhaustive des fonctionnalités, ce qui est en vert est implanté et fonctionne parfaitement, ce qui est en orange est implanté mais fonctionne mal ou est en cours d'implantation, ce qui est en rouge n'est pas encore implanté

    • Moteur entier :
      • Portable (Windows, Linux, MacOS)
      • Thread-safe
      • MemoryManager actif en Debug Mode (Loggant chaque leak)
    • Noyau :
      • Gestion de chaine de caractère surpassant en fonctionnalités et en vitesse d'exécution la std::string
      • Gestion des fichiers et des dossiers
      • Gestion des hashs (CRC16, CRC32, MD5, SHA1, SHA256, SHA512, Whirlpool)
      • Gestion du fenêtrage et des évènements
      • Outil mathématique complet et puissant (Matrices 3x3, 4x4, *x*, Quaternions, Vecteur 2D, Vecteur 3D, Vecteur 4D)
      • Gestion des maillages 3D statiques et animés
      • Gestion des textures
      • Gestion du son
      • Gestion avancé des ressources (ResourceManager) avec loaders
      • Loaders de base (Formats supportés)
        • Modèles 3D : obj, md2
        • Images : bmp, jpg, jpeg, pcx, png, tga
        • Matériaux : mtl
        • Sons : ogg, wav, flac, aiff, au, raw, paf, svx, nist, voc, ircam, w64, mat4, mat5, pvf, htk, sds, avr, sd2, caf, wve, mpc2k, rf64
        • Polices de caractère : ttf, cff, pcf, fnt, bdf, pfr, sfnt, type 1, type 42
      • Gestion du temps, des threads, des mutex
      • Gestion des angles en degrés et en radians
      • Gestion du boutisme (Détection + permutation des octets)
      • Benchmarks (Supportés par une classe automatisant les tests et calculant le nombre d'itérations nécessaire)
      • Gestion des plugins
      • Logs
      • Support des entités (Réunion des modèles du moteur 3D et des entités physiques)
      • Méthodes pour les maillages 3D (Génération automatique du LOD, génération automatique des normales, plaquage de texture, etc)
      • Support des textures animées (Vidéo par exemple)
      • Support de langages de scripts
      • Support de l'Unicode
    • Module graphique (Ungine OpenGL Graphics Module):
      • Affichage d'un Mesh normal (Vertex Arrays)
      • Gestion des index et pixel buffers ainsi que des déclarations
      • Support des textures
      • Support du multi-texturing
      • Support des shaders GLSLet Cg
      • Support du stencil buffer
      • Support du rendu sur image
      • Mipmapping
      • Support de la transparence
      • Support des modèles (Réunion d'un matériau et d'un maillage 3D)
      • Support du projective texturing (Texture projetée)
      • Support des ombres dynamiques
      • Support des ombres statiques
      • Organisation de la scène
      • Support des billboards
      • Support des backgrounds
      • Support du Bump Mapping
      • Support du Parallax Mapping
      • Support du deferred shading (Éclairage)
      • Support du per-pixel-lighting (Éclairage)
      • Moteur de particule (SPARK)
      • Système de vues
      • Affichage de chaines de caractère
      • Sprites
      • Gestion d'une GUI
    • Physique (Newton Game Dynamics) :
      • Gestion de plusieurs simulations
      • Choix du résolveur réaliste ou rapide
      • Gestion de matériaux (Définissant certains paramètres comme le coefficient de rebondissement, etc...)
      • Gestion de formes basiques (Cube, sphère, capsule, cylindre, heightfield)
      • Gestion de formes convexe
      • Gestion de formes non-convexe (Assemblage de formes convexes)
      • Lancer de rayons (Aussi appellé trace ou ray)
      • Gestion de la masse et de l'inertie
      • Gestion d'entités physique (Combinaison d'une forme et d'un objet mouvant
    • Audio (Ungine OpenAL Audio Wrapper) :
      • Utilisation de l'accélération matérielle si disponible
      • Spatialisation du son en 3D
      • Capture audio
      • Streaming
    • Réseau (Ungine TCP/UDP Network Module) :
      • Gestion de sockets TCP et UDP
      • Gestion de sélecteurs
      • Architecture réseau client/serveur
      • Gestion de packets via les opérateurs de flux

    Il y a beaucoup de rouge, c'est vrai, mais tout ce qui n'est pas graphique n'est qu'un wrapper a écrire, l'implémentation du moteur physique entier s'est faite très rapidement par exemple, le moteur en lui-même était déjà écrit, cela vaut aussi pour l'audio et le réseau.

    J'utilise le code source de la SFML 2, de tous les modules sauf le module graphique, il ne faut pas oublier Laurent Gomila pour son excellent travail.

    Je n'ai pas encore décidé sous quelle licence j'allais distribuer mon moteur, mais il sera open-source.

    L'objectif de l'Ungine est de simplifier la vie des programmeurs en donnant un accès haut-niveau à tous les modules, tout en gardant la possibilité d'utiliser du bas-niveau.
    J'espère ainsi faire plaisir à tout le monde.

    J'aimerais savoir si vous êtes intéressé par le projet.

    Démos technique


    Je sors des démo techniques montrant les capacités naissantes de l'Ungine.
    La première démo technique montre le moteur fonctionnel et le Renderer, elle est disponible ici : http://forum.utopia-universe.net/viewtopic.php?f=11&t=58

    Screens (Issus de la première démo technique et de quelques tests en interne) :
    Image utilisateur
    Image utilisateur
    Image utilisateur
    Image utilisateur
    Image utilisateur
    Image utilisateur
    Image utilisateur

    Le reste



    Quelques liens :
    Le site de mon jeu
    La première démo technique de l'Ungine
    Le site de la SFML

    Voila voila :)
    • Partager sur Facebook
    • Partager sur Twitter

    Mes articles | Nazara Engine | Discord NaN | Ma chaîne Twitch (programmation)

      25 juillet 2010 à 16:35:29

      Tu ferais mieux de mettre de couleur différente au lieu de souligné, ce serait beaucoup plus lisible, là faut faire gaffe si c'est en italique ou pas ..
      • Partager sur Facebook
      • Partager sur Twitter
        25 juillet 2010 à 17:33:57

        Bon ben, toujours au top à ce que je vois ;) .
        C'est une très bonne idée d'avoir fait ce post, comme ça on peut savoir où en est le moteur et les fonctionnalités qu'il compte avoir.

        Bonne continuation :) !

        • Partager sur Facebook
        • Partager sur Twitter
        Anonyme
          25 juillet 2010 à 18:43:08

          Ton moteur à l'air très intéressant ;) .

          Les sources sont-elles déjà en ligne ou pas? Vu que tu n'as pas encore choisi la licence ça m'étonnerait mais on s'est jamais :p .

          Je suivrais en tout cas ton projet de prêt :D .
          Bonne continuation.
          • Partager sur Facebook
          • Partager sur Twitter
            26 juillet 2010 à 0:55:58

            Salut,
            Wahou, 17 ans dis-tu ?
            Ca a l'air très intéressant, et surtout réfléchi.
            J'aurais bien apprécié quelques screens de rendu (je suis allé jeter un oeil sur ton site, mais honnêtement la police bleue-marine sur un fond noir, ça pique les yeux, surtout quand on switch avec le SdZ qui est blanc).
            Bonne continuation, sincèrement.

            [EDIT] Si c'est portable sur Linux, faut simplement faire gaffe à n'utiliser que des systèmes IPC/protocoles UNIX, et hop, ça devient portable sur Mac.
            • Partager sur Facebook
            • Partager sur Twitter
              26 juillet 2010 à 1:26:43

              En rendu on a une application qui affiche le nombre d'fps suite à l'affichage d'un vaisseau (on peut se déplacer le voir de près ...).
              • Partager sur Facebook
              • Partager sur Twitter
                26 juillet 2010 à 1:42:06

                17 ans ! Chapeau ;)

                Ca fait combien de temps exactement (enfin en gros quoi) que tu programmes ?
                • Partager sur Facebook
                • Partager sur Twitter
                  26 juillet 2010 à 8:51:15

                  Normal qu'aucun des liens ne marche ?
                  • Partager sur Facebook
                  • Partager sur Twitter
                  Directeur technique, créateur de jeux HTML5 et fan de JavaScript | La suite de OnHack est sur les rails !
                    26 juillet 2010 à 12:52:03

                    Citation : skynet1994

                    Les sources sont-elles déjà en ligne ou pas? Vu que tu n'as pas encore choisi la licence ça m'étonnerait mais on s'est jamais :p .


                    Les sources sont sur un SVN auquel danman et moi avons accès, je ne sais pas encore quand est-ce que je vais le rendre public, mais il me faudrait choisir une licence avant ça justement.

                    Citation : uaip

                    J'aurais bien apprécié quelques screens de rendu


                    Il y en a, il y a même une première démo technique mais ça ne montre pas grand chose, enfin je vais mettre des images en rentrant chez moi ce soir

                    Citation : uaip

                    je suis allé jeter un oeil sur ton site, mais honnêtement la police bleue-marine sur un fond noir, ça pique les yeux, surtout quand on switch avec le SdZ qui est blanc



                    Oui c'est vrai que les couleurs sont à l'opposé du site du zéro, mais pour un site d'un jeu orienté sur l'espace, je pense que les couleurs sombres sont les seules qui peuvent donner quelque chose de bien :)

                    Quant au logo de l'Ungine, c'est vrai que il n'y a pas de raison de préférer une certaine couleur, je préfère personnellement ce qui est soft, on pourrait voir pour un logo transparent, enfin c'est pas le plus important non plus :p

                    Citation : uaip

                    Si c'est portable sur Linux, faut simplement faire gaffe à n'utiliser que des systèmes IPC/protocoles UNIX, et hop, ça devient portable sur Mac.



                    Malheureusement il n'y a pas que ça, il y a aussi OpenGL, et pour le rendu sur image il y a aussi besoin d'une technique différente sous Linux et MacOS.

                    Citation : petitfou

                    17 ans ! Chapeau ;)

                    Ca fait combien de temps exactement (enfin en gros quoi) que tu programmes ?



                    Ça fait plus de 7 ans ;)

                    Citation : Shivaan

                    Normal qu'aucun des liens ne marche ?



                    Je viens de les essayer, ils fonctionnent tous, peut-être un souci de DNS?
                    • Partager sur Facebook
                    • Partager sur Twitter

                    Mes articles | Nazara Engine | Discord NaN | Ma chaîne Twitch (programmation)

                    Anonyme
                      1 août 2010 à 19:19:45

                      Salut,

                      Pourrais-tu nous montrer des screens de ton moteur. Peut-être pas tout de suite mais quand tu feras des nouvelles choses nous les présentaient.
                      Je sais que là il y a la démo mais des screens seraient tout aussi bien ;) .
                      • Partager sur Facebook
                      • Partager sur Twitter
                        1 août 2010 à 19:40:05

                        +1 pour les screens !
                        Etant sous Linux, j'aimerais voir à quoi ça ressemble. :)
                        • Partager sur Facebook
                        • Partager sur Twitter
                          10 août 2010 à 15:58:25

                          Et voila, je viens de terminer d'implanter le moteur physique dans l'Ungine.

                          Il me reste encore à implanter le début du moteur 2D et les buffers avant de faire les deux démo techniques (Une pour le moteur 3D, une pour le moteur physique).

                          Pour les intéressés, l'Ungine fait actuellement 29 502 lignes de code (21604 lignes remplies, le reste est constitué de commentaires ou d'espaces blancs).

                          Je vais mettre à jour le premier post avec des screens de la première démo technique, en attendant les deux suivantes.
                          • Partager sur Facebook
                          • Partager sur Twitter

                          Mes articles | Nazara Engine | Discord NaN | Ma chaîne Twitch (programmation)

                            19 septembre 2010 à 19:28:54

                            Après trois jours de travail, j'ai enfin pu intégrer l’Unicode dans l'Ungine.

                            Ceci grâce à une nouvelle classe Ungine::UnicodeString fonctionnant comme l'Ungine::String, excepté que elle peut gérer l'Unicode, et par conséquent prend plus de place en mémoire.

                            Cependant les algorithmes sont les mêmes, mais appeler la version Unicode avec un const char* en paramètre est bien plus lent qu'avec la version normale.

                            Voici un benchmark résumant la situation (Généré par ma classe Ungine::Benchmark) :

                            Image utilisateur

                            Pour les curieux, voici le code source du projet de Benchmark :
                            #include <Ungine/Benchmark.h>
                            #include <Ungine/String.h>
                            #include <Ungine/UnicodeString.h>
                            #include <iostream>
                            #include <string>
                            
                            std::string str = "Bonjour le monde";
                            std::string str2 = "monde";
                            Ungine::String ustr = "Bonjour le monde";
                            Ungine::String ustr2 = "monde";
                            Ungine::UnicodeString unistr = "Bonjour le monde";
                            Ungine::UnicodeString unistr2 = "monde";
                            
                            const char* str3 = "monde";
                            
                            void Test1()
                            {
                            	str.find(str2);
                            }
                            
                            void Test2()
                            {
                            	ustr.Find(ustr2);
                            }
                            
                            void Test3()
                            {
                            	unistr.Find(unistr2);
                            }
                            
                            void Test4()
                            {
                            	str.find(str3);
                            }
                            
                            void Test5()
                            {
                            	ustr.Find(str3);
                            }
                            
                            void Test6()
                            {
                            	unistr.Find(str3);
                            }
                            
                            int main()
                            {
                            	Ungine::Benchmark bench("Benchmark Find");
                            	bench.AddTest(Test1, "std::string::find(const std::string&)");
                            	bench.AddTest(Test2, "Ungine::String::Find(const Ungine::String&)");
                            	bench.AddTest(Test3, "Ungine::UnicodeString::Find(const Ungine::UnicodeString&)");
                            	bench.AddTest(Test4, "std::string::find(const char*)");
                            	bench.AddTest(Test5, "Ungine::String::Find(const char*)");
                            	bench.AddTest(Test6, "Ungine::UnicodeString::Find(const char*)");
                            	bench.Launch();
                            	std::cout << bench << std::endl;
                            	return 0;
                            }
                            
                            • Partager sur Facebook
                            • Partager sur Twitter

                            Mes articles | Nazara Engine | Discord NaN | Ma chaîne Twitch (programmation)

                            Anonyme
                              19 septembre 2010 à 20:41:29

                              Ca plante au chargement ...
                              • Partager sur Facebook
                              • Partager sur Twitter
                                19 septembre 2010 à 20:43:11

                                Qu'est-ce qui plante au chargement?
                                • Partager sur Facebook
                                • Partager sur Twitter

                                Mes articles | Nazara Engine | Discord NaN | Ma chaîne Twitch (programmation)

                                Anonyme
                                  19 septembre 2010 à 20:46:48

                                  Il plante quand il charge voyager.mtl, la fenêtre s'ouvre et une autre fenêtre où il dit le programme à cessé de fonctionner.

                                  Signature du problème :
                                    Nom d’événement de problème:    APPCRASH
                                    Nom de l’application:    TestUngine.exe
                                    Version de l’application:    0.0.0.0
                                    Horodatage de l'application:    4bee74ce
                                    Nom du module par défaut:    StackHash_9446
                                    Version du module par défaut:    0.0.0.0
                                    Horodateur du module par défaut:    00000000
                                    Code de l’exception:    c0000005
                                    Décalage de l’exception:    00000000
                                    Version du système:    6.0.6002.2.2.0.768.3
                                    Identificateur de paramètres régionaux:    1036
                                    Information supplémentaire n° 1:    9446
                                    Information supplémentaire n° 2:    f11091cb6c31bd60085c581bbfe8ca63
                                    Information supplémentaire n° 3:    1241
                                    Information supplémentaire n° 4:    88dc83b66b18bc23e9cd816dba661cd6
                                  
                                  Lire notre déclaration de confidentialité :
                                    http://go.microsoft.com/fwlink/?linkid=50163&clcid=0x040c
                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    19 septembre 2010 à 20:50:26

                                    Ah d'accord, c'est de la première démo technique que tu parles.

                                    C'est un bug connu et corrigé depuis quelques mois maintenant, le crash se produit à la fermeture du programme pour la plupart mais pour certains c'est au démarrage comme dans ton cas.

                                    Je n'ai pas pensé à remettre une version exempte de bug, étant donné que je fais mon possible pour sortir la seconde démo technique la semaine qui vient.

                                    J'essayerais de penser à refaire la première démo technique avec le moteur actuel afin de corriger ce crash.
                                    • Partager sur Facebook
                                    • Partager sur Twitter

                                    Mes articles | Nazara Engine | Discord NaN | Ma chaîne Twitch (programmation)

                                      6 octobre 2010 à 18:49:30

                                      Une petite image en provenance de la démo technique #2

                                      Image utilisateur

                                      J'en ai aussi profité pour changer un peu le logo, il est maintenant sur fond transparent :)

                                      Il ne me reste pas grand chose à faire pour sortir la démo technique #2, un peu de patience :)
                                      • Partager sur Facebook
                                      • Partager sur Twitter

                                      Mes articles | Nazara Engine | Discord NaN | Ma chaîne Twitch (programmation)

                                        6 octobre 2010 à 21:43:49

                                        Eh ben dis donc ! Bravo !
                                        Sinon, il y a moins de rouge qu'au début, c'est plutot bien.
                                        En core bravo.
                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                          15 octobre 2010 à 23:10:52

                                          Sortie de la seconde démo technique de l'Ungine :
                                          http://forum.utopia-universe.net/viewtopic.php?f=11&t=70

                                          Les résultats de benchmark sont intéressants, n'hésitez pas à les distribuer. :)
                                          • Partager sur Facebook
                                          • Partager sur Twitter

                                          Mes articles | Nazara Engine | Discord NaN | Ma chaîne Twitch (programmation)

                                            17 octobre 2010 à 12:48:18

                                            Image utilisateur
                                            Processeur Intel® Core™ i7-740QM
                                            Vitesse du processeur (GHz) : 1,73
                                            8 GO Mémoire vive
                                            Processeur graphique NVIDIA® GeForce® 330M GT (1GO)
                                            • Partager sur Facebook
                                            • Partager sur Twitter
                                              17 octobre 2010 à 12:59:54

                                              Tu as un fichier benchmark.txt qui reprend ces informations :)
                                              • Partager sur Facebook
                                              • Partager sur Twitter

                                              Mes articles | Nazara Engine | Discord NaN | Ma chaîne Twitch (programmation)

                                                17 octobre 2010 à 13:18:45

                                                Salut,

                                                J'ai posté mon poste à l'arrache avant de manger.
                                                En effet, c'est beaucoup plus simple :

                                                Citation : Ungine


                                                Démo technique de l'Ungine #2 : Résultats du benchmark
                                                Carte graphique : GeForce GT 330M/PCI/SSE2
                                                Module graphique : Ungine Renderer Module (0.0.434 - OpenGL 3.1 NVIDIA 189.25)

                                                Test n°1 - Modèles - Score : 51782
                                                Test n°2 - Shaders - Score : 15176
                                                Test n°3 - Textures - Score : 9862
                                                Test n°4 - Masques (Stencil) - Score : 20817

                                                Score global : 97637



                                                C'est bien ce score ? ^^ (ça à l'air moyen...)
                                                • Partager sur Facebook
                                                • Partager sur Twitter
                                                  17 octobre 2010 à 13:36:40

                                                  C'est un score moyen, il y a mieux et pire.

                                                  Le record est actuellement 521 135 détenu par Zlatows, un belge (L'honneur est sauf :D , vive la belgique)
                                                  • Partager sur Facebook
                                                  • Partager sur Twitter

                                                  Mes articles | Nazara Engine | Discord NaN | Ma chaîne Twitch (programmation)

                                                  Anonyme
                                                    24 octobre 2010 à 20:47:41

                                                    Y a un lien vers ça sur le site ?
                                                    • Partager sur Facebook
                                                    • Partager sur Twitter
                                                    Anonyme
                                                      24 octobre 2010 à 20:51:37

                                                      vers ce sujet ?
                                                      • Partager sur Facebook
                                                      • Partager sur Twitter
                                                        24 octobre 2010 à 20:52:29

                                                        Non, il n'y a pas de site pour parler de l'Ungine et quand il y en aura un, ce sera le sujet qui donnera un lien pour le site :)
                                                        • Partager sur Facebook
                                                        • Partager sur Twitter

                                                        Mes articles | Nazara Engine | Discord NaN | Ma chaîne Twitch (programmation)

                                                        Anonyme
                                                          24 octobre 2010 à 21:15:49

                                                          Je disais que ça pouvait être intéressant de poster sur utopia-universe.net car tant que l'Ungine ne sera pas fini, le jeu non plus et que cela peut donner matière à patienter :)
                                                          • Partager sur Facebook
                                                          • Partager sur Twitter

                                                          [Moteur de jeu] Ungine

                                                          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                                          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                                          • Editeur
                                                          • Markdown