Journal Première release du framework et moteur graphique 3dNovac

Posté par . Licence CC by-sa
21
15
juil.
2012

Bonjour à tous,

J'ai le plaisir de vous présenter enfin 3dNovac.
Celui-ci est un framework C++ open source et multiplateforme, ayant pour but premier de fournir les outils nécessaires au développement de Jeux vidéo tout en restant portable et léger.

La première release du framework vient d’être publiée en version 0.1, de nombreuses choses restent à faire mais les bases sont là.
La release fournit les binaires d'un Demo Viewer pour Linux et Windows, je vous encourage à la tester et me faire des retours… positifs ou non :P

3dNovacLogo

Fonctionnalités

Le framework est totalement opérationnel sur Linux et Windows.
Il est composé de différentes librairies C++:

  • Nc-Core: intégrant de nombreuses abstractions systèmes et autre. Ne dépendant d’aucune bibliothèque externe.
  • Nc-Graphics: intégrant un moteur graphique utilisant OpenGL 3.
  • Nc-GUI: Surcouche à Nc-Graphics intégrant un moteur de GUI.
  • Nc-Audio: intégrant un moteur audio pour le moment utilisant sfml-audio.
  • Nc-Contrib: intégrant quelques autres fonctionnalités n'ayant pas leur place dans les autres packages.

Vous pourrez trouver une liste complète des fonctionnalités de ces librairies dans le changelog de la release.

Remise en contexte

Étant étudiant, j'ai commencé à développer le moteur graphique deux ans auparavant dans un souci d'apprentissage personnel.
Je suis pour le moment seul à travailler sur le projet, mais les contributeurs sont les bienvenus ;)
Maintenant mon objectif serait de proposer un véritable framework permettant de créer un jeu facilement et offrant des possibilités sans limite aux développeurs expérimentés.
De mon côté je compte bien évidemment concevoir mes propres jeux avec le framework.

Futures versions

Pour la prochaine version j'ai l'intention de recoder complètement le moteur audio en utilisant OpenAL. Une liste complète des fonctionnalités espérées est disponible dans la section "Development in progress" du site.
Cependant de nombreuses milestones viendront compléter la release.

Documentation

Je tiens à fournir une documentation expliquant dans les détails le framework et ses mécanismes. Aussi bien pour le développeur souhaitant apprendre comment utiliser au mieux 3dNovac, mais aussi et surtout pour lui permettre de comprendre son fonctionnement.
C'est pourquoi j'ai commencé la rédaction du "Book" disponible avec la release. Notamment un rapide coup d’œil sur le Diagramme UML vous permettra déjà d'avoir une bonne visibilité.
La documentation est encore loin d’être parfaite, mais je compte bien faire de gros efforts sur ce point.

Problèmes

Actuellement le moteur 3d ne fonctionnera pas si vous avez une version OpenGL inférieure à 3. Il vous faudra donc peut être mettre à jour vos drivers graphiques.
J'ai recensé un problème sur les cartes NVIDIA Quadro, celles-ci présenteraient un scintillement de l'image au niveau des framebuffers. Ainsi que les GPU d'Intel qui ne supporteraient qu'une version de GLSL 1.3 (A vérifier).
Je tenterais de corriger ces problèmes dans la prochaine milestone pour faire fonctionner le moteur sur un maximum de machines.
Si vous rencontrez des difficultés avec le Demo Viewer, n’hésitez pas à m'en faire part.

Liens

