Peredvizhnikov Engine es un motor de juego totalmente libre de bloqueos escrito en C++20. Implementa el modelo de actor de cálculo concurrente además de las primitivas de rutina del lenguaje.
Utilizando la abstracción del modelo de actor , es posible desarrollar una lógica paralela compleja y al mismo tiempo estar completamente aislado de los detalles de la sincronización entre subprocesos. Una implementación completamente libre de bloqueos del modelo trae consigo muchas ventajas, a saber, progreso garantizado incluso en presencia de terminaciones arbitrarias de subprocesos, ausencia de interbloqueos, latencia predecible al reaccionar ante eventos críticos y tolerancia a fallos.
De hecho, el grado de tolerancia a fallas en el motor Peredvizhnikov es tan grande que se garantiza que el motor continuará funcionando incluso cuando cualquiera de los subprocesos de trabajo se interrumpe de forma asincrónica. Puede verificar esto usted mismo.
La implementación se basa en una combinación de ideas clásicas y novedosas en programación sin bloqueos. Incluye una implementación novedosa de memoria transaccional de software, un nuevo tipo de cola sin bloqueos, una primitiva de serialización sin bloqueos original, un std::atomic_shared_ptr sin bloqueos, un programador sin bloqueos, un asignador de memoria sin bloqueos, un ¡DAG en tiempo de compilación y mucho más!
Para obtener un desglose detallado de todos los algoritmos sin bloqueos que se utilizaron para realizar el motor, la justificación del diseño, los puntos de referencia y más, consulte el documento adjunto: Motor Peredvizhnikov: diseño e implementación de un programador completamente sin bloqueos. .
Para facilitar aún más el desarrollo con diseño orientado a datos, Peredvizhnikov Engine implementa una base de datos en memoria que está optimizada para el acceso por componentes y admite grandes conjuntos de datos. Se basa en Flat Hash Map y Bitwise Trie de alto rendimiento con estructuras de datos de mapa de bits.
Por el momento, la única plataforma compatible es Linux. Se requiere Clang++ 16 para construir las fuentes.
git clone https://github.com/eduard-permyakov/peredvizhnikov-engine.git
cd peredvizhnikov-engine
make -j16 DEBUG=0
El código fuente de Peredvizhnikov Engine está disponible gratuitamente bajo la licencia GPLv3. Sin embargo, puedo otorgar permiso para usar parte o la totalidad del código bajo una licencia diferente, caso por caso. Por favor consulte por correo electrónico.
Puede ponerse en contacto conmigo si tiene alguna pregunta, comentario o inquietud relacionada con el código fuente o los algoritmos subyacentes.
Además, actualmente estoy buscando empleo activamente. No dude en comunicarse con nosotros sobre cualquier oportunidad adecuada.
Mi correo electrónico es: [email protected]