محرك Peredvizhnikov هو محرك ألعاب خالٍ تمامًا من القفل مكتوب بلغة C++ 20. إنه يطبق نموذج الممثل للحساب المتزامن على رأس أساسيات اللغة كوروتين.
باستخدام تجريد نموذج الممثل ، من الممكن تطوير منطق معقد ومتوازي مع عزله تمامًا عن تفاصيل التزامن بين الخيوط. يجلب التنفيذ الخالي تمامًا من القفل للنموذج معه العديد من المزايا، وهي ضمان التقدم حتى في حالة وجود إنهاء تعسفي للخيط، وحرية الجمود، وزمن الوصول المتوقع في الاستجابة للأحداث الحرجة، والتسامح مع الأخطاء.
في الواقع، فإن درجة التسامح مع الأخطاء في محرك Peredvizhnikov كبيرة جدًا، بحيث يتم ضمان استمرار المحرك في العمل حتى عند إيقاف أي من سلاسل العمليات بشكل غير متزامن. يمكنك التحقق من ذلك بنفسك.
يعتمد التنفيذ على مزيج من الأفكار الكلاسيكية والجديدة في البرمجة الخالية من القفل. يتضمن تطبيقًا جديدًا لذاكرة المعاملات البرمجية، ونوعًا جديدًا من قائمة الانتظار الخالية من القفل، وتسلسلًا أصليًا خاليًا من القفل، وstd::atomic_shared_ptr بدون قفل، وجدولة خالية من القفل، ومخصص ذاكرة خاليًا من القفل، وقت التجميع DAG وغير ذلك الكثير!
للحصول على تفاصيل تفصيلية لجميع الخوارزميات الخالية من القفل التي ساهمت في تحقيق المحرك، والأساس المنطقي للتصميم، والمعايير، والمزيد، يرجى إلقاء نظرة على المستند المصاحب: محرك Peredvizhnikov: تصميم وتنفيذ جدولة خالية تمامًا من القفل .
لتسهيل التطوير بشكل أكبر من خلال التصميم الموجه نحو البيانات، يقوم Peredvizhnikov Engine بتطبيق قاعدة بيانات في الذاكرة تم تحسينها للوصول إلى المكونات ودعم مجموعات البيانات الكبيرة. تم تأسيسها على Flat Hash Map وBitwise Trie ذات الأداء العالي مع هياكل البيانات النقطية.
في الوقت الحالي، النظام الأساسي الوحيد المدعوم هو Linux. مطلوب Clang++ 16 لبناء المصادر.
git clone https://github.com/eduard-permyakov/peredvizhnikov-engine.git
cd peredvizhnikov-engine
make -j16 DEBUG=0
الكود المصدري لمحرك Peredvizhnikov متاح مجانًا بموجب ترخيص GPLv3. ومع ذلك، يجوز لي منح الإذن باستخدام أجزاء من التعليمات البرمجية أو كلها بموجب ترخيص مختلف على أساس كل حالة على حدة. يرجى الاستفسار عن طريق البريد الإلكتروني.
يمكنك الاتصال بي لطرح أي أسئلة أو تعليقات أو مخاوف تتعلق بكود المصدر أو الخوارزميات الأساسية.
بالإضافة إلى ذلك، أنا حاليا أبحث بنشاط عن عمل. من فضلك لا تتردد في التواصل بشأن أي فرص مناسبة.
بريدي الإلكتروني هو: [email protected]