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
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 :
- Vulkan SDK (https://lunarg.com/vulkan-sdk/)
- microprofile (https://github.com/jonasmr/microprofile)
- enkiTS (https://github.com/dougbinks/enkiTS)
- gli (http://gli.g-truc.net/0.8.1/index.html)
- glm (http://glm.g-truc.net/0.9.8/index.html)
- glslang (https://github.com/KhronosGroup/glslang)
- LuaJIT (http://luajit.org/)
- rapidjson (https://github.com/miloyip/rapidjson)
- rlutil (https://github.com/tapio/rlutil)
- SDL 2.0 (https://www.libsdl.org/download-2.0.php)
- SOL v2.0 (https://github.com/ThePhD/sol2)
- sparsepp (https://github.com/greg7mdp/sparsepp)
- SPIRV-Cross (https://github.com/KhronosGroup/SPIRV-Cross)
- tinydir (https://github.com/cxong/tinydir)
- TLSF allocator (https://github.com/mattconte/tlsf)
- PhysX 3 (https://developer.nvidia.com/physx-sdk)
- Qt (éditeur seulement, https://www.qt.io/download)
- FBX SDK (éditeur seulement, http://usa.autodesk.com/adsk/servlet...mp;id=10775847)
- NVTT (https://developer.nvidia.com/gpu-acc...re-compression)
- Cloc (http://cloc.sourceforge.net)
- 7za (http://www.7-zip.org/download.html)
Votre opinion
Pour aller plus loin
Voir les ressources Developpez.com sur Vulkan.
Voir les ressources Developpez.com sur la SDL 2.
Source
Site officiel
-
Matthieu VergneExpert éminentMais 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.le 27/10/2016 à 7:07 -
SquisquiEn attente de confirmation maille 26/10/2016 à 16:09
-
yetimotheeMembre avertiJe 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(); }; } }
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...le 25/10/2016 à 13:42 -
Matthieu VergneExpert éminentJe 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.le 26/10/2016 à 8:09
-
BouskRédacteur/ModérateurIl 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.le 27/10/2016 à 9:54 -
derderderMembre avertiNon, ça sent le gars qui veut se faire de l'argent en vendant la license non-GPL, comme le fait Ghostscript par exemple.le 25/10/2016 à 10:47
-
Matthieu VergneExpert éminentA 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.le 25/10/2016 à 8:04
-
Matthieu VergneExpert éminentle 25/10/2016 à 9:20
-
Matthieu VergneExpert éminentVous en faites pas, je vous en veux pas.le 26/10/2016 à 14:51
-
math_labMembre é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).le 23/11/2016 à 11:09