Peredvizhnikov Engine は、C++20 で書かれた完全にロックフリーのゲーム エンジンです。言語のコルーチン プリミティブ上に同時計算のアクター モデルを実装します。
アクター モデルの抽象化を使用すると、スレッド間同期の詳細から完全に分離しながら、複雑な並列ロジックを開発できます。このモデルの完全にロックフリーの実装は、多くの利点をもたらします。それは、任意のスレッド終了が存在する場合でも進行が保証されること、デッドロックがないこと、重大なイベントに反応する際の予測可能な待ち時間、およびフォールトトレランスです。
実際、Peredvizhnikov エンジンのフォールト トレランスの度合いは非常に優れているため、ワーカー スレッドのいずれかが非同期で強制終了された場合でも、エンジンは実行を継続することが保証されています。これは自分で確認することもできます。
この実装は、ロックフリー プログラミングにおける古典的なアイデアと斬新なアイデアの組み合わせに基づいています。これには、ソフトウェア トランザクション メモリの新しい実装、新しい種類のロックフリー キュー、オリジナルのロックフリー シリアル化プリミティブ、ロックフリー std::atomic_shared_ptr、ロックフリー スケジューラ、ロックフリー メモリ アロケータ、コンパイル時 DAG など、その他にもたくさんあります。
エンジンの実現に使用されたすべてのロックフリー アルゴリズムの詳細な内訳、設計の理論的根拠、ベンチマークなどについては、付属のドキュメント「Peredvizhnikov Engine: Design and Implementation of a Completely Lock-Free Scheduler」を参照してください。 。
データ指向設計による開発をさらに促進するために、Peredvizhnikov エンジンは、コンポーネントごとのアクセス用に最適化され、大規模なデータ セットをサポートするメモリ内データベースを実装します。これは、パフォーマンスの高いフラット ハッシュ マップとビットマップ データ構造を使用したビットワイズ トライに基づいています。
現時点では、サポートされているプラットフォームは Linux のみです。ソースをビルドするには Clang++ 16 が必要です。
git clone https://github.com/eduard-permyakov/peredvizhnikov-engine.git
cd peredvizhnikov-engine
make -j16 DEBUG=0
Peredvizhnikov Engine のソース コードは、GPLv3 ライセンスの下で自由に入手できます。ただし、ケースバイケースで、別のライセンスに基づいてコードの一部またはすべてを使用する許可を与える場合があります。メールにてお問い合わせください。
ソース コードまたは基礎となるアルゴリズムに関する質問、コメント、または懸念事項があれば、私に連絡してください。
また、現在積極的に就職活動を行っております。適切な機会がございましたら、お気軽にお問い合わせください。
私の電子メールは: [email protected]