Re: hARMful engine

Posté par Bibi09 le 6/7/2020 16:58:20
Hey ! J'ai effectivement commencé à regarder Rust et à voir ce qu'il y a en graphisme 2D. Je regarderai ce qu'offre Piston qui semble être un moteur assez complet (ou un ensemble de lib, je sais plus trop avec le vocabulaire propre à Rust...).
Par contre, c'est un langage assez complexe et avec pas mal de choses qui lui sont propres. J'ai lu que la moitié du livre pour l'instant (chapitre 10/20), sans avoir encore pu aborder le plus gros (programmation fonctionnelle et orientée objet). C'est un langage très intéressant, par exemple il permet de stocker des données de différents types dans des listes. J'avais jamais vu ça dans d'autres langages ! Après je m'y retrouve avec le C++ avec lequel je vois des concepts proches.

Bref, j'ai commencé à développer un embryon d'architecture ECS mais en C++. L'apprentissage de Rust est un peu trop long, j'y vais en douceur. Et en plus, si finalement je mets ça dans du C++, ça évitera de tout recoder.

Cette refonte me permet de passer directement sur du C++17, voire commencer à intégrer du C++20 tel que les "concepts" qui servent de contraintes sur les classes/fonctions génériques.
Le code est donc un peu mieux foutu avec des améliorations sur la sécurité. J'utilisais déjà des pointeurs dits intelligents mais le code et la technique s'améliorent encore car c'est prévu dès le début. Au final, il pourrait très bien être écrit en Rust comme en C++.

C'est clair que ça va changer pas mal de choses sur l'architecture, et si les performances suivent ça ne sera que mieux. L'ECS me permet en plus quelque chose qui était impossible jusque là : la communication via des événements ! Et ça manquait cruellement, même si je dois encore creuser le sujet vu qu'il reste des inconnues.

Un autre point, c'est OpenGL. Avec cette nouvelle architecture, il me sera possible profiter du multithreading et de l'utiliser à fond. Et comme j'ai déjà appris pas mal de choses en OpenGL, je me dis que la transition vers Vulkan devrait être plus facile.
L'autre avantage de Vulkan, c'est qu'avec une seule API on peut aller sur plusieurs plateformes (au lieu de OpenGL + OpenGL ES). Avec ce moteur, je voulais m'orienter surtout vers de l'embarqué (et principalement le Raspberry Pi). Vulkan pourrait me permettre d'unifier le moteur sur desktop et autres plateformes, et peut-être même le web assembly plus tard. Mozilla a proposé une API pour le web basée sur Vulkan : https://www.developpez.com/actu/125712/Mozilla-propose-au-groupe-Khronos-une-nouvelle-API-graphique-pour-le-Web-Obsidian-est-basee-sur-Vulkan/

Bon, pour l'instant je vais me contenter de finir mon POC purement C++, à voir ensuite.

Cette contribution était de : http://blenderclan.tuxfamily.org/html/newbb/viewtopic.php?forum=3&topic_id=49507&post_id=583878