Skip to content

eduard-permyakov/peredvizhnikov-engine

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

logo

Peredvizhnikov Engine is a fully lock-free game engine written in C++20. It implements the actor model of concurrent computation on top of the language's coroutine primitives.

Using the actor model abstraction, it is possible to develop complex, parallel logic while being wholly isolated from the details of inter-thread synchronization. A completely lock-free implementation of the model brings with it many advantages, namely guaranteed progress even in the presence of arbitrary thread termination, deadlock-freedom, predictable latency in reacting to critical events, and fault-tolerance.

In fact, the degree of fault-tolerance in Peredvizhnikov Engine is so great, that the engine is guaranteed to continue running even when any of the worker threads is asynchronously killed. You may verify this yourself.

The implementation is founded upon a mix of classical and novel ideas in lock-free programming. It includes a novel implementation of Software Transactional Memory, a new kind of lock-free queue, an original lock-free serialization primitive, a lock-free std::atomic_shared_ptr, a lock-free scheduler, a lock-free memory allocator, a compile-time DAG and plenty more!

For a detailed breakdown of all the lock-free algorithms that went into realizing the engine, rationale for the design, benchmarks, and more, please take a look at the accompanying document: Peredvizhnikov Engine: Design and Implementation of a Completely Lock-Free Scheduler.

To further facilitate development with data-oriented design, Peredvizhnikov Engine implements an in-memory database that is optimized for component-wise access and supports large data sets. It is founded on performant Flat Hash Map and Bitwise Trie with Bitmap data structures.

Building Peredvizhnikov Engine

At the moment, the only supported platform is Linux. Clang++ 16 is required to build the sources.

  1. git clone https://github.com/eduard-permyakov/peredvizhnikov-engine.git
  2. cd peredvizhnikov-engine
  3. make -j16 DEBUG=0

License

The source code of Peredvizhnikov Engine is freely available under the GPLv3 license. However, I may grant permission to use parts or all of the code under a different license on a case-by-case basis. Please inquire by e-mail.

Contact

You may contact me with any questions, comments, or concerns pertaining to the source code or the underlying algorithms.

In addition, I am currently actively seeking employment. Please don't hesitate to reach out regarding any suitable opportunities.

My e-mail is: edward.permyakov@gmail.com

Releases

No releases published

Packages

No packages published