Cada partida vira um compilado de melhores momentos
Partidas encerradas viram automaticamente clipes verticais de melhores momentos e são postadas no YouTube, Instagram e Discord — e em breve uma transmissão ao vivo do tabuleiro.

Em palavras simples
Os momentos mais dramáticos do opolyx agora viajam para além do jogo. Quando uma partida termina, o sistema encontra os seus melhores momentos — uma vitória no último segundo, uma falência, uma guerra de leilões — e os transforma em clipes verticais curtos que são postados automaticamente no YouTube, Instagram e Discord.
Os clipes têm a marca e são legíveis no celular: o logo do opolyx no topo, o chat dentro do tabuleiro e a classificação abaixo. Uma transmissão ao vivo de partidas de exibição bot contra bot também já está montada numa central de transmissão real, pronta para entrar no ar.
Para os mais técnicos
A base é um caminho de leitura só para o transmissor. A migração 0036 adiciona profiles.broadcaster e insere com OR uma verificação is_broadcaster() nas seis políticas SELECT das tabelas do jogo, desbloqueando duas rotas protegidas: /spectate (o tabuleiro ao vivo) e /replay (uma dobra de replay determinístico do motor sobre o log de eventos).
Uma função pura do motor pontua os melhores momentos — vitória, falência, aluguel grande, guerra de leilões, jackpot, mudança de liderança, troca, teletransporte — e escolhe as melhores janelas que não se sobrepõem. Um worker separado apps/broadcaster renderiza cada janela em Chromium headless, canaliza por ffmpeg até um mp4, envia ao armazenamento e publica por um provedor social mais o Discord. É idempotente graças a um marcador de armazenamento, então o daemon do jogo nunca é tocado.
// 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 untouchedO navegador headless dos clipes entra como transmissor pelo codec de cookies do Supabase para que o /replay protegido seja renderizado. Uma ponte de autenticação faz o mesmo pelo navegador OBS na central de transmissão, deixando-o renderizar diretamente o tabuleiro ao vivo /spectate. As partidas de exibição são pré-marcadas como concluídas para ficarem de fora do pipeline de Shorts.
