كل مباراة تصير شريط لقطات بارزة
تتحوّل المباريات المنتهية تلقائيًا إلى مقاطع لقطات بارزة عمودية وتُنشر على YouTube وInstagram وDiscord — إضافةً إلى بث مباشر للوح.

بكلمات بسيطة
أكثر لحظات opolyx إثارةً تسافر الآن إلى ما بعد المباراة. عندما تنتهي المباراة، يعثر النظام على أفضل لحظاتها — فوز في الثانية الأخيرة، إفلاس، حرب مزاد، ضربة إيجار ضخمة — ويحوّلها إلى مقاطع عمودية قصيرة تُنشر تلقائيًا على YouTube وInstagram وDiscord.
المقاطع تحمل الهوية البصرية وسهلة القراءة على الهاتف: شعار opolyx في الأعلى، والدردشة داخل اللوح، والترتيب في الأسفل. وهناك أيضًا بث مباشر لمباريات استعراضية بين بوت وبوت يعمل من صندوق بث حقيقي.
للمهتمين بالتفاصيل التقنية
الأساس هو مسار قراءة خاص بالمذيع فقط. تضيف الترحيلة 0036 الحقل profiles.broadcaster وتُدرج فحص is_broadcaster() بعامل OR في سياسات SELECT الست لجداول اللعبة، مُتيحةً مسارين محميين: /spectate (اللوح المباشر) و/replay (طيّة إعادة تشغيل حتمية للمحرك على سجل الأحداث).
دالة محرك خالصة تُقيّم اللقطات البارزة — فوز، إفلاس، إيجار كبير، حرب مزاد، jackpot، تغيّر الصدارة، مقايضة، انتقال آني — وتنتقي أفضل النوافذ غير المتداخلة. ويقوم عامل منفصل apps/broadcaster بعرض كل نافذة في Chromium بلا واجهة، ويمرّرها عبر ffmpeg إلى ملف mp4، ويرفعها إلى التخزين، وينشرها عبر مزوّد اجتماعي إضافةً إلى Discord. وهو غير متأثر بالتكرار عبر علامة تخزين، فلا يُمَسّ الـ daemon الخاص باللعبة أبدًا.
// engine: scoreHighlights() — pure, deterministic
// win / bankruptcy / big-rent / auction-war / jackpot / lead-change / trade / teleport
// broadcaster: window -> headless Chromium /replay -> ffmpeg -> mp4 -> Storage -> publish
// .done marker = idempotent; daemon untouchedيسجّل متصفح المقاطع بلا الواجهة الدخول كمذيع عبر مُرمِّز كعكات Supabase كي يُعرَض المسار المحمي /replay. ويؤدي جسر مصادقة الأمر نفسه لمتصفح OBS على صندوق البث، فيتيح له عرض لوح /spectate المباشر مباشرةً. وتُوسم مباريات الاستعراض مسبقًا بأنها منتهية كي تُستبعد من خط أنابيب Shorts.
