Chaque partie devient un condensé des meilleurs moments
Les parties terminées sont automatiquement transformées en clips verticaux des meilleurs moments et publiées sur YouTube, Instagram et Discord — en plus d’une diffusion en direct du plateau.

En clair
Les moments les plus spectaculaires d’opolyx voyagent désormais au-delà de la partie. Quand un match se termine, le système trouve ses meilleurs moments — une victoire à la dernière seconde, une faillite, une guerre d’enchères, un énorme loyer encaissé — et les transforme en courts clips verticaux publiés automatiquement sur YouTube, Instagram et Discord.
Les clips sont aux couleurs de la marque et lisibles sur téléphone : le logo opolyx en haut, le chat à l’intérieur du plateau et le classement en dessous. Il y a aussi une diffusion en direct de parties de démonstration bot contre bot, tournant depuis un vrai poste de diffusion.
Pour les curieux techniques
La base est un chemin de lecture réservé au diffuseur. La migration 0036 ajoute profiles.broadcaster et intègre par OR une vérification is_broadcaster() dans les six politiques SELECT des tables de jeu, débloquant deux routes protégées : /spectate (le plateau en direct) et /replay (un repli de relecture déterministe du moteur sur le journal des événements).
Une fonction pure du moteur note les temps forts — victoire, faillite, gros loyer, guerre d’enchères, jackpot, changement de tête, échange, téléportation — et sélectionne les meilleures fenêtres qui ne se chevauchent pas. Un worker distinct apps/broadcaster rend chaque fenêtre dans un Chromium headless, la fait passer par ffmpeg vers un mp4, la téléverse vers le stockage et la publie via un fournisseur social plus Discord. Il est idempotent grâce à un marqueur de stockage, de sorte que le daemon du jeu n’est jamais touché.
// 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 untouchedLe navigateur headless des clips se connecte en tant que diffuseur via le codec de cookies de Supabase pour que le /replay protégé s’affiche. Un pont d’authentification fait de même pour le navigateur OBS sur le poste de diffusion, lui permettant d’afficher directement le plateau en direct /spectate. Les parties de démonstration sont marquées à l’avance comme terminées afin d’être exclues du pipeline Shorts.
