每一局都變成一段高光集錦
結束的對局會自動變成直式高光片段,釋出到 YouTube、Instagram 和 Discord——外加一路棋盤直播。

通俗版
opolyx 最跌宕的時刻如今能走出對局本身。一局結束後,系統會找出它的精彩瞬間——絕殺取勝、破產、拍賣大戰、天價租金——並把它們做成直式短片,自動釋出到 YouTube、Instagram 和 Discord。
這些片段帶有品牌標誌,在手機上也清晰易讀:頂部是 opolyx 標誌,聊天嵌在棋盤裡,排名在下方。此外還有一路機器人對機器人的展示對局直播,從一臺真正的播出主機執行。
技術細節
其基礎是一條僅供播主使用的讀取通道。遷移 0036 新增了 profiles.broadcaster,並以 OR 的方式把一項 is_broadcaster() 檢查併入遊戲各表的六條 SELECT 策略,從而解鎖兩條受限路由:/spectate(即時棋盤)和 /replay(對事件日誌做確定性引擎重放摺疊)。
一個純引擎函式為高光時刻評分——取勝、破產、鉅額租金、拍賣大戰、jackpot、領先易主、交易、傳送——並挑出彼此不重疊的最佳時段。另有一個獨立的 apps/broadcaster worker 在無頭 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 的 cookie 編解碼器以播主身份登入,好讓受限的 /replay 得以渲染。一座認證橋為播出主機上的 OBS 瀏覽器做同樣的事,讓它直接渲染即時的 /spectate 棋盤。展示對局會被預先標記為已完成,從而排除在 Shorts 流水線之外。
