جعلنا opolyx أسرع
أرقام النرد تظهر الآن على الفور تقريبًا، والصفحات تُحمّل بسرعة أينما كنت، وأصبح الانتظار بين الأدوار أقل بكثير.

بكلمات بسيطة
السرعة ميزة بحد ذاتها. قضينا دفعة عمل كاملة لجعل opolyx سريع الاستجابة، ويُفترض أن تلاحظ ذلك لحظة جلوسك إلى الطاولة.
انقر "ارمِ النرد" فينبض النرد بالحياة على الفور — كانت الأرقام تستغرق ثانية ونصفًا حتى تستقر، أما الآن فتهبط في غمضة عين. ومتابعة دورك، وشراء ممتلكات، ودفع الإيجار: كل ذلك يستجيب لحظة قيامك بالفعل.
- أرقام النرد تظهر على الفور تقريبًا بعد الرمي.
- الصفحة الرئيسية والدليل يُحمّلان بسرعة من أي مكان في العالم.
- انتظار أقل بين الأدوار بمجرد أن تنطلق اللعبة على الطاولة.
- لا مزيد من توقف "the game server is waking up" عند فتح اللوحة.
لا شيء من هذا يغيّر طريقة اللعب — القواعد نفسها واللوحة نفسها. كل ما في الأمر أنها تبتعد عن طريقك بشكل أسرع.
للمهتمين بالتفاصيل التقنية
انخفض زمن النقر حتى ظهور أرقام النرد من ~1.5s إلى نحو 0.3–0.75s. كان هناك عاملان متراكمان: حركة استقرار مدتها ~700ms بعد وصول الاستجابة، ومسار شبكي بطيء. قلّصنا التدحرج إلى 250ms، واللاعب صاحب الدور يشغّل النرد الآن تفاؤليًا عند 0ms، ثم يطبّق الحالة والأحداث الموثوقة من الـ daemon فور عودتها — دون انتظار بث الـ realtime الأبطأ.
كان المكسب الأكبر في الشبكة. يصرّح خادم اللعبة (الـ daemon) بالـ JWT الخاص باللاعب نفسه بدلًا من سر خاص بالخادم، فبات المتصفح قادرًا على استدعائه مباشرة بدل المرور عبر server action على Vercel. تتحقق الاستدعاءات المباشرة من رمز HS256 محليًا على الـ daemon (signature وexp وaudience) — فهبط زمن المصادقة من ~40ms إلى ~1–5ms — وترتد إلى مُرحِّل الـ server action عند أي خطأ، فلا يُرسل أي شيء مرتين أبدًا.
# Browser → daemon directly (with a verified server-action fallback)
NEXT_PUBLIC_DAEMON_URL=https://opolyxgame-daemon-production.up.railway.app
# Daemon verifies the player's token locally (HS256), ~40ms → ~1-5ms
SUPABASE_JWT_SECRET=<legacy HS256 secret from Supabase → Settings → API>وفي الخلفية، أصبح الـ daemon وقاعدة البيانات الآن متجاورين: نقلنا Supabase الإنتاجي من Tokyo إلى Singapore، بمحاذاة الـ daemon على Railway، فصارت الاستدعاءات بين الـ daemon وقاعدة البيانات محلية — المصادقة ~200ms → ~40ms وعمل اللعبة ~250ms → ~45ms. ويحافظ node:https keep-alive Agent بنطاق الوحدة على دفء هذا الاتصال بين الأدوار (فأول رمية في الدور لم تعد تعيد الاتصال من البارد). وكل صفحة تسويقية وصفحة محتوى — home وhow-to-play وrules وguide والصفحات القانونية وsign-in — باتت الآن مُولّدة مسبقًا لكل لغة عبر اللغات العشر جميعها، فتُقدَّم من الـ edge cache دون lambda بدء بارد.
