Bonjour,
J'ai un petit projet que j'aimerais mettre en place sur le web et qui consiste à étudier l'évolution de petites IA dans leur environnement.
J'ai de bonnes connaissances en javascript mais il me semble que ce langage n'est pas viable pour mon projet car il est interprété en temps réel et de trop haut niveau.
En effet, chaque entité est définie par un génome qui consiste en un assemblage de caractéristiques qui, très vite peuvent augmenter la puissance de calcul de manière exponentielle.
A savoir que le but de la démarche, dans un premier temps, est de gérer une petite centaine de particules à l'écran, sans lag à 60 FPS, et de les voir évoluer (naissance, mouvement, alimentation, prédation, reproduction, mutation) de génération en génération.
Après, le but serait de passer en 3D mais je n'ai pas encore réfléchi à ça pour le moment.
Vu le nombre de particules et la complexité de leur génome, il me faut les outils les plus efficaces possible pour une exploitation en ligne.
En fouillant un peu sur le web, j'en arrive à cette conclusion :
L'idéal serait de coder en C++ en terme de compromis flexibilité/vitesse d'execution. Faudra donc que j'apprenne le C++.
Pour la partie graphique (en 2D pour commencer), utiliser la bibiliothèque Raylib. Mes animations seront simples pour commencer et je compte recréer la physique nécessaire. Raylib me permettra juste de pouvoir afficher et animer des choses à l'écran.
Si je suis content du résultat, je compte traiter le code final avec emscipten afin de normaliser l'application en webassembly pour pouvoir la faire tourner sur un navigateur de manière optimale (le choix de Raylib est uniquement basé sur le fait que cette bibliothèque est prise en charge par emscripten.
Cela vous semble-t-il une bonne stratégie ou voyez-vous plus simple/efficace pour parvenir à mon objectif ? le plus important pour moi est d'avoir de la marge et de m'assurer que mes simulations ne laggeront pas.
Ai-je oublié de penser à quelque chose ?
Je n'y connais rien et j'aurais adoré rester sur javascript mais, après 2 jours de recherches, il semble que le passage par webassembly soit inévitable pour ce que je veux faire.
Partager