الانتقال إلى المحتوى

ألعاب إلكترونية

TotoMondiale

لعبة توقعات كرة القدم المجانية التي أديرها في كل بطولة كبرى منذ 2008، أُعيد بناؤها بـNode.js لكأس العالم 2026.

النوعألعاب إلكترونية

المشكلة

TotoMondiale لعبة توقعات مجانية أديرها في بطولات كرة القدم الكبرى منذ منتصف العقد الأول من الألفية. وتضم قاعة المشاهير فيها TotoEuropeo 2008 وTotoEuropeo 2012 وTotoMondiale 2014 وTotoEuropeo 2016. ولم تتغير القواعد كثيرًا: تملأ قسيمة لكل مباراة، وتُحتسب النقاط وفق الاحتمالات، وتُنشر كل قسيمة علنًا قبل صافرة البداية حتى لا يغش أحد. لكن الموقع القديم المبني بـASP الكلاسيكية لم يعد يلبي ما يتوقعه اللاعبون اليوم: دوريات خاصة مع الأصدقاء، وتصميم يناسب الهاتف، ونتائج مباشرة. فأعدتُ كتابته بالكامل لكأس العالم 2026.

ما الذي بنيته

منصة جديدة على Node.js تحافظ على القواعد القديمة وتضيف الدوريات والبيانات المباشرة وشيئًا من المتعة.

  • قسيمة من 9 خيارات: النتيجة النهائية، والشوط الأول، وتسجيل الفريقين من عدمه، وأقل/أكثر، وركلات الجزاء، والشوط الأول/نهاية المباراة، وفردي/زوجي، والنتيجة الدقيقة، وإجمالي الأهداف. وتأتي الاحتمالات من API-Football، مع احتمالات افتراضية عند عدم توفرها.
  • دوريات خاصة وعامة: لكل دوري ترتيبه ولافتته وشريط أخباره ودردشته.
  • بطاقات خاصة: بطاقة Sesto Senso تمنح مكافأة على النتيجة الدقيقة، وMalocchio تخصم نقاطًا من لاعب آخر، وCornicello تُبطل مفعول Malocchio.
  • اللعب النظيف في صلب الكود: تبقى قسائم اللاعبين الآخرين وبطاقاتهم مخفية حتى إقفال المباراة، وتسري هذه القاعدة على مشرفي المنصة أيضًا. وإذا نسي أحدهم قسيمته، يملأها النظام عشوائيًا كما تنص القواعد الأصلية.
  • مباريات مباشرة: مهمة آلية تستعلم من API-Football كل 30 ثانية وتحدّث النتائج أثناء المباراة.
  • ميزات الذكاء الاصطناعي: يكتب Claude يوميًا مجموعة توقعات مقترحة، ويستطيع مشرفو الدوريات إنشاء لافتة بـDALL-E 3 وصحيفة قصيرة للدوري عبر OpenAI.
  • صفحات البطولة واللغات: الفرق والملاعب والتاريخ ودور المجموعات وشجرة الأدوار الإقصائية، بخمس لغات، مع تسجيل الدخول عبر Google.

التقنيات المستخدمة

Node.js 20 وExpress 4 وEJS وMySQL 8 وPassport مع Google OAuth وNodemailer وImapFlow، وتعمل على Phusion Passenger في cPanel. أُصدر التحديثات بخطوات صغيرة وأرفع رقم الإصدار في كل مرة: الكود الآن في الإصدار 5.1.642، البناء 665. أما النسخ السابقة فكانت تعمل على ASP الكلاسيكية مع قواعد بيانات Access.

لماذا بهذه الطريقة

تُخزَّن مواعيد انطلاق المباريات بتوقيت UTC مع فارق عرض منفصل. فـAPI-Football يحتاج إلى توقيت UTC الفعلي للعثور على المباراة، بينما يريد اللاعبون قراءة التوقيت الإيطالي. والفصل بين الاثنين يمنع فئة كاملة من الأخطاء التي تُقفل فيها المباراة قبل موعدها أو بعده بساعة.

لديك فكرة؟
لنتحدث.

سواء كان موقعًا إلكترونيًا أو تطبيقًا أو فيديو أو أغنية أو شيئًا أكبر، أنا مستعد لمساعدتك على تحقيقه.

تواصل معي
  • نابولي
  • أفكار
  • مشاريع
  • أشخاص
  • إلى الأمام دائمًا