IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Moteurs 3D Discussion :

Moteur 3D - DirectX


Sujet :

Moteurs 3D

  1. #1
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Août 2007
    Messages
    22
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2007
    Messages : 22
    Points : 11
    Points
    11
    Par défaut Moteur 3D - DirectX
    Bonjour,

    Je suis très intéressé par le développement des jeux en général et j'envisage moi même de développer un moteur 3d(directx) sans aucune prétention.

    J'ai bien évidemment fait de nombreuses recherches et bien étudié les documentations de différents moteurs existant pour voir la structure générale et j'ai également bien étudié la documentation de directX.

    Cependant avant de me lancer j'ai quelques question:

    On remarque que dans tout les moteurs directx, les fonctions et classes commune telle que les vecteurs(2d, 3d, ..), matrice, mesh , texture etc.. etc.. sont "réécrite"
    Et aucune n'utilise par exemple la bibliothèque D3DX pour toute ces opérations.

    Je voulais savoir pourquoi, car pour moi en étudiant la doc. D3DX cette bibliothèque me parait bien complète et facilité grandement le développement d'un moteur 3d.

    Les jeux commerciaux utilisent ils cette bibliothèque ?

  2. #2
    Membre actif Avatar de ShadowTzu
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Juin 2005
    Messages
    243
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haute Saône (Franche Comté)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo

    Informations forums :
    Inscription : Juin 2005
    Messages : 243
    Points : 296
    Points
    296
    Par défaut
    Bonjour,

    Dans mon moteur les structures sont également "ré-écrite" en apparence pour l'utilisateur, mais en interne pour la plupart c'est bien les fonctions de directx que j'utilise.
    Je fais comme ça pour facilité l'emploi du moteur, pour pas que l'utilisateur est à ajouter les dll de directx à son projet. ça permet aussi d'ajouter en plus ces propres fonction. et cela sert également à avoir un contrôle total sur son moteur.

    Aprés pour les moteurs OpenGL / DirectX cela tombe sous le sens qu'il n'est pas possible d'utiliser les fonctions de directX pour OpenGL, donc obligé de faire ces propre fonctions et les utiliser pour les deux api.

  3. #3
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Août 2007
    Messages
    22
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2007
    Messages : 22
    Points : 11
    Points
    11
    Par défaut
    J'ai une autre question qui me vient à l'esprit.

    Aujourd'hui on peut considérer qu'un moteur 3d tout se passe au niveau des shaders.
    Les techniques d'ombrage, de relief(bumpmapping etc...), d'éclairage etc..
    sont tous basé sur des principes mathématique commun.
    Je voulais donc savoir à quelle niveau un moteur 3d se distingue d'un autre.

    Si je poursuis dans mon raisonnement qui est peut être faux comme quoi dans un moteur3d tout se passe au niveau des shaders, comment un moteur3d peut il se protéger des concurrents, en effet aujourd'hui la majorité des shaders d'un jeu "pro" sont livré non compilé afin je suppose d'avoir une compilation spécifique en fonction du matériel du client.

    La où je veux en venir c'est est ce que je peux tout simplement dans mon moteur utiliser ces shaders pour avoir des effets(rendu) "nextgen".

  4. #4
    Expert éminent sénior
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 360
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 360
    Points : 20 377
    Points
    20 377
    Par défaut
    Citation Envoyé par wokky Voir le message

    On remarque que dans tout les moteurs directx, les fonctions et classes commune telle que les vecteurs(2d, 3d, ..), matrice, mesh , texture etc.. etc.. sont "réécrite"
    Et aucune n'utilise par exemple la bibliothèque D3DX pour toute ces opérations.

    Je voulais savoir pourquoi, car pour moi en étudiant la doc. D3DX cette bibliothèque me parait bien complète et facilité grandement le développement d'un moteur 3d.

    Les jeux commerciaux utilisent ils cette bibliothèque ?

    Oui c'est vrai que D3DX est peu utilisée.
    Concernant les jeux commerciaux ils n'utilisent pas cette extension parce que pour les objtes 3s tu ne peux charger qu'un fichier .X
    Les jeux commerciaux utilisent leurs propres formats de fichiers exportés et obtenus par des plugins pour 3ds Max..Après ils allouent dans leurs moteurs des Vertex Buffers ou mieux passent par de la programmation GPU ( maintenant avec DX11)
    Mais je suis persuadé que lorsque tu charges un fichier .X dans un D3DXmesh , Direct X alloue des quad vertices et un vertex buffer exactement comme si tu faisais cela par toi-même...
    Par exemple D3DXSprite est considérée comme lente pour afficher de la 2d mais j'en suis assez satisfait.
    Le noyau de moteur 3d que je commence à faire utilise D3DX c'est parfait pour commencer

  5. #5
    Membre expérimenté

    Profil pro
    Programmeur
    Inscrit en
    Août 2002
    Messages
    1 091
    Détails du profil
    Informations personnelles :
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Programmeur

    Informations forums :
    Inscription : Août 2002
    Messages : 1 091
    Points : 1 679
    Points
    1 679
    Par défaut
    Citation Envoyé par wokky Voir le message
    On remarque que dans tout les moteurs directx, les fonctions et classes commune telle que les vecteurs(2d, 3d, ..), matrice, mesh , texture etc.. etc.. sont "réécrite"
    Et aucune n'utilise par exemple la bibliothèque D3DX pour toute ces opérations.

    Je voulais savoir pourquoi, car pour moi en étudiant la doc. D3DX cette bibliothèque me parait bien complète et facilité grandement le développement d'un moteur 3d.
    Je ne sais pas exactement quel panel de moteurs tu as étudié pour dire cela mais il y a probablement plein de raisons :
    - les classes vecteurs/matrices etc sont rapides à écrires et peuvent respecter le "standard" de code du moteur. Bref c'est une toute petite goutte d'eau dans l'écriture d'un moteur.
    - les moteurs sont parfois cross plateforme. Donc dans ces situations D3DX n'est pas d'une grande aide.
    - Contrôle, ajout d'extensions maisons, facilité de débogage, etc.

    Donc pour faire son projet dans son coin, D3DX peut probablement accélérer le développement mais pour des projets plus gros ou cross plateformes ça n'est plus un si gros gain que cela.

    LeGreg

    Mon site web | Mon blog | Mes photos | Groupe USA
    > BONJOUR, JE SUIS NOUVEAU SUR CE FORUM
    > presse la touche caps lock, stp
    > OH.. MERCI C EST BEAUCOUP PLUS FACILE COMME CA

  6. #6
    Membre expérimenté

    Profil pro
    Programmeur
    Inscrit en
    Août 2002
    Messages
    1 091
    Détails du profil
    Informations personnelles :
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Programmeur

    Informations forums :
    Inscription : Août 2002
    Messages : 1 091
    Points : 1 679
    Points
    1 679
    Par défaut
    Citation Envoyé par wokky Voir le message
    La où je veux en venir c'est est ce que je peux tout simplement dans mon moteur utiliser ces shaders pour avoir des effets(rendu) "nextgen".
    Une technique de rendu ce n'est pas juste du code et un moteur c'est plus que des shaders. Ceci dit rien ne t'empêche en effet de réutiliser des techniques ou de faire du reverse engineering (pas de plagiat par contre si tu as accès au code source, la ligne de démarcation peut-être fine) sur les jeux existants. Dans une certaine mesure cela peut être encouragé (dans la vue d'apprendre). Le reverse engineering est aussi présent dans d'autres domaines (protocoles réseaux, game design etc..)

    Il arrive meme fréquemment que des développeurs de jeux expliquent leurs techniques en détail lors de conférences ou dans des bouquins ou des papiers disponibles sur leur site internet. Cela ne rend pas forcément le boulot du concepteur de jeu "facile" (mais ça peut éviter certains tatonnements).

    Mon site web | Mon blog | Mes photos | Groupe USA
    > BONJOUR, JE SUIS NOUVEAU SUR CE FORUM
    > presse la touche caps lock, stp
    > OH.. MERCI C EST BEAUCOUP PLUS FACILE COMME CA

  7. #7
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Août 2007
    Messages
    22
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2007
    Messages : 22
    Points : 11
    Points
    11
    Par défaut
    Merci pour tes réponses.

    J'ai une dernière question en terme d'optimisation.
    J'ai lu ou cru comprendre que les classes de "stockage" de la librairie standard (vector, set, list , etc...) n'étaient pas très optimisé pour un moteur, ca me parait gros je voudrais en avoir le cœur net.

  8. #8
    Membre expérimenté

    Profil pro
    Programmeur
    Inscrit en
    Août 2002
    Messages
    1 091
    Détails du profil
    Informations personnelles :
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Programmeur

    Informations forums :
    Inscription : Août 2002
    Messages : 1 091
    Points : 1 679
    Points
    1 679
    Par défaut
    Citation Envoyé par wokky Voir le message
    J'ai une dernière question en terme d'optimisation.
    J'ai lu ou cru comprendre que les classes de "stockage" de la librairie standard (vector, set, list , etc...) n'étaient pas très optimisé pour un moteur, ca me parait gros je voudrais en avoir le cœur net.
    ça va entrainer des discussions de comptoir sans fin (ou un appel au troll).

    Mais la situation n'est pas forcément si tranchée. La STL a son utilité mais aussi ses défauts (difficile de l'utiliser en toute situation). Parfois il vaut mieux savoir ce que l'on fait pour avoir un résultat plus optimisé et parfois cela n'a pas d'intérêt. Bref réponse de normand : ça dépend.

    Mon site web | Mon blog | Mes photos | Groupe USA
    > BONJOUR, JE SUIS NOUVEAU SUR CE FORUM
    > presse la touche caps lock, stp
    > OH.. MERCI C EST BEAUCOUP PLUS FACILE COMME CA

  9. #9
    Membre éprouvé Avatar de oxyde356
    Homme Profil pro
    Ingénieur Recherche Imagerie
    Inscrit en
    Février 2006
    Messages
    797
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Recherche Imagerie

    Informations forums :
    Inscription : Février 2006
    Messages : 797
    Points : 1 087
    Points
    1 087
    Par défaut
    Ouai ça c'est de la grosse discution :p performance de la STL pour la gestion des tableaux, listes... Pour ma part je pense qu'ils sont conçus pour être rapide sauf qu'ils sont tellement pratique et que tellement de choses sont faites automatiquement, que l'on ne pense pas à les utiliser d'une façon optimiser comme on le ferait avec nos containers maison, en réservant de la mémoire à l'avance par exemple, ils disposent d'une méthode reserve mais on est tenté de pas l'utiliser parce qu'on a l'impression que ça ne sert à rien vu que le tableau s'adapte mais c'est couteux ! Quelqu'un se propose pour un benchmark comparatif ^^

  10. #10
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Août 2007
    Messages
    22
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2007
    Messages : 22
    Points : 11
    Points
    11
    Par défaut
    Je réfléchis actuellement sur le level design et je me pose cette simple question toujours en rapport avec la création des jeux dans le monde pro.

    Le level design est il toujours réalisé avec des outils de modélisation "maison"(Valve hammer editor, unreal editor etc...) ou avec des logiciels de modélisation existant tel que 3d studio max ?.

    En effet si la création d'un moteur de jeu implique obligatoirement d'implémenter des outils de modélisation pour le level design cela complique énormément la tâche. Je me vois mal refaire un logiciel de type 3d studio max.

    C'est pourquoi je voulais savoir si dans le monde professionnel ceci est une étape obligatoire ou une solution du type importation de la carte modélisé dans l'éditeur puis placement des entités, sons, lumières sans avoir d'outils de modélisation est utilisé ?

  11. #11
    Membre éprouvé Avatar de oxyde356
    Homme Profil pro
    Ingénieur Recherche Imagerie
    Inscrit en
    Février 2006
    Messages
    797
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Recherche Imagerie

    Informations forums :
    Inscription : Février 2006
    Messages : 797
    Points : 1 087
    Points
    1 087
    Par défaut
    Heureusement que non tu n'es pas obligé, mais ça dépend pour quoi !
    Par exemple si tu fais un jeu de stratégie, tu devrais au moins faire un programme pour éditer le terrain et placer le décor, c'est assez essentiel. Par contre les unités, bâtiments, animation tu les fais sous 3DS Max. L'idéal c'est de se faire un script ou un plugin pour adapter le logiciel à ses besoins et exporter dans son propre format.

  12. #12
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    15
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 15
    Points : 18
    Points
    18
    Par défaut
    Bonjour worky,

    Je tiens à participer à tout ce que je viens de lire parce que je ne suis pas sûr de bien suivre .

    Est ce que l'on ne parle que de moteur d'affichage ou de moteur de jeu ? parce que ce n'est aps la même chose. (je dis ça parce que j'ai vu parlé de LD aussi ^^)

    En ce qui concerne mon expérience dans le domaine, je peux te dire que j'ai travailler avec des moteurs de jeux maison qui utilisaient la stl ou des variantes maisons. Je ne suis pas en train de dire que c'est la solution, juste que l'on peut faire des choses qui marchent avec. Comme l'ont dit les autres utilisateurs, il y a des avantages et des inconvénients, à toi de t'adapter en fonction des problèmes que tu rencontres . Et puis les performances on commence à y penser quand il y en a vraiment besoin .

    En ce qui concerne la réécriture des structures basiques et communes, LeGreg l'a bien dit, celà permet d'avoir un contrôle total et ainsi de pouvoir les adapter facilement à nos besoins (cross platefrom etc etc...).

    En ce qui concerne ta question sur le LD, là aussi tout dépend des besoins du jeu. Il est parfois plus simple de développer un plugin sur un logiciel de 3D existant pour fabriquer ses scènes et les exporter pour son moteur de jeu (ça te permet d'économiser le temps de développement d'un tool avec une ergonomie à penser et des outils en plus à déveloper). Mais parfois, il est plus facile de créer son propre LevelEditor sur la base de son moteur de jeu pour avoir accès à toutes les fonctionnalités développées, notamment si le moteur de jeu inclus la possibilité de scripter.

    Alex

  13. #13
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Août 2007
    Messages
    22
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2007
    Messages : 22
    Points : 11
    Points
    11
    Par défaut
    Oui le titre de mon topic prête à confusion.
    En effet je parle maintenant de moteur de jeu exploitant un moteur 3d.

    Je suis conscient que pour réaliser un jeu un outil de LD doit être crée pour placer les entités, lumières, caméras, sons etc... spécifique au jeu.

    Cependant un tel outil doit il obligatoirement proposer des fonctionnalités de modeling pour la création d'un niveau(murs, sol, etc...) ?

    Je sais pas si c'est clair, mais en fait je souhaite par exemple pouvoir réaliser un niveau via un logiciel de modélisation(3dsmax, blender, ...) puis par la suite l'importer dans un logiciel de LD comprenant uniquement les éléments spécifique au jeu sans outils de modélisation.

    C'est une solution envisageable ?
    Si oui quelle sont ses avantages et inconvénients.

  14. #14
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    15
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 15
    Points : 18
    Points
    18
    Par défaut
    A oui bien sur . Les objets 3D que tu vas utiliser pour ton LD sont déjà modélisés à part la plus part du temps. Le logiciel / plugin que tu vas utiliser pour ton LD va par exemple te permettre de placer ces objets 3D pour faire ton niveau. Après, tout dépend des besoins de ton jeu. Mais le LD ne se résume généralement pas seulement à placer des objets 3D. Ca nécessite par exemple la mise en place de trigger pour déclencher certaines actions etc etc ...

  15. #15
    Membre expérimenté

    Profil pro
    Programmeur
    Inscrit en
    Août 2002
    Messages
    1 091
    Détails du profil
    Informations personnelles :
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Programmeur

    Informations forums :
    Inscription : Août 2002
    Messages : 1 091
    Points : 1 679
    Points
    1 679
    Par défaut
    Citation Envoyé par wokky Voir le message
    Oui le titre de mon topic prête à confusion.
    En effet je parle maintenant de moteur de jeu exploitant un moteur 3d.

    Je suis conscient que pour réaliser un jeu un outil de LD doit être crée pour placer les entités, lumières, caméras, sons etc... spécifique au jeu.

    Cependant un tel outil doit il obligatoirement proposer des fonctionnalités de modeling pour la création d'un niveau(murs, sol, etc...) ?
    Tu devrais essayer les outils existants :
    - valve et son éditeur Hammer.
    - epic et son éditeur UnrealEd.
    - crytek et son éditeur SandBox.
    - id et son éditeur radiant
    - etc

    Ils sont tous plus ou moins gratuits (au pire le prix d'un jeu plus ou moins ancien, voire en essai gratuit ou totalement gratuit).

    Ce sont tous des "éditeurs" de moteurs commerciaux et cela te donnera une idée de ce qui est fait dans l'industrie. Bien entendu si tu as un projet amateur, il faut te dire que tu ne pourras implémenter qu'une toute petite partie des features de ces éditeurs et donc essayer de faire des choses plus simples pour commencer.

    LeGreg

    Mon site web | Mon blog | Mes photos | Groupe USA
    > BONJOUR, JE SUIS NOUVEAU SUR CE FORUM
    > presse la touche caps lock, stp
    > OH.. MERCI C EST BEAUCOUP PLUS FACILE COMME CA

  16. #16
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Août 2007
    Messages
    22
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2007
    Messages : 22
    Points : 11
    Points
    11
    Par défaut
    Oui je connaissais déjà Hammer Editor, j'ai voulu tester quelque chose de plus récent telle que UnreadEd 3 et effectivement c'est un outil complet avec des fonctionnalités de modélisation.

    Programmer un tel outil n'est pas du tout envisageable seul et de mon point de vue cela reste plus complexe que la réalisation d'un moteur3d en lui même.
    Avez vous des exemples de projet amateur avec des éditeurs similaire ?

  17. #17
    Membre éprouvé Avatar de oxyde356
    Homme Profil pro
    Ingénieur Recherche Imagerie
    Inscrit en
    Février 2006
    Messages
    797
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Recherche Imagerie

    Informations forums :
    Inscription : Février 2006
    Messages : 797
    Points : 1 087
    Points
    1 087
    Par défaut
    Bah non c'est suicidaire de faire ça pour un projet amateur :p

Discussions similaires

  1. Réponses: 24
    Dernier message: 02/11/2009, 19h55
  2. Réponses: 0
    Dernier message: 24/10/2009, 13h17
  3. Moteur physique en Delphi utilisant DirectX
    Par epita2013 dans le forum Physique
    Réponses: 4
    Dernier message: 23/02/2009, 15h23
  4. Moteur 3D ou DirectX
    Par koushkov dans le forum Moteurs 3D
    Réponses: 6
    Dernier message: 09/07/2006, 13h39
  5. [3D]Moteur de raytracing sans les bibliothèques type DirectX, que puis-je utiliser?
    Par cladsam dans le forum Développement 2D, 3D et Jeux
    Réponses: 8
    Dernier message: 21/04/2006, 17h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo