Developpez.com - Rubrique 2D-3D-Jeux

Le Club des Développeurs et IT Pro

Intrinsic

Un nouveau moteur de jeux vidéo open source basé sur Vulkan

Le 2016-10-24 21:54:46, par LittleWhite, Responsable 2D/3D/Jeux
Intrinsic est un moteur de jeux vidéo basé sur Vulkan. Le projet a été initié par un développeur allemand Benjamin Glatzel et n'en est qu'à ses balbutiements, mais donne déjà un résultat prometteur.


Le moteur est totalement open source (licence GPL v3) et le code est hébergé sur GitHub.
Le moteur supporte les scripts grâce à LUA et est disponible avec un éditeur. Pour l'importation des ressources, le format FBX est supporté. Pour rentrer encore plus dans la technique, Intrinsic est programmé en C et C++. L'architecture est pensée pour utiliser les performances multicoeurs des CPU.
Du côté du rendu, le moteur supporte le Physically Based Rendering (PBR) ainsi que les lumières volumétriques. Finalement, le travail de Benjamin est compilable sous Windows (VS2015) et Ubuntu 16.04.


Ce travail n'aurait pas pu voir le jour sans les bibliothèques suivantes :


Votre opinion

Que pensez-vous du moteur et du code ?
Quelle utilité voyez-vous en ce moteur ?

Pour aller plus loin

Voir les ressources Developpez.com sur Vulkan.
Voir les ressources Developpez.com sur la SDL 2.

Source

Site officiel
  Discussion forum
18 commentaires
  • Matthieu Vergne
    Expert éminent
    Mais tu peux le faire sans être vulgaire. Être ferme est convaincu ne nécessite pas d'être insultant. Si on te met un coup de poing dans la gueule en te disant "je ne fais qu’échanger", je suis pas sûr que tu le prennes bien.

    Ton post original étant très critique, une critique constructive proposerait des améliorations. Et participer au projet est justement le meilleur moyen pour que ces améliorations soient prises en compte. Son post te suggère juste poliment d'aller jusqu'au bout de ta critique en montrant que ce n'est pas juste du venin craché à chaud sans réelle réflexion.

    Si être faux-cul nécessite d'être poli, ce n'est pas parce qu'on est poli qu'on est faux-cul.
  • Squisqui
    En attente de confirmation mail
    Envoyé par yetimothee
    Je laisse l'aimable lecteur juger de la pertinence et de la clarté du code source écrit par ce frénétique :

    [...]

    Hônnètement, un projet comme ça où y a pas le moindre commentaire de doc, où le C++ utilisé est digne d'un C++ 2003 écrit par un dev C, avec des macros d'inlining partout (obsession pour les perfs spotted), aucun tests unitaires (ou pas de location définie, oùkyson ?), 17 commits pour je ne sais pas combien de lignes de code (quelque chose comme 1 000 000 en comptant les dépendances intégrés dans le repo ???? ?)...

    Pour moi le type qui écrit ça a clairement pas le niveau pour mener à bien son projet. Pour l'instant c'est un prototype, et un prototype vraiment fait à l'arrache. Reste à voir si ça sera refactorer pour donner quelque chose de propre ensuite.

    Bref, utiliser cette chose pour un projet pro ça me semble risqué. Grand bien fasse à ceux qui voudraient se lancer dans l'aventure...
    Si le projet t’intéresse, n’hésites surtout pas à contribuer pour y remédier.
  • yetimothee
    Membre averti
    Je laisse l'aimable lecteur juger de la pertinence et de la clarté du code source écrit par ce frénétique :

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    #pragma once
    
    namespace Intrinsic
    {
    namespace Core
    {
    struct Application
    {
      static _INTR_HASH_MAP(Name,
                            Intrinsic::Core::Dod::Components::ComponentManagerEntry)
          _componentManagerMapping;
      static _INTR_HASH_MAP(Name,
                            Intrinsic::Core::Dod::Resources::ResourceManagerEntry)
          _resourceManagerMapping;
    
      static _INTR_HASH_MAP(Name, Intrinsic::Core::Dod::PropertyCompilerEntry)
          _componentPropertyCompilerMapping;
      static _INTR_HASH_MAP(Name, Intrinsic::Core::Dod::PropertyCompilerEntry)
          _resourcePropertyCompilerMapping;
    
      static _INTR_ARRAY(Intrinsic::Core::Dod::Components::ComponentManagerEntry)
          _orderedComponentManagers;
    
      static void init(void* p_PlatformHandle, void* p_PlatformWindow);
      static void initEventSystem();
      static void shutdown();
    
      static enki::TaskScheduler _scheduler;
      static bool _running;
    
    private:
      static void initManagers();
    };
    }
    }
    Hônnètement, un projet comme ça où y a pas le moindre commentaire de doc, où le C++ utilisé est digne d'un C++ 2003 écrit par un dev C, avec des macros d'inlining partout (obsession pour les perfs spotted), aucun tests unitaires (ou pas de location définie, oùkyson ?), 17 commits pour je ne sais pas combien de lignes de code (quelque chose comme 1 000 000 en comptant les dépendances intégrés dans le repo ???? ?)...

    Pour moi le type qui écrit ça a clairement pas le niveau pour mener à bien son projet. Pour l'instant c'est un prototype, et un prototype vraiment fait à l'arrache. Reste à voir si ça sera refactorer pour donner quelque chose de propre ensuite.

    Bref, utiliser cette chose pour un projet pro ça me semble risqué. Grand bien fasse à ceux qui voudraient se lancer dans l'aventure...
  • Matthieu Vergne
    Expert éminent
    Envoyé par Traroth2
    La GPL n'est pas une licence adaptée aux librairies si on veut qu'elles soient libres. La LGPL est la licence préconisée par la FSF pour ça.
    Je ne sais pas d'où tu sors ça, mais quand je vais voir sur le site de la FSF, en général ça ramène au site GNU, qui lui est clair à ce sujet : la LGPL, c'est une exception, mieux vaut utiliser la GPL.
  • Bousk
    Rédacteur/Modérateur
    Envoyé par yetimothee
    Hônnètement, un projet comme ça où y a pas le moindre commentaire de doc, où le C++ utilisé est digne d'un C++ 2003 écrit par un dev C, avec des macros d'inlining partout (obsession pour les perfs spotted), aucun tests unitaires (ou pas de location définie, oùkyson ?), 17 commits pour je ne sais pas combien de lignes de code (quelque chose comme 1 000 000 en comptant les dépendances intégrés dans le repo ???? ?)...

    Pour moi le type qui écrit ça a clairement pas le niveau pour mener à bien son projet. Pour l'instant c'est un prototype, et un prototype vraiment fait à l'arrache. Reste à voir si ça sera refactorer pour donner quelque chose de propre ensuite.

    Bref, utiliser cette chose pour un projet pro ça me semble risqué. Grand bien fasse à ceux qui voudraient se lancer dans l'aventure...
    Il s'agit d'un moteur donc oui les perfs sont primordiales.
    Il peut très bien avoir utilisé un autre système de versioning auparavant et avoir ensuite tout transféré sur github avec un seul "first commit".
    Je ne vois absolument pas ce que tu peux reprocher à ces seules lignes que tu montres : une structure de static pour contenir les paramètres de l'application, jusque là rien de choquant.
    Les commentaires c'est gentil, mais écrire du bon code compréhensible c'est mieux. Les commentaires ont toujours été rare partout où je suis passé, juste de l'explication globale, très rarement technique pour démystifier un "appel magique" si y'en a.
    Les tests unitaires c'est longs à écrire, encore plus à maintenir, autant se focaliser sur le projet. Et il est bien plus malin d'avoir des bots pour tester le jeu que des tests unitaires et tout le temps perdu à les écrire puis changer quand (fatalement) on change une fonctionnalité du jeu, ou en refacto une autre.
    Bien sûr qu'il serait stupide de vouloir baser un projet pro sur ce truc, mais c'est l'intelligence du pro que je questionnerais à ce sujet.
  • derderder
    Membre averti
    Envoyé par Matthieu Vergne
    Ça, ça sent le gars qui a choisit sa licence au doigt mouillé. {'^_^}
    Non, ça sent le gars qui veut se faire de l'argent en vendant la license non-GPL, comme le fait Ghostscript par exemple.
  • Matthieu Vergne
    Expert éminent
    Envoyé par Max Lothaire
    Étant donné que la licence est la GPL, est-ce que les jeux basés sur ce moteur seront soumis au copyleft ?
    A priori oui, vu que tu es censé utiliser ce projet comme une lib (ton jeu ne peux pas fonctionner sans le moteur). S'il avait utilisé la LGPL, tu aurais pu choisir ta licence à condition de faire tout un mic-mac pour permettre à l'utilisateur de changer de lib (i.e. chargement dynamique et consort). Mais si c'est GPL, la question ne se pose normalement pas : GPL => GPL only. C'est son but après tout.
  • Matthieu Vergne
    Expert éminent
    Envoyé par LittleWhite
    Après, sur le site officiel, c'est marqué que l'on peut contacter le développeur pour obtenir une licence du moteur qui ne sera pas sous GPL.
    Ça, ça sent le gars qui a choisit sa licence au doigt mouillé. {'^_^}
  • Matthieu Vergne
    Expert éminent
    Envoyé par Matthieu Vergne
    Ça, ça sent le gars qui a choisit sa licence au doigt mouillé. {'^_^}
    Envoyé par derderder
    Non, ça sent le gars qui veut se faire de l'argent en vendant la license non-GPL, comme le fait Ghostscript par exemple.
    Envoyé par Traroth2
    Non, ça sent le modèle économique freemium.
    Envoyé par gb_68
    Visiblement oui ; le projet vient de passer sous licence Apache 2.0.
    Vous en faites pas, je vous en veux pas.
  • math_lab
    Membre éprouvé
    Bah moi ce que je vois c'est bien du 'physically based shading' (d’après les shaders, j'ai pas regardé si ses rendus sont gamma-corrects).