Mafioso
لعبة مافيا فورية متعددة اللاعبين مدعومة بالذكاء الاصطناعي (Arabic-First)
Mafioso هي نسخة رقمية حديثة من لعبة المافيا الكلاسيكية، تعتمد على اللعب الجماعي في الوقت الفعلي مع دمج الذكاء الاصطناعي لتوليد قصص غامضة جديدة في كل مباراة باللغة العربية. تم تصميم المشروع ليقدم تجربة لعب سلسة، مع بنية خلفية قوية قادرة على التعامل مع جلسات لعب متعددة ومتزامنة.
تصميم المعمارية
بداية الفكرة
بدأت هذا المشروع بهدف بسيط، وهو تمكين عائلتي وأصدقائي من لعب المافيا عبر الإنترنت دون الحاجة إلى الأوراق أو وجود شخص يدير اللعبة يدويًا. ومع تطور الفكرة، تحول المشروع إلى منصة متكاملة تعتمد على الذكاء الاصطناعي.
نمذجة البيانات
أفضل استخدام قواعد البيانات العلائقية لما توفره من سلامة في البيانات وهيكل واضح. لذلك قمت بتصميم نماذج البيانات بالكامل قبل كتابة الكود، مع الفصل بين البيانات الدائمة والبيانات المؤقتة الخاصة بجلسات اللعب، وتحسين عمليات القراءة داخل PostgreSQL باستخدام الفهارس (Indexes).
محرك اللعبة واستخدام Redis
نظرًا لأن اللعبة تعتمد على عدد كبير من عمليات القراءة والكتابة أثناء الجلسات، استخدمت Redis كطبقة تخزين مؤقت عالية الأداء. كما صممت هياكل بيانات مخصصة لمعالجة أحداث اللعبة بسرعة وتقليل الضغط على قاعدة البيانات أثناء اللعب.
الاتصال الفوري
تعتمد اللعبة على WebSockets لتوفير تجربة لعب لحظية، وتشمل:
فصل كل مباراة داخل غرفة مستقلة (Room).
دعم إعادة الاتصال في حالة انقطاع الإنترنت حتى لا يفقد اللاعب تقدمه داخل المباراة.
تصميم يتحمل الأعطال مع فصل واضح بين مكونات النظام لضمان استقرار الخدمة.
الذكاء الاصطناعي
يعتمد المشروع على State Machine لإدارة دورة حياة المباراة حتى الوصول إلى حالة الفوز. كما يتم استخدام Gemini AI لإنشاء قصة اللعبة وأدوار الشخصيات بشكل مختلف في كل جلسة، مع التحقق من صحة المخرجات لضمان توافقها مع قواعد اللعبة.
نبذة عن المشروع
أنا مطور Full-Stack، لكن تركيزي الأساسي هو تطوير الـ Backend وتصميم الأنظمة. الجزء الأكبر من الجهد الهندسي في هذا المشروع كان في بناء الخادم ومحرك اللعبة وإدارة الاتصال الفوري بين اللاعبين.
أما بالنسبة لتطبيق الهاتف، فقد استخدمت React Native مع الاستفادة من أدوات الذكاء الاصطناعي الحديثة لتسريع عملية التطوير، مما سمح لي بالتركيز على بناء Backend قوي مع تقديم تطبيق متكامل.
التقنيات المستخدمة
Backend
NestJS باستخدام TypeScript.
تطبيق مبادئ Domain-Driven Design (DDD).
WebSockets (Socket.io) لإدارة الاتصال الفوري.
PostgreSQL مع Prisma ORM.
Redis للتخزين المؤقت وتحديد معدل الطلبات (Rate Limiting).
Gemini SDK لتوليد القصص باستخدام الذكاء الاصطناعي.
JWT Authentication مع WsJwtGuard.
ValidationPipe وException Filters لحماية النظام.
اختبارات Unit باستخدام Vitest.
Docker مع جاهزية للنشر على Fly.io.
Mobile
React Native.
Expo Router.
Zustand لإدارة الحالة.
socket.io-client لمزامنة حالة التطبيق مع الخادم.
تصميم يدعم العربية بالكامل (RTL) مع هوية بصرية مستوحاة من أسلوب Premium Noir.