Peredvizhnikov Engine est un moteur de jeu entièrement sans verrouillage écrit en C++20. Il implémente le modèle d'acteur de calcul concurrent au-dessus des primitives coroutines du langage.
En utilisant l'abstraction du modèle d'acteur , il est possible de développer une logique complexe et parallèle tout en étant totalement isolé des détails de la synchronisation inter-thread. Une implémentation totalement sans verrouillage du modèle apporte de nombreux avantages, à savoir une progression garantie même en présence d'une terminaison de thread arbitraire, une absence de blocage, une latence prévisible dans la réaction aux événements critiques et une tolérance aux pannes.
En fait, le degré de tolérance aux pannes du moteur Peredvizhnikov est si élevé que le moteur est assuré de continuer à fonctionner même lorsque l'un des threads de travail est supprimé de manière asynchrone. Vous pouvez le vérifier vous-même.
L'implémentation est fondée sur un mélange d'idées classiques et nouvelles en matière de programmation sans verrouillage. Il comprend une nouvelle implémentation de la mémoire transactionnelle logicielle, un nouveau type de file d'attente sans verrouillage, une primitive de sérialisation sans verrouillage originale, un std::atomic_shared_ptr sans verrouillage, un planificateur sans verrouillage, un allocateur de mémoire sans verrouillage, un DAG au moment de la compilation et bien plus encore !
Pour une description détaillée de tous les algorithmes sans verrouillage utilisés dans la réalisation du moteur, la justification de la conception, les tests de référence, etc., veuillez consulter le document d'accompagnement : Moteur Peredvizhnikov : conception et implémentation d'un planificateur entièrement sans verrouillage. .
Pour faciliter davantage le développement avec une conception orientée données, Peredvizhnikov Engine implémente une base de données en mémoire optimisée pour un accès par composant et prend en charge de grands ensembles de données. Il est fondé sur des structures de données Flat Hash Map et Bitwise Trie performantes avec Bitmap.
Pour le moment, la seule plateforme prise en charge est Linux. Clang++ 16 est requis pour créer les sources.
git clone https://github.com/eduard-permyakov/peredvizhnikov-engine.git
cd peredvizhnikov-engine
make -j16 DEBUG=0
Le code source de Peredvizhnikov Engine est disponible gratuitement sous la licence GPLv3. Cependant, je peux accorder l'autorisation d'utiliser des parties ou la totalité du code sous une licence différente, au cas par cas. Veuillez vous renseigner par e-mail.
Vous pouvez me contacter pour toute question, commentaire ou préoccupation concernant le code source ou les algorithmes sous-jacents.
De plus, je suis actuellement en recherche active d'emploi. N'hésitez pas à nous contacter concernant toute opportunité appropriée.
Mon e-mail est : [email protected]