StreamBridge

StreamBridge

通过你的Minecraft服务器驱动OBS:死亡、BOSS击杀和低血量时切换场景,切换源和滤镜,保存回放片段并通过obs-websocket v5编写文本覆盖层。附带游戏内仪表板和场景远程控制项目。

StreamBridge

你的 Minecraft 服务器驱动 OBS 运作。在直播中死亡,场景自动切换。

你被一只苦力怕炸死了。还没来得及对此说些什么,OBS 就已经保存了回放缓冲区,将 "Kiosk01 died: creeper" 显示在覆盖层上,切换到你的死亡场景,并在六秒后切了回来。

没有人触碰任何热键。是服务器完成的这一切。

StreamBridge 通过 obs-websocket v5 将 Minecraft 服务器连接到 OBS Studio,并将游戏中发生的事情转化为场景切换、源和滤镜开关、回放缓冲区保存、录制控制和文字覆盖层。


运作原理

三样东西,其中只有一样是你编辑的文件:

  1. 世界中发生了某件事。 玩家死亡、Boss 被击败、进度达成、某人生命值低于三颗心、某人进入下界。
  2. 规则匹配了该事件。 规则位于 config/streambridge.json 中:哪个事件、可选条件、冷却时间,以及要执行的操作。
  3. OBS 执行操作。 该操作变为一个 obs-websocket 请求。场景切换、源开关、回放保存、字幕——随你列出什么。

/streambridge reload 应用更改而无需重启任何东西。


什么可以触发规则

  • 死亡——包含死因、击杀者和发生地点
  • Boss 击杀——末影龙、凋灵
  • 进度达成——合成配方解锁已被过滤掉,不会刷屏
  • 低生命值——当你低于阈值时触发一次,恢复生命后重新武装
  • 维度切换——下界、末地、再回来
  • 加入和离开
  • 聊天消息——包括仅限管理员的聊天命令
  • 服务器启动和停止

每一个都在服务器端决定。除了通过上述事件,任何玩家都无法触发任何操作,且每个手动控制都会首先检查你的权限等级。

规则可以在 OBS 中做什么

  • 切换节目场景 或工作室模式的预览场景,并触发它们之间的过渡
  • 切换场景中的某个源 的开关——按名称操作,无需查找场景项目 ID
  • 切换源上的滤镜
  • 保存回放缓冲区——刚刚发生事情的片段
  • 设置文字源的文本,使用事件中的值:{player} died: {cause}
  • 开始、停止或暂停录制,开始或停止直播
  • 按名称触发任何 OBS 热键
  • 发送协议接受的任何原始 obs-websocket 请求,用于处理上述列表之外的任何内容

操作可以延迟执行:从一个规则中,现在就切到死亡场景,六秒后再切回来。


控制面板

/streambridge dashboard,或右键点击一个尚未绑定任何内容的场景遥控器。

它列出了 OBS 实际报告的场景——而非你必须先手动输入到配置文件中的列表。点击一个场景即可切换过去。正在直播的场景会被标记出来。每个场景旁边都有一个 绑定 按钮,可将该场景写入你手中的场景遥控器。

在右侧,它列出 你的规则,每条规则都显示触发次数、可点击的测试触发按钮,以及当某条规则在直播中捣乱时可用的开关。开关状态持续到下次重新加载;配置文件仍是最权威的来源。

底部一行:重新加载配置、保存回放片段、开始或停止录制。

场景遥控器

一件物品对应一个场景。把一个绑定到 Intro,一个绑定到 Just Chatting,一个绑定到 Death,把它们放到你的快捷栏中——切换场景只需右键点击,无需切换窗口,也无需 Stream Deck。

绑定的场景包含在物品名称中,因此一整栏的遥控器一眼就能读出来。潜行 + 右键点击可重新打开控制面板以重新绑定。

每个操作都会在服务器端根据你的权限等级进行检查。把遥控器递给别人,并不等于把你的直播交给他。


聊天命令

条件可以是正则表达式,而正则表达式会将捕获组传递给操作。这意味着一条规则就能覆盖你拥有的所有场景:

{
  "on": "chat.message",
  "when": { "op": "true", "message": "regex:^!scene (?<scene>.+)$" },
  "do": [ { "type": "scene", "scene": "{scene}" } ]
}

在游戏中输入 !scene Just Chatting,OBS 就会切换。"op": "true" 条件的设置是有原因的——没有它,你服务器上的任何人都可以操控你的直播。


人们用它来做什么

  • 自动剪辑并切入的死亡镜头,精彩片段不再需要直播结束后整理
  • 你登出瞬间出现、回来时消失的 "BRB" 场景
  • 生命值低于三颗心时出现的红色边框覆盖层
  • 穿过传送门时自动开启的下界调色滤镜
  • 服务器启动时、任何人加入前播放的开场场景
  • 自动录制自身的 Boss 战

专为在活跃服务器上运行而设计

  • 不会阻塞服务器线程。 规则匹配是映射查找;OBS 套接字在其自己的线程上运行。
  • 当 OBS 关闭时,请求会被丢弃而非排队。 延迟四十秒到来的场景切换比没有更糟。
  • 全局速率限制(5 个操作/秒,突发上限 10)意味着刷怪塔不会把一千次死亡变成一千次场景切换。
  • 每条规则的冷却时间在重新加载后依然生效,因此重新加载不是绕过它们的方法。
  • 损坏的配置永远不会拖垮服务器。 无效规则会被跳过并在 /streambridge status 中列出。
  • 错误的 OBS 密码会停止重连循环,而不是永远狂轰 OBS。

要求

  • Minecraft 1.21.11
  • NeoForge 21.11 或更新版本
  • OBS Studio 28 或更新版本,并启用 WebSocket 服务器 (工具 → WebSocket 服务器设置)
  • 在客户端和服务器端都安装——控制面板和场景遥控器是已注册的内容

OBS 和 Minecraft 服务器必须能够互相访问。对于远程服务器,这意味着需要隧道;切勿将 obs-websocket 暴露在开放互联网上。


诚实的局限性

这是 0.1.0 版本。 协议层、规则引擎和速率限制已由 51 个自动化测试覆盖,包括针对模拟 OBS 服务器的完整握手。但尚未经过数月实际使用的是游戏端。

聊天回传通道目前是单向的。 事件从游戏流向 OBS。让 Twitch 和 YouTube 聊天驱动游戏已列入计划,但尚未发布。

没有客户端侧触发器。 没有东西会对你所看到的内容做出反应,只对服务器所知道的内容做出反应。这是一个刻意的边界,而非疏忽。

控制面板和遥控器尚未经过真实直播测试。 它们能针对 1.21.11 编译,背后的逻辑也已测试过,但首次实际运行还在前面。


未来方向

  • 将 Twitch 和 YouTube 聊天作为输入,带有逐命令白名单和对聊天可接触内容的硬性限制
  • Fabric 版本
  • 通过 OBS 热键支持 Stream Deck
  • 针对同时有多个主播在线的服务器的逐玩家规则范围