ITADN
lvcabral/brs-engine
README.md
以下内容由 AI 翻译,如有问题请点此提交 issue 反馈

BrightScript 模拟引擎

一个用于在浏览器平台和 Node.js 上运行 Roku 应用的 BrightScript 语言解释器。

NPM Version NPM Version NPM Version Slack

License Build Security Rating Quality Gate Status

项目

BrightScript 模拟引擎 实现了 BrightScript 语言的解释器,可嵌入 Web、Electron 和 Node.js 应用程序中,或作为独立的 CLI/REPL 工具使用,从而允许 Roku 应用 在多个不同的非 Roku 平台上运行。

最初的重点是支持 Draw 2D API 组件(roScreenroCompositorroRegion 等)以及 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

Simulator Web and Desktop

适用于 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 包

Simulator 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)的形式模拟 roScreenroSGScreen 输出
  • 键盘遥控器 - 应用程序运行时,键盘充当 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

📚 项目文档

您可以使用或参与本项目的方式有很多种,请阅读以下文档以了解更多信息:

更新日志

  • 点击此处查看发布更新日志。

🔗 开发者链接

📄 许可证

版权所有 © 2019-2026 Marcelo Lv Cabral。保留所有权利。

根据 MIT 许可证授权。