Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Moteur de jeu] Ungine

Moteur complet et puissant

    7 septembre 2011 à 19:17:47

    Citation : Lynix

    J'ai chaque jour deux heures de train à faire, ce qui me fait deux heures de programmation grâce à mon ordinateur portable (Qui est en ce moment-même en train de régénérer ses secteurs défectueux).

    Puis il faut dire que je ne consacre pas beaucoup de temps à l'étude de toute façon :-°

    Côté Ungine je suis en train de remanier la gestion des contextes OpenGL, le but étant de rendre ça thread-safe :)



    Bon courage pour l'Ungine ^^.
    Par contre, ça m'étonnerait que ton DD soit en train de 'régénérer' ses secteurs défectueux. Désolé, mais au mieux il les condamne :/. J'espère que ça touchera pas les fichiers sources...
    • Partager sur Facebook
    • Partager sur Twitter
      7 septembre 2011 à 19:19:56

      Les fichiers sources sont stockés en trois endroits différents et indépendants, dont internet, je ne crains pas de les perdre :p

      Sinon, il est bien possible de régénérer un secteur défectueux, à la seule condition que le problème de ce secteur soit d'ordre magnétique (Ce qui est le cas de 60% des défectuosités).

      Pour plus d'informations, va donc chercher "HDD Regenerator" :)
      • Partager sur Facebook
      • Partager sur Twitter

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

        7 septembre 2011 à 20:05:16

        Généralement les 'restaurations' ne s'emmerdent pas avec les récupérations. Elles condamnent les secteurs, d'où ma remarque. Enfin, te connaissant, je pense que tu sais déjà tout ça ^^.
        • Partager sur Facebook
        • Partager sur Twitter
          11 septembre 2011 à 19:19:00

          De petites nouvelles sur la 0.14, pour commencer elle introduit un système d'extensions pour les modules.

          Il s'agit de fonctionnalités qui n'appartiennent pas à l'interface et qui par conséquent n'ont pas d'obligation d'être présentes, mais vous pouvez vous en servir quand elles sont là.
          Le système est un peu inspiré de celui d'OpenGL :)

          La première extension est UNGINE_OPENGL_CORE.
          Son rôle est de donner un accès direct à OpenGL et ses contextes, sans passer par le module graphique.

          Exemple :
          #include <Ungine/CoreInit.h>
          #include <Ungine/Graphics.h>
          #include <Ungine/Extensions/OpenGLCore.h>
          
          int main()
          {
          	Ungine::CoreInit core;
          	core->MountModule(Ungine::Module_Graphics, "UngineGraphics.dll");
          	if (UngineGraphics->IsExtensionSupported("UNGINE_OPENGL_CORE"))
          	{
          		Ungine::OpenGL::Core* opengl = static_cast<Ungine::OpenGLCore*>(UngineGraphics->GetExtension("UNGINE_OPENGL_CORE"));
          		
          		// Diverses opérations :
          		// Création de contexte OpenGL
          		Ungine::OpenGL::Context* context = opengl->NewContext(); // Les arguments permettent de partager le contexte, ou de spécifier la version
          		
          		// Récupération de la version d'OpenGL
          		unsigned int version = opengl->GetVersion(); // Exemple : 330 pour OpenGL 3.3
          		
          		// Récupération d'une fonction OpenGL (le header GL3.h est inclut dans OpenGLCore.h)
          		PFNGLGENERATEMIPMAPPROC	glGenerateMipmap = reinterpret_cast<PFNGLGENERATEMIPMAPPROC>(opengl->GetEntry("glGenerateMipmap"));
          		
          		// Vérification de la présence d'une extension (Selon glGetString pour OpenGL 2 et glGetStringi pour OpenGL 3)
          		if (opengl->IsExtensionSupported("GL_EXT_texture_filter_anisotropic"))
          		
          		// Récupération du niveau d'une extension (Seulement possible avec certaines extensions énumérées)
          		unsigned int level = opengl->GetExtensionLevel(Ungine::OpenGL::Extension_FrameBufferObject); // 0 = Pas supporté, 1 = Core, 2 = ARB, 3 = EXT, 4 = Fabricant
          	}
          }
          


          C'est pour l'instant un concept, je n'ai pas encore implémenté l'extension mais je pense qu'elle ressemblerait à ceci.

          J'aimerais votre avis avant la sortie de la version 0.14 sur ce système :)

          Je compte aussi refaire entièrement la partie mathématique du moteur, qui a un gros problème (Je vais en profiter pour en faire une classe inline).
          Et régler ce foutu problème de caméra.

          La 0.14 marque l'entrée en beta de l'Ungine, l'architecture n'est pas stable, mais les changements cassants seront de plus en plus rare j'espère.
          Le moteur commence à être utilisable, même si pour le moment il manque cruellement de fonctionnalités avancées.

          Enfin voila, je compte sortir cette version ce mois-ci, ça dépend aussi de mes études, et de mes parties à Dungeon & Dragons :-°
          • Partager sur Facebook
          • Partager sur Twitter

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

            27 septembre 2011 à 14:36:06

            Après plus de deux semaines sans nouvelle, un petit bulletin d'info :p

            Je viens tout juste de remanier les Buffers (Nouvelle classe Buffer), et ça m'a fait réaliser que je maintenait une fonctionnalité qui ne marcherait jamais correctement et qui était impossible à maintenir en réalité, c'est le fait de pouvoir monter/démonter un module n'importe quand.

            Il était possible de démonter et de remonter le module graphique au beau milieu d'un rendu par exemple, et donc de passer d'OpenGL à DirectX et vice-versa, mais ça faisait trop de travail pour pas grand chose.

            Alors à partir de la beta, cette fonctionnalité ne sera plus implémentée, si vous déclarez un objet nécessitant le module graphique alors que celui-ci n'est pas monté, une exception sera lancée, de même si vous démontez le module graphique alors qu'il y a encore au moins un objet en ayant besoin.

            Ce qui signifie qu'il sera toujours possible de changer de Renderer, mais uniquement quand aucune classe graphique (Fenêtre, buffers, textures, ..) ne sera instanciée.

            Les meshs/submeshs et materials sont également en pleine refonte, la classe SubMaterial a disparue et est remplacée par Material, qui est beaucoup plus paramétrable.

            Le moteur écrira un shader adapté pour chaque material.
            Quant aux meshs et submesh, tout a été déplacé (Vertices, indices, animations, ..) dans la classe SubMesh, la classe Mesh ne servant plus que de container.

            Le moteur supportera bientôt les animations "haut-niveau" (Par exemple, savoir que de la frame 0 à la frame 14, le personnage court).

            Bref, je profite de ce passage en bêta pour refaire une bonne partie du moteur, avec une meilleure architecture qui devrait très bientôt permettre le deferred shading :)
            • Partager sur Facebook
            • Partager sur Twitter

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

              28 septembre 2011 à 14:16:19

              Ah, plus de changement de moteur à chaud? Dommage, c'était une belle prouesse technique!
              • Partager sur Facebook
              • Partager sur Twitter
                28 septembre 2011 à 14:41:23

                C'est toujours possible à partir du moment où aucune classe graphique n'est instanciée (Exception faite des singleton comme le Renderer).

                Mais je me suis bien rendu compte que ça ne servait pas vraiment à grand chose, cependant on garde l'avantage majeur de la technologie, c'est de pouvoir "utiliser" des classes dans le noyau, en fournissant leur implémentation dans un module.

                Par exemple une classe Entity, utilisant la classe Model et la classe PhysObject, qui aurait besoin du module graphique et du module physique, peut exister dans le noyau et même être "utilisée" (Du point de vue du compilateur) sans implémentation, un peu comme les classes virtuelles pures :)
                • Partager sur Facebook
                • Partager sur Twitter

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

                  8 octobre 2011 à 1:25:32

                  Un petit bulletin news, j'ai pris la décision récemment d'écrire l'Ungine en C++11, étant donné que la norme est finalisée et sortie, ce n'est qu'une question de temps avant que les compilateurs ne la supportent intégralement, en sachant que GCC 4.6.1 (Disponible depuis quelques jours avec MinGW sous Windows, voir ici) supporte assez bien cette nouvelle norme.

                  Je me suis dis que plus tôt je m'y mettais, mieux c'était.
                  Pour l'instant, tout le moteur utilise cette norme, ce qui signifie que l'interface n'est utilisable qu'avec un compilateur récent.

                  J'hésite encore à convertir l'interface en C++03, de sorte que l'Ungine (Même écrit en C++11) soit utilisable sur un compilateur pas encore à jour, avec des binaires pré-compilés.

                  Je remanie l'architecture des ressources, il y a maintenant un système de persistance, une ressource non-persistante est automatiquement libérée lorsque son compteur de référence atteint zéro, ce système existait déjà en beaucoup plus limité, et dépendait du ResourceManager, maintenant c'est directement dans la ressource :)


                  Exemple :

                  C++03:
                  unsigned int Mesh::GetVertexCount() const
                  {
                  	unsigned int vertexCount = 0;
                  	for (std::vector<SubMesh*>::const_iterator it = m_subMeshes.begin(); it != m_subMeshes.end(); ++it)
                  		vertexCount += (*it)->GetVertexCount();
                  
                  	return vertexCount;
                  }
                  


                  C++11:
                  unsigned int Mesh::GetVertexCount() const
                  {
                  	unsigned int vertexCount = 0;
                  	for (SubMesh* subMesh : m_subMeshes)
                  		vertexCount += subMesh->GetVertexCount();
                  
                  	return vertexCount;
                  }
                  

                  • Partager sur Facebook
                  • Partager sur Twitter

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

                    9 octobre 2011 à 11:34:59

                    Sympaaaa la nouvelle syntaxe des itérateurs! Mais tu devrais tout de même conserver une interface C++03...
                    • Partager sur Facebook
                    • Partager sur Twitter
                      23 octobre 2011 à 19:46:47

                      J'ai eu des problèmes de santé récemment, ça fait une semaine que je n'ai pas touché à mon moteur à cause de ça.

                      J'essaye de reprendre peu à peu.
                      Le nouveau système de meshs est en place, le moteur compile, le noyau est stable, il me reste encore à terminer le module graphique et j'espère pouvoir récupérer un rendu assez rapidemment.

                      Cependant, mes soucis ne me permettent pas de travailler comme je le voudrais, mais je fais de mon mieux :)
                      • Partager sur Facebook
                      • Partager sur Twitter

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

                        23 octobre 2011 à 20:39:27

                        Sacré Lynix! Tu pourrais être aux portes de la mort que tu lâcherais pas ton clavier! x)
                        • Partager sur Facebook
                        • Partager sur Twitter
                          16 novembre 2011 à 14:25:22

                          Me revoila rétabli, je progresse vis à vis de l'Ungine, mais j'ai fait une connerie avec le système de rendu (J'ai voulu remplacer les déclarations), je suis en train de réparer tout ça, au pire je remettrais quelques fichiers sur la r13.

                          Une fois que le rendu fonctionne à nouveau, je pense directement commencer le petit projet lié à Utopia :)

                          (Une fois la beta sortie, les commits seront beaucoup plus proches niveau temps de sortie)

                          J'aimerais votre avis néanmoins sur une chose, je pensais sortir la base du noyau dans une bibliothèque tierce qui serait capable alors :
                          • De gérer les fichiers et dossiers (Noms unicodes, tailles > 4 go, gestion presque transparente du boutisme, recherche dans les dossiers, etc..)
                          • De gérer les chaines de caractères (Classe complète, performante et gérant l'UTF-8)
                          • De gérer les fonctions de hachages (Pour l'instant CRC32, MD5 et Whirlpool)
                          • Gestion des bibliothèques dynamiques


                          Tout en étant portable, open-source et sous licence MIT (Autorisant tout) :)

                          Faites-moi savoir si ça vous intéresse ;)
                          • Partager sur Facebook
                          • Partager sur Twitter

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

                            14 mars 2012 à 14:36:54

                            Oh que oui, énormément de choses ont changés depuis le mois de décembre, et ça va me demander une annonce que j'envisage de faire d'ici quelques semaines, ou avant, mais juste le temps que tout soit prêt :)
                            • Partager sur Facebook
                            • Partager sur Twitter

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

                            Anonyme
                              30 mars 2012 à 17:30:38

                              Lynix, que devient le projet ?
                              Je viens de remarquer que le forum n'était plus en ligne...
                              • Partager sur Facebook
                              • Partager sur Twitter
                                30 mars 2012 à 17:39:23

                                Très hâte d'avoir des nouvelles et de nouveaux commits. De ce que j'ai vu sur le svn, c'est du code source de qualité, tu es compétant.
                                • Partager sur Facebook
                                • Partager sur Twitter
                                  31 mars 2012 à 10:14:19

                                  @InfernoLeZéro : Petit souci pour renouveler l'hébergement, la carte n'est pas acceptée, je vais tenter de régler ça demain.

                                  @Lex22 : Ce sur quoi je travaille est une réécriture avec un code de meilleure qualité encore, je pense donner des nouvelles dans les prochains jours :)
                                  • Partager sur Facebook
                                  • Partager sur Twitter

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

                                    22 avril 2012 à 19:13:17

                                    Petit up pour quelques news :) J'ai un peu hate de voir ce que nous concocte de bon.
                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      22 avril 2012 à 21:53:37

                                      Je vais probablement annoncer tout ça dans la semaine qui vient, depuis que mon ordinateur portable est en réparation je ne peux travailler qu'à domicile ^^

                                      • Partager sur Facebook
                                      • Partager sur Twitter

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

                                        3 mai 2012 à 18:29:38

                                        Et voilà la raison qui fait que je n'ai rien dis pendant six mois :D

                                        Nazara Engine
                                        • Partager sur Facebook
                                        • Partager sur Twitter

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

                                        Anonyme
                                          4 juin 2012 à 22:11:26

                                          Viens juste de voir ça ;-) Ça faisait un bout de temps que je n'étais pas passé sur le SdZ.
                                          • 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