Site officiel - http://3dNovac.eu
Changelog - 3dNovacChangelog-0.1.txt
Diagramme UML en format svg - UML.svg - (Je vous conseille de télécharger l'image pour pouvoir la zoomer.)
Binaire du Demo Viewer pour Linux - 3dNovacDemoViewer-Linuxi686-0.1.zip
Binaire du Demo Viewer pour Windows - 3dNovacDemoViewer-Win32-0.1.zip

  • # Intel et openGL

    Posté par (page perso) . Évalué à 3.

    Ainsi que les GPU d'Intel qui ne supporteraient qu'une version de GLSL 1.3 (A vérifier).

    Ça dépend du modèle, les plus récent (hd2000 et hd3000) gèrent OpenGL 3 http://en.wikipedia.org/wiki/Comparison_of_Intel_graphics_processing_units . Par contre, il faut Mesa 8.0 (iirc) pour avoir OpenGL 3.

    « Rappelez-vous toujours que si la Gestapo avait les moyens de vous faire parler, les politiciens ont, eux, les moyens de vous faire taire. » Coluche

    • [^] # Re: Intel et openGL

      Posté par . Évalué à 1.

      Oui la carte qui a été test (je n'ai pas pu la tester personnellement donc je ne sais pas si les drivers ont été vraiment bien mis à jour) a une version OpenGL 3.0 mais le souci vient du compileur GLSL qui n'a qu'une version 1.30 (Intel Build 8.15.10.2405) et j'avais écrit mes shaders avec "#version 330 core".

      Pour pallier à ce souci de version, j'avais pensé à rajouter une étape de compilation/parsing pour éventuellement rajouter un contrôle des versions et pourquoi pas permettre l'écriture de différentes versions de shader.

      Pour ce qui est de Mesa, il me semblait justement avoir vu que la version GLSL ne dépassait pas 1.30. Mais je peux me tromper.

      Pour la Quadro c’est pareil, je n’en ai pas sous la main… donc ça me sera difficile a debugger.

  • # Captures d'écran / vidéo ?

    Posté par (page perso) . Évalué à 9.

    Ca a l'air sympa comme projet. Par contre, le site manque cruellement de captures d'écran ou de vidéos montrant un peu ce qu'on peut faire. On parle quand même d'un moteur graphique :-)

  • # SFML pour la 3D

    Posté par (page perso) . Évalué à 3.

    Après un bref tour du proprio, ça me fait penser furieusement à SFML pour la 3D. Est-ce un hasard, voulu ?
    N'est-ce pas une belle occasion pour mutualiser les efforts ?
    Sinon, beau projet, bon courage.

    Un jour libre ?

    • [^] # Re: SFML pour la 3D

      Posté par . Évalué à 2.

      Après un bref tour du proprio, ça me fait penser furieusement à SFML pour la 3D. Est-ce un hasard, voulu ?

      Salut, oui c'est vrai en y repensant ça ressemble beaucoup à la SFML.
      C'est pas vraiment voulu mais ça peut s'expliquer par le fait que j'avais déjà codé pas mal de choses avec (mais surtout pour me servir uniquement du module de fenêtrage pour faire de l'OpenGL derrière).
      Et puis dans l'ensemble j'aime vraiment bien la façon dont la SFML est codée… donc je sais pas, ça m’étonne peut être-pas temps que ça au final.
      Après je ne me suis pas uniquement inspiré de la SFML ;)

      N'est-ce pas une belle occasion pour mutualiser les efforts ?

      Hmm, c'est une bonne question, je ne saurais dire…
      Je ne verrai aucun problème à travailler sur la SFML ou une lib connexe, mais je pense que la SFML n'a pas vraiment pour vocation de proposer un moteur 3d.

      • [^] # Re: SFML pour la 3D

        Posté par (page perso) . Évalué à 2.

        Justement, dans cette optique de voir 3DNovac comme le penchant 3D de la SFML, ne serait-il pas plus logique de rester basé sur sfml-audio et d'y contribuer au lieu de re-développer à partir de openal?

        En tant que développeur de jeu ayant déjà utilisé SFML, le jour où l'envie me prend de développer un jeu 3D, je serais content de retrouver mes habitudes de SFML dans un framework 3D.

  • # Pour quoi faire ?

    Posté par (page perso) . Évalué à 4.

    Salut,

    je vais être rabat-joie mais pourquoi encore un projet de framework de jeu ? Pourquoi moi, développeur d'un jeu qui a du contenu et son propre moteur, je devrais m'intéresser à ce projet ? Je suppose que ça s'adresse aux projets de jeux qui vont démarrer dans le futur, et non aux jeux existants… J'ai donc une autre question : c'est quoi ta valeur ajoutée ?

    Il y a des milliers de "frameworks" de création de jeu. Très peu de gens s'en servent à part leur auteur. C'est très respectable que tu fasses cela pour t'amuser, mais est-ce que ton projet apporte quelque chose à la communauté ? À première vue je dirais que non.

    Désolé pour le feedback négatif, ce n'est rien de personnel, je suis juste assez agacé de voir qu'on est incapables dans le libre de produire des jeux corrects et qu'on préfère travailler chacun dans son coin pour un impact total nul.

    • [^] # Re: Pour quoi faire ?

      Posté par . Évalué à 9.

      Salut,
      je vais essayer de répondre aux questions points par points.

      pourquoi encore un projet de framework de jeu ?

      Comme je l’ai dit, au départ ce projet étais avant tout pour mon expérience personnel.
      Qu’y a-t-il de mal à vouloir apprendre ? J’ai toujours pensé que l’apprentissage ce faisait par la pratique…
      De plus je tient a préciser que le framework ne s’arrête pas uniquement aux jeux vidéo. Nc-Core a notamment été utilisé à plusieurs reprisent pour des projets perso et professionnel autre que graphique.

      Très peu de gens s'en servent à part leur auteur

      Oui c'est bien vrai, et je compte bien utiliser le framework pour mes prochains projets. Le premier avantage étant pour moi une connaissance parfaite de celui-ci.
      Je ne fais rien d’autre que partager mon travail en espérant peut être en faire profiter d’autres. Tu n’y vois peut-être pas l’intérêt là ou d’autres personnes en verront un.

      c'est quoi ta valeur ajoutée ?

      Plusieurs points semblent selon moi intéressant par rapport à d’autres framework :

      Générale :

      • Une séparation des différentes parties du moteur en namespaces.
      • Une séparation des fonctionnalités sous différentes lib.

      Nc-Core :

      • Abstraction d’engine multithread avec une communication par signaux/handler. (je le comparerais un peu avec le system de Qt mais cela reste encore limité)
      • Abstraction de structure de graph entièrement sous forme de template.
      • Implémentation d’un Visitor acyclic entièrement sous forme de template. Celui-ci évitant tout dynamic_cast tout en conservant la souplesse du visiteur acyclic de base.
      • Lib Xml rapide mais surtout légère et très facile d’utilisation (évitant surtout une dépendance externe sur une lib de plus).

      Nc-Graphics :

      • Binding OpenGL, permettant d’utiliser directement du code OpenGL.
      • Basé sur OpenGL 3.3, beaucoup de framework se faisant vieux sont basé sur la version 2.1.
      • Gestion de context OpenGL partagé en multithread.
      • Un graphe de scène très simple d’utilisation.
      • La création d’effets avec shader facile et rapide.

      Nc-GUI :

      • De nombreux framework ne fournissent pas ce genre de fonctionnalités, préférant alors laisser le développeur utiliser une bibliothèque externe même si selon moi cela diminue les performances. Après il est toujours possible d’intégrer un lib externe.

      Évidemment beaucoup de ses points sont très subjectifs. Il faudra que je réfléchisse a faire des benchmark entre différents moteurs dans l'avenir pour comparer un peu. Après l’intérêt reste limité dans l’état actuel des choses, je suis encore loin de concurrencer Ogre3D en terme de fonctionnalités :D

      Pourquoi moi, développeur d'un jeu qui a du contenu et son propre moteur, je devrais m'intéresser à ce projet ?

      Si tu as ton propre moteur, n’est-ce pas une occasion pour toi de regarder un peu ce que j’ai fait pour y piocher des idées ?
      Apres je ne dis pas que mon moteur est mieux qu’un autre, ça n'est jamais qu’une première version…

      est-ce que ton projet apporte quelque chose à la communauté ?

      Peut-être suis-je naïf de croire que la contribution à la communauté passe aussi par le partage/diffusion de mes travaux.
      Je conçois que l’intérêt est moindre au vu des différents produits présent sur le marché. Cependant j'ai la conviction que le framework pourrai en intéresser plus d'un s'ils prenaient la peine d'y regarder d'un peu plus prés.

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.