Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Moteur de jeu] Ungine

Moteur complet et puissant

    14 mars 2011 à 16:15:31

    Merci pour la bibliothèque, elle a l'air pratique.

    Je vais peut-être bien l'utiliser comme loaders secondaires (Au cas où ceux que je fais ne fonctionnent pas).

    Mais les loaders que j'écris sont plus optimisés car directement interfacés avec le fonctionnement du moteur.

    Je crains que cette librairie, de part son aspect général ne puisse pas gérer le modèle en utilisant un minimum de mémoire.
    Par exemple, les indices, l'Ungine gère les indices de taille 8, 16 et 32, or j'ai vu que le code de la librairie ne gérait que les indices 32 (Ce qui pompe de la mémoire pour rien).

    De plus, les loaders de l'Ungine vont permettre aussi une écriture d'un mesh dans un fichier, ce qui n'est pas proposé par ta bibliothèque.

    L'Ungine gère sans problème les modèles md2 et je suis en pleine réécriture du loader obj.

    Pour l'instant, c'est suffisant je pense :)
    • Partager sur Facebook
    • Partager sur Twitter

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

      23 mars 2011 à 22:28:04

      l'Ungine progresse bien, les SceneNode ont été ajoutées et fonctionnent parfaitement, je vais pouvoir attaquer le SceneManager, l'un des élément fondamental d'un bon moteur 3D (Qui optimise le rendu automatiquement, en plus de le rendre plus facile).

      J'ai fais une petite démo pour tester les nodes : Ici

      C'est une démo technique qui n'a absolument pas été préparée pour le public, on y voit donc du grand n'importe quoi avec des tests physiques si vous appuyez sur F3.

      La partie physique représente deux géométries créées en prenant le modèle du Dr Freak et en faisant une enveloppe convexe autour.

      Vous pouvez les diriger avec : ZQSD et RF pour la forme gauche, les flèches et PageUp/PageDown pour la forme de droite.

      Je le rappelle : Il y a des collisions.

      Si vous allez trop loin, les formes vont se bloquer et il vous sera impossible de les faire se déplacer à nouveau : C'est normal, si vous atteignez un bord de la "boite de simulation", alors la simulation physique n'opère plus.

      Bref, je continue à programmer ;)

      (L'alpha-test avance bien, si d'autres veulent participer, qu'ils n'hésitent pas à me contacter :) )

      PS : J'ai une personne qui se plaint de bugs importants avec cette démo, si ça vous arrive, ça m'intéresserait de le savoir pour pouvoir corriger ;)
      • Partager sur Facebook
      • Partager sur Twitter

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

        23 mars 2011 à 23:09:30

        Pour ma part, ca marche tres bien pour le rendu (avec cette fois ci pas de limite de fps :) ). Sinon, le mouvement ne marche pas (ZQSD et RF) mais F3 et F4 marche bien (cependant je suis sur un clavier US, ca peut peu etre expliquer la chose ...).

        Les enveloppes convexes ne tournent pas avec le graphe de scene (mais ca doit etre le comportement normal).

        Edit : En realite ca marche niquel.
        • Partager sur Facebook
        • Partager sur Twitter
          23 mars 2011 à 23:15:36

          En effet, les enveloppes ne bougent que par la physique.
          Suite à une demande, voici le code source (Que je n'ai pas mis avec la démo parce que j'en suis pas fier :-° )

          Attention, ce code est crade, il ne sert qu'à tester
          #define protected public
          
          #include <Ungine/Angle.h>
          #include <Ungine/CoreInit.h>
          #include <Ungine/Graphics.h>
          #include <Ungine/Image.h>
          #include <Ungine/IndexBuffer.h>
          #include <Ungine/Math.h>
          #include <Ungine/Material.h>
          #include <Ungine/Matrix3.h>
          #include <Ungine/Matrix4.h>
          #include <Ungine/Mesh.h>
          #include <Ungine/Model.h>
          #include <Ungine/Renderer.h>
          #include <Ungine/RenderTexture.h>
          #include <Ungine/RenderWindow.h>
          #include <Ungine/Sprite.h>
          #include <Ungine/String.h>
          #include <Ungine/SceneNode.h>
          #include <Ungine/SubMaterial.h>
          #include <Ungine/SubMesh.h>
          #include <Ungine/Texture.h>
          #include <Ungine/Utf.h>
          #include <Ungine/VertexBuffer.h>
          #include <Ungine/VertexDeclaration.h>
          #include <Ungine/Physics/Geom.h>
          #include <Ungine/Physics/PhysObject.h>
          #include <Ungine/Physics/Simulation.h>
          #include <cstring>
          #include <exception>
          #include <iostream>
          #include <vector>
          #include <GLEW/glew.h>
          #include <Newton/Newton.h>
          
          std::vector<Ungine::Vector3> points;
          
          void callback(void* userData, int vertexCount, const float* FaceArray, int faceId)
          {
          	for (int i = 0; i < vertexCount; i++)
          	{
          		points.push_back(Ungine::Vector3(FaceArray[i*3 + 0], FaceArray[i*3 + 1], FaceArray[i*3 + 2]));
          	}
          }
          
          int main()
          {
          	Ungine::SceneNode node, node2, node3;
          	node.SetPosition(0.f, 0.f, -50.f);
          	node.SetScale(1.f);
          
          	node2.SetParent(node);
          	node2.SetPosition(20.f, 14.f, 0.f);
          	node2.SetOrigin(Ungine::Vector3(0.f, -14.f, 0.f));
          
          	node3.SetParent(node);
          	node3.SetPosition(-20.f, 14.f, 0.f);
          	node3.SetOrigin(Ungine::Vector3(0.f, -14.f, 0.f));
          
          	Ungine::CoreInit core;
          	Ungine::Mesh mesh;
          	if (mesh.LoadFromFile("models/drfreak.md2"))
          		std::cout << mesh.GetVertexCount() << std::endl;
          	else
          	{
          		std::cout << "Unable to load mesh" << std::endl;
          		return 0;
          	}
          
          	Ungine::Matrix4 scale;
          	//scale.SetScale(Ungine::Vector3(0.25f, 0.25f, 0.25f));
          	//scale.SetScale(Ungine::Vector3(5.f, 5.f, 5.f));
          
          	mesh.ApplyMatrix(Ungine::Mesh::Vertices, scale);
          
          	if (core->MountModule(Ungine::Module_Graphics, "../module/Windows/x86/UngineGraphics.dll"))
          		std::cout << "Module mounted" << std::endl;
          	else
          	{
          		std::cout << "Unable to mount module" << std::endl;
          		return 0;
          	}
          
          	std::cout << std::boolalpha << "RTT : " << UngineRenderer->HasCapability(Ungine::RendererCap_RenderToTexture) << std::endl;
          	std::cout << UngineRenderer->GetMaxRenderTextureTargets() << std::endl;
          
          	Ungine::RenderWindow window(Ungine::VideoMode(800,600,32), "Hello", Ungine::Style::Default, Ungine::RenderTargetParameters(0, 24, 0));
          
          	Ungine::Simulation sim;
          	//sim.SetGravity(Ungine::Vector3(0.f, -600.f, 0.f));
          
          	Ungine::Matrix4 projection, rotation;
          
          	Ungine::ConvexGeom geom(&sim, &mesh);
          	NewtonCollisionForEachPolygonDo(geom.m_collision, Ungine::Matrix4::Identity, callback, NULL);
          
          	std::cout << points.size() << std::endl;
          
          	Ungine::VertexDeclaration declaration(false, points.size());
          	declaration.AddElement(Ungine::VertexElementUsage_Position, Ungine::VertexElementType_Float3);
          
          	Ungine::Mesh debugMesh;
          	debugMesh.Create(declaration, points.size());
          	debugMesh.SetVertices(&points[0], points.size());
          	Ungine::SubMesh* subMesh = debugMesh.AddSubMesh();
          	subMesh->InitializeIndices(points.size());
          	subMesh->SetPrimitiveType(Ungine::PrimitiveType_LineList);
          	subMesh->SetSubMaterial("default");
          
          	Ungine::Material debugMaterial;
          	Ungine::SubMaterial* subMaterial = debugMaterial.AddSubMaterial("default");
          	subMaterial->SetDiffuseColor(Ungine::Color::Green);
          
          	Ungine::Model model(mesh);
          
          	Ungine::Model debugModel(debugMesh, debugMaterial);
          
          	Ungine::Matrix4 transformation;
          	transformation.SetTranslation(Ungine::Vector3(0.f, 0.f, -50.f));
          
          	Ungine::PhysObject obj(&sim, &geom);
          	obj.SetPosition(Ungine::Vector3(30.f, 0.f, -50.f));
          	obj.SetRotation(Ungine::Angle(0,180,0));
          	obj.SetMass(75);
          
          	Ungine::PhysObject obj2(&sim, &geom);
          	obj2.SetPosition(Ungine::Vector3(-30.f, 0.f, -50.f));
          	obj2.SetRotation(Ungine::Angle(0,180,0));
          	obj2.SetMass(75);
          
          	Ungine::Clock clock, clock2;
          	unsigned int fps = 0;
          	const Ungine::Input& input = window.GetInput();
          	bool debug = false;
          	while (window.IsOpened())
          	{
          		Ungine::Event event;
          		while (window.PeekEvent(event))
          		{
          			switch (event.Type)
          			{
          				case Ungine::Event::Closed:
          					window.Close();
          					break;
          
          				case Ungine::Event::Resized:
          					glViewport(0, 0, window.GetWidth(), window.GetHeight());
          					break;
          
          				case Ungine::Event::KeyPressed:
          					if (event.Key.Code == Ungine::Key::F1)
          					{
          						model.SetRenderingTechnique(Ungine::RenderingTechnique_ImmediateMode);
          					}
          					else if (event.Key.Code == Ungine::Key::F2)
          					{
          						model.SetRenderingTechnique(Ungine::RenderingTechnique_VBO);
          					}
          					else if (event.Key.Code == Ungine::Key::F3)
          						debug = true;
          					else if (event.Key.Code == Ungine::Key::F4)
          						debug = false;
          					else if (event.Key.Code == Ungine::Key::F5)
          					{
          						Ungine::Material::Reload(mesh.GetDefaultMaterial());
          					}
          
          					break;
          
          				default:
          					break;
          			}
          		}
          
          		if (input.IsKeyDown(Ungine::Key::Z))
          			obj.AddForce(Ungine::Vector3(0, 10000, 0));
          
          		if (input.IsKeyDown(Ungine::Key::S))
          			obj.AddForce(Ungine::Vector3(0, -10000, 0));
          
          		if (input.IsKeyDown(Ungine::Key::Q))
          			obj.AddForce(Ungine::Vector3(-10000, 0, 0));
          
          		if (input.IsKeyDown(Ungine::Key::D))
          			obj.AddForce(Ungine::Vector3(10000, 0, 0));
          
          		if (input.IsKeyDown(Ungine::Key::R))
          			obj.AddForce(Ungine::Vector3(0, 0, -10000));
          
          		if (input.IsKeyDown(Ungine::Key::F))
          			obj.AddForce(Ungine::Vector3(0, 0, 10000));
          
          
          		if (input.IsKeyDown(Ungine::Key::Up))
          			obj2.AddForce(Ungine::Vector3(0, 10000, 0));
          
          		if (input.IsKeyDown(Ungine::Key::Down))
          			obj2.AddForce(Ungine::Vector3(0, -10000, 0));
          
          		if (input.IsKeyDown(Ungine::Key::Left))
          			obj2.AddForce(Ungine::Vector3(-10000, 0, 0));
          
          		if (input.IsKeyDown(Ungine::Key::Right))
          			obj2.AddForce(Ungine::Vector3(10000, 0, 0));
          
          		if (input.IsKeyDown(Ungine::Key::PageUp))
          			obj2.AddForce(Ungine::Vector3(0, 0, -10000));
          
          		if (input.IsKeyDown(Ungine::Key::PageDown))
          			obj2.AddForce(Ungine::Vector3(0, 0, 10000));
          
          		sim.Update(window.GetFrameTime());
          
          		projection.SetPerspectiveFOV(Ungine::Degree(90), static_cast<float>(window.GetWidth())/static_cast<float>(window.GetHeight()), 1, 500);
          
          		window.Activate();
          		UngineRenderer->Clear();
          
          		UngineRenderer->Enable(Ungine::RendererParameter_FaceCulling, true);
          		UngineRenderer->SetFaceCulling(Ungine::FaceCulling_Front);
          
          		UngineRenderer->SetMatrix(Ungine::MatrixType_Projection, projection);
          
          		node.Rotate(Ungine::Angle(0.f, 50.f*window.GetFrameTime(), 0.f));
          		node2.Rotate(Ungine::Angle(-300.f*window.GetFrameTime(), 0.f, 0.f));
          		node3.Rotate(Ungine::Angle(-300.f*window.GetFrameTime(), 0.f, 0.f));
          
          		UngineRenderer->SetMatrix(Ungine::MatrixType_Transformation, node.GetMatrix());
          		model.Draw();
          
          		UngineRenderer->SetMatrix(Ungine::MatrixType_Transformation, node2.GetMatrix()*node.GetMatrix());
          		model.Draw();
          
          		UngineRenderer->SetMatrix(Ungine::MatrixType_Transformation, node3.GetMatrix()*node.GetMatrix());
          		model.Draw();
          
          		if (debug)
          		{
          			UngineRenderer->SetMatrix(Ungine::MatrixType_Transformation, obj.GetMatrix());
          			debugModel.Draw();
          
          			UngineRenderer->SetMatrix(Ungine::MatrixType_Transformation, obj2.GetMatrix());
          			debugModel.Draw();
          		}
          
          		window.Display();
          		fps++;
          
          		if (clock.GetElapsedTime() > 1.f)
          		{
          			std::cout << "\r" << window.GetFrameTime() << "s (" << fps << " FPS)   ";
          			fps = 0;
          			clock.Reset();
          		}
          	}
          
          	return 0;
          }
          


          (F1 et F2 permettent de switcher entre les VA et les VBO côté OpenGL, mais avec des modèles aussi peu complexes, vous n'y verrez pas la différence normalement).

          Sinon oui, cette démo n'a pas de synchronisation verticale, j'ai corrigé ce bug de l'Ungine qui empêchait de pouvoir le définir :)
          • Partager sur Facebook
          • Partager sur Twitter

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

            23 mars 2011 à 23:36:43

            Moi ça a marché nickel les deux premières fois et la troisième ça m'indique UngineTest.exe à cessé de fonctionner. Le log me dit :

            23/03/2011 23:34:14 - Ungine Core initialized (0.2.768)
            23/03/2011 23:34:14 - MD2Loader: loading drfreak.md2...

            Donc ça doit venir du loader ou du modèle. Connaissant mes déboires avec le modèle, ça doit venir de là probablement. Je compilerais le code demain pour voir si ça change quelque chose.
            • Partager sur Facebook
            • Partager sur Twitter
              23 mars 2011 à 23:37:49

              Citation : OveRdrivR

              Je compilerais le code demain pour voir si ça change quelque chose.



              Ce qui risque d'être un peu difficile sans les headers et la librairie d'inclusion :D
              • Partager sur Facebook
              • Partager sur Twitter

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

                23 mars 2011 à 23:40:07

                Pourquoi c'est une autre version que la révision 7 ?
                • Partager sur Facebook
                • Partager sur Twitter
                  23 mars 2011 à 23:41:05

                  Oui, les SceneNode ne sont pas dans la révision 7, je travaille sur la révision 8 qui apportera les SceneNode et le SceneManager ;)

                  Edit : De plus, j'ai pas mis les librairies physiques sur le SVN :-°

                  Donc sauf si tu te fais un code à toi, en utilisant les exemples fournis, tu ne pourras pas compiler :D
                  • Partager sur Facebook
                  • Partager sur Twitter

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

                    23 mars 2011 à 23:43:05

                    Okay ben sinon je tricherai "à l'ancienne" en remplaçant le mesh par un de mon propre cru.
                    • Partager sur Facebook
                    • Partager sur Twitter
                      24 mars 2011 à 8:54:37

                      Chez moi aussi ça a planté la première fois, mais il m'a suffit de relancer et ça marche.
                      • Partager sur Facebook
                      • Partager sur Twitter

                      "J'aimerai faire un jeu, mais pas un gros jeu hein. Un petit truc simple du style MMO."

                        24 mars 2011 à 11:00:57

                        Non moi ça marche plus du tout, même après redémarrage du pc.
                        • Partager sur Facebook
                        • Partager sur Twitter
                          24 mars 2011 à 15:16:07

                          J'espère que ce bug bien embêtant vient seulement du code crade du test, est-ce que les exemples posent ce problème?

                          En sachant que je viens de les mettre à jour avec le dernier build du moteur, si ceux qui ont des problèmes avec la "démo" pouvaient tester l'exemple 11, ça m'arrangerait ;)
                          • Partager sur Facebook
                          • Partager sur Twitter

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

                            24 mars 2011 à 16:30:28

                            Non les exemples marchaient nickel.
                            • Partager sur Facebook
                            • Partager sur Twitter
                              27 avril 2011 à 11:39:58

                              Un mot... impressionnant!
                              J'ai voulu apporter ma modeste contribution en effectuant les tests de démo, bien que sur un pc portable j'ai comme l'impression d'avoir un frame rate anormal :-° .

                              Démo technique de l'Ungine #1 :
                              Processeur : ADM Turion X2 Mobile RM-74 2.2 GHz
                              Système d'exploitation : windows vista ed. familiale 32 bits
                              RAM : 4 Go
                              FPS : 85-145


                              Combien de vertices comporte ton modèle?

                              Démo technique de l'Ungine #2 : Résultats du benchmark
                              Carte graphique : ATI Mobility Radeon HD 4570 
                              Module graphique : Ungine Renderer Module (0.0.434 - OpenGL 2.1.9120)
                              
                              Test n°1 - Modèles - Score : 33520
                              Test n°2 - Shaders - Score : 9867
                              Test n°3 - Textures - Score : 6318
                              Test n°4 - Masques (Stencil) - Score : 12662
                              
                              Score global : 62367
                              FPS : 650-700


                              Autrement le frame rate tourne autour de 700 FPS pour les autres démos et pour les exemples (logo, render vide... :p ) dans les 1200-1400 FPS

                              • Partager sur Facebook
                              • Partager sur Twitter
                                27 avril 2011 à 14:44:58

                                Il me semble que Lynix m'avait dit que le modèle a 1,500,000, mais à confirmer.
                                • Partager sur Facebook
                                • Partager sur Twitter
                                  27 avril 2011 à 17:07:43

                                  1 506 068 vertices si on veut être précis :)

                                  (Et 502 024 triangles)
                                  • Partager sur Facebook
                                  • Partager sur Twitter

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

                                    27 avril 2011 à 18:46:59

                                    Euh... tu as 3 vertex unique pour chaque triangle ? (maintenant que j'y pense dans la premiere demo tu n'avais pas de VBO mais simplement des displat lists ?)
                                    Car normalement, sur des models comme ca, tu as le nombre a peu pres egal de nombre de vertex et du nombre de triangle.

                                    Quand je l'ouvre sur un viewer (assimp), cela m'indique pour le model de la premiere demo technique :
                                    • Triangles : 502024
                                    • Vertex : 435321

                                    Sinon, pour les tests, je te conseil d'autre models comme Sponza de CryTek ( http://www.crytek.com/cryengine/cryengine3/downloads ). Pourquoi ? Car, ici tu sera plus proche d'une vrai scene de jeux, c'est a dire :
                                    • Plusieurs entitees sur la scene. (Bon ok, pour cela il faut un debut de graphe de scene)
                                    • Plusieurs textures (Diffuse, specular et normal mapping) de taille concequante. (avoir mit en place les shaders pour specular et normal mapping)
                                    • Plusieurs type de materiaux differents dans la meme scene
                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      27 avril 2011 à 20:06:46

                                      La première démo fonctionnait avec les quatre méthodes d'affichages selon les disponibilités, par ordre de priorité : VBO, Display List, VA et IM

                                      Maintenant l'Ungine ne fonctionne qu'avec les VBOs et les VA.

                                      Pour le modèle, le format obj est très spécial, et rien n'oblige les vertices à se suivre dans un triangle strip.

                                      Il faudrait que j'optimise le loader obj, one more time
                                      • Partager sur Facebook
                                      • Partager sur Twitter

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

                                        27 avril 2011 à 20:12:48

                                        As-tu une démo à nous proposer ?
                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                          27 avril 2011 à 20:14:49

                                          J'ai très peu touché au moteur ce mois-ci pour des raisons personnelles, mais j'ai recommencé à m'y mettre récemment.

                                          J'essaye d'implanter les caméras pour la démo technique à venir
                                          • Partager sur Facebook
                                          • Partager sur Twitter

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

                                            7 mai 2011 à 21:01:42

                                            Alors voila, je recommence à travailler petit à petit sur l'Ungine, et je me demande si je ne devrais pas arrêter de supporter le vieux matériel (Celui qui ne supporte pas les shaders), ce serait plus agréable pour moi, l'architecture et je pense que ça ne poserait de problème à personne :)
                                            • Partager sur Facebook
                                            • Partager sur Twitter

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

                                              7 mai 2011 à 22:49:25

                                              Les shaders ont ete introduit en 2004 (cf Wikipedia) avec OpenGL 2.0. De toute façon de nos jours ou il n'y a pas de shaders ?

                                              après, la question est : Est ce qu'il faut aller plus loin ? OpenGL 3.X+ ? OpenGL 4.X+ ?

                                              Personnellement j'ai fait le choix OpenGL 3.X+ car :
                                              • Aucune de mes CG supportent OpenGL 4.X+
                                              • Toutes mes cartes supportent au moins OpenGL 3.1+
                                              • Le système de dépréciation a ete introduit dans OpenGL 3.0 et change radicalement la facon de concevoir une application OpenGL. En effet, plus de gestion de matrice (glPushMatrix, ... etc), plus de dessin directe, bref tout ce qui est coder en dure dans OpenGL => Poubelle.


                                              Donc l'arguement d'OpenGL 3.X+ est : Est ce que tu es pret a coder en moteur de rendu qui sera complément obselete quand tu déciderais de passer a des versions supérieurs OpenGL ?

                                              C'est a toi de décider.
                                              • Partager sur Facebook
                                              • Partager sur Twitter
                                              Anonyme
                                                7 mai 2011 à 23:27:07

                                                Et ceux qui ne sont pas à OpenGL 3.X et plus si affinités ?
                                                • Partager sur Facebook
                                                • Partager sur Twitter
                                                  8 mai 2011 à 0:13:16

                                                  Il s’achètent une nouvelle carte graphique :D

                                                  Plus sérieusement, c'est un choix. C'est comme toutes les nouvelles fonctionnalités qui sont apporter par le matériel : que faire ? Utiliser les nouvelles possibilités ? Faire quand même un support des vieux matériels ?

                                                  D'autre part, tu peux utiliser les nouvelles fonctionnalités introduite dans OpenGL 3.x avec un contexte inférieur, tout cela est possible avec les extensions. Cependant, tu t'expose au faite que ces extensions sont optionnelles et que tu va devoir vérifier si elles sont supporter avant les utiliser dans ton code. Ce qui se traduit par plus de complexité (niveau code) et la encore le choix cornélien : Que faire si elle ne sont pas supportée ?

                                                  Je pense que sur des projets amateurs le choix le plus raisonnable est de couper un trop gros support des vieux matériels (j'entends par la minimum du OpenGL 2.1). Ou autre solution, utiliser des énormes projets comme Ogre qui vont de mâcher le travail de support ( ce qui a du bon ! :) ). Mais je ne pense pas que c'est l'orientation que Lynix veut prendre dans son projet.
                                                  • Partager sur Facebook
                                                  • Partager sur Twitter
                                                    8 mai 2011 à 9:14:23

                                                    Ne pas supporter OpenGl 2.X serait un peu dommage, car je pense qu'il y a encore pas mal de monde qui n'a pas de CG compatible 3.X (moi y compris). Ne pas supporter les CG qui ne supportent pas les shaders, entièrement d'accord par contre, car de nos jours, sans shaders il n'y a pas beaucoup de jeux auxquels tu peux joueur, et je pense que la quasi-totalité des joueurs ont une CG "shader compatible".
                                                    • Partager sur Facebook
                                                    • Partager sur Twitter
                                                    Anonyme
                                                      8 mai 2011 à 11:20:20

                                                      Surtout que tout le monde ne s'est pas acheté un nouvel ordi depuis août 2008... Donc je suis d'avis de supporter tous (ou du moins, une grande partie) les matériels sortis depuis 5 ans, c'est-à-dire 2006.
                                                      • Partager sur Facebook
                                                      • Partager sur Twitter
                                                        8 mai 2011 à 12:44:00

                                                        Soyons réaliste, sont jeux ne sortira pas maintenant et si il choisie GL 3.1 les joueur aurons le temps de changer de CG. Dans le milieu Pro, les développeur savent que leur leur jeux doit tourner au minimum sur un config d'un ans voire un ans et demi au moment de sa sortie.

                                                        Sinon sa demande pas mal de boulot pour qu'un jeux tourne sur tous les PC, par exemple lors des démo elle planter chez quelque personne, donc en plus de corriger tout les bogs il devrait adapter au vielle config ? sa demande un certain talent et une grande patience
                                                        • Partager sur Facebook
                                                        • Partager sur Twitter
                                                        Analyste programmeur - MilleniumStudio
                                                        Anonyme
                                                          8 mai 2011 à 14:47:03

                                                          Enfin, tout dépend de la vision de Lynix sur le sujet, faire un moteur pour les joueurs qui ont les moyens d'avoir une bonne config ou faire un moteur pour la majorité des joueurs, qu'ils soient joueurs accro ou occasionnels, c'est-à-dire qu'ils aient changé leur CG il y a pas longtemps où qu'ils aient acheté un ordinateur tout fait et qu'ils n'aient pas changé leur matos... Comme une majorité des joueurs !
                                                          • Partager sur Facebook
                                                          • Partager sur Twitter
                                                            9 mai 2011 à 19:27:14

                                                            Projet tres interressant.
                                                            Tu dis avoir fais une classe String plus rapide que celle de base, peut on la voir ? Comment se fasse t il qu'elle soit plus rapide ? (je trouve sa troublant, de plus je ne connais les algos employés sur le string de base)
                                                            • Partager sur Facebook
                                                            • Partager sur Twitter
                                                              9 mai 2011 à 19:33:17

                                                              Les gars vous enterrez un peu vite OpenGl 2.X je trouve :p
                                                              • 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