BrightScript 模拟引擎
一个用于在浏览器平台和 Node.js 上运行 Roku 应用的 BrightScript 语言解释器。
项目
BrightScript 模拟引擎 实现了 BrightScript 语言的解释器,可嵌入 Web、Electron 和 Node.js 应用程序中,或作为独立的 CLI/REPL 工具使用,从而允许 Roku 应用 在多个不同的非 Roku 平台上运行。
最初的重点是支持 Draw 2D API 组件(roScreen、roCompositor、roRegion 等)以及 BrightScript 语言的核心元素,从而允许在 HTML5 Canvas 上完整执行 Roku 应用,但范围已扩展至包括 SceneGraph 框架、Roku 文件系统、注册表、遥控器和 Micro Debugger 的模拟。
brs-engine 使用 TypeScript 开发,并打包为一组 Webpack JavaScript 库。从 2.0 版本开始,我们还暴露了一个扩展接口,以便高级功能可以作为可选的捆绑包插入到解释器生命周期中。
此仓库组织为一个 monorepo,包含三个独立的包:
- brs-engine – 核心浏览器/Web Worker 包,为 Web 应用提供 BrightScript 解释器。
- brs-node – Node.js 包,为非浏览器平台提供 CLI 应用和解释器库。
- brs-scenegraph – Roku SceneGraph 扩展包,增加了对 RSG 组件和节点的支持。
[!NOTE]
- SceneGraph 的支持已基本完成,并以 beta 版本发布。我们面临诸多挑战,欢迎联系我们,了解您如何提供帮助。
- 尽管 brs-engine 可以运行带有用户界面的应用程序,但它无意模拟完整的 Roku OS 或硬件设备,其主要目标是作为面向 Roku Community 的开发工具。
- simulation engine 也可以作为在 iOS、macOS、Android、Linux 和 Windows 等其他平台上运行 BrightScript 应用程序和游戏的框架。
- 请参阅当前限制文档,以获取有关仍缺失或超出范围内容的更多详细信息。
- 本仓库最初是 brs 的分支,brs 是一个 BrightScript 命令行解释器。
📦 Browser Platforms Package

适用于 Web 应用、PWA 和 Electron 应用
浏览器包提供了一个完整的 BrightScript 解释器,可直接在浏览器环境中运行,并全面支持最高至 Roku OS 15.3 版本的 BrightScript 语言。
- 客户端执行 - 无需服务器
- Web Worker - 解释器在 Web Worker 中运行,针对浏览器性能进行了优化
- HTML5 Canvas 渲染 - 全面支持 Draw 2D API
- 音频与视频 - 通过 HTML5 Audio 和 Video 元素支持媒体播放
- 文件系统模拟 - 为 Roku 应用提供虚拟文件系统
- BrightScript 微型调试器 - 支持单步调试功能
- 输入模拟 - 通过键盘和游戏手柄为 Roku 应用模拟遥控器输入
安装
npm install brs-engine
📖 浏览器包:更多详情 | 🚀 实时演示 | 🧑💻 代码游乐场 | 🖥️ 桌面应用
📦 Node.js 和 CLI 包

适用于命令行工具、自动化及服务器端执行
Node.js 包包含一个完整的 CLI 应用程序、ECP 和 SSDP 服务器,以及 Simulation Engine Node.js 库,该库为在服务器端上下文或测试自动化工作流中运行 BrightScript 应用程序提供了强大的环境。
- 交互式 REPL - 命令行 BrightScript shell
- 文件执行 - 运行
.brs、.zip和.bpk文件,或通过--root运行文件夹应用 - Worker Threads - 应用程序运行在独立的 worker thread 上,每个 SceneGraph
Task也是如此 - 终端渲染 - 在终端中以 ASCII art、Unicode blocks 或内联图像(iTerm2/Kitty)的形式模拟
roScreen和roSGScreen输出 - 键盘遥控器 - 应用程序运行时,键盘充当 Roku 遥控器
- 日志与快照 - 将文本输出重定向到文件(
--log),并将屏幕保存为 PNG(--snapshot) - ECP 服务器 - External Control Protocol 实现
- 包创建 - 构建并加密
.bpk文件 - CI/CD 集成 - 非常适合自动化测试
安装
# for global CLI installation
npm install -g brs-node
# for project installation
npm install brs-node
📖 Node.js 软件包:更多详情 | ⌨️ CLI 指南
⚙️ 扩展包
- brs-scenegraph – 将 SceneGraph 运行时作为独立扩展提供,当 Roku 应用包含
pkg:/components/资源时会自动加载。 - Roku SDK1 兼容性(计划中) – 即将推出的扩展,专注于旧版 SDK1 频道及其 API。
- BrightSign 运行时(计划中) – 即将推出的扩展,用于添加对 BrightSign 特定组件和硬件功能的支持。
有关共享扩展模型的更多信息,请参阅 docs/extensions.md。
📚 项目文档
您可以使用或参与本项目的方式有很多种,请阅读以下文档以了解更多信息:
- 如何从源代码构建
- 如何将引擎添加到 Web 应用程序
- 如何作为命令行界面运行
- 如何使用 Node.js 库
- 如何使用和构建扩展
- 如何自定义引擎行为
- 遥控器模拟
- BrightScript 引擎 API 参考
- SceneGraph Rendezvous 架构
- BrightScript 引擎限制
- 如何为本项目做贡献
更新日志
- 点击此处查看发布更新日志。
🔗 开发者链接
- 我的网站:https://lvcabral.com
- 我的帖子:@lvcabral
- 我的 Bluesky:@lvcabral.com
- 我的 X/twitter:@lvcabral
- 我的播客:PODebug Podcast
- 查看我的其他 GitHub 仓库
📄 许可证
版权所有 © 2019-2026 Marcelo Lv Cabral。保留所有权利。
根据 MIT 许可证授权。