嗨,

我想这里的人会对我过去几天一直在开发的一个新的跨平台 UI 运行时/中间件感兴趣。它免费,遵循 MIT 许可证。

TLDR;

一种低[开销且高性能]的方式,使用 React 构建原生游戏 UI。作为一个有点过度的演示,整个网站实际上是通过运行时渲染到画布上(相当于在浏览器里再嵌入一个浏览器)。

更真实的演示示例:https://orktes.github.io/jsui/three/ 和 https://orktes.github.io/jsui/demo/。

更多集成示例:https://github.com/orktes/jsui/blob/main/integrations/README.md

背景

我已经在游戏相关开发上波澜不惊地坚持了大约 30 年,既包括工具(引擎、SDK 等)也包括直接构建游戏。最近我在一个项目中,过去十年左右构建更复杂、响应式且外观精美的 UI 都显得十分困难。许多 AAA 游戏曾使用 Scaleform GFx(使用 Flash 构建向量 UI),而现在则倾向于嵌入类 CEF(Chromium Embedded Framework)来实现相同效果。我曾几次查看 [Rive.app],虽然它看起来很酷,但仍然不如使用 HTML 和 CSS 来构建内容直观。[Coherent Gameface] 从纸面上看可能符合这一模式,但即便获取报价也需要联系他们。

因此我只能选择:

  • 继续使用引擎自带的功能(虽然它们在改进,但距离完美仍有很长的路程。但合理的,构建一个优秀的游戏引擎与构建一个真正优秀的 2D 向量运行时是不同的)
  • 在桌面使用 CEF,在移动端使用 WebView 嵌入浏览器
  • 付费中间件,如 [Rive.app] 或 [Coherent Gameface]

再加上 AI(我明白这会引发争议)能够创建外观非常精美的 Web UI,使我觉得最接近浏览器 UI 方式的解决方案是最理想的。多年来我曾多次实现浏览器嵌入,但其开销确实显著,尤其是在移动端,对于需要与游戏实时交互的功能(如实时健康条、移动物体上的其他信息等)来说,它几乎是不可行的。

简而言之,我决定满足我已有十年左右的灵感,构建一个真正跨平台且高性能的 UI 中间件,使用小型 JS 解释器和 Skia 进行渲染。

解决方案:JSUI

JSUI 尝试从浏览器和 React Native 的工作方式中提取最佳部分,并将其适配为易于使用的运行时,可嵌入到游戏(或任何其他地方)。JS 执行主要用于构建 UI、配置动画以及将游戏数据绑定到 UI 的位置和内容,所有动画和渲染的重量级操作都在原生运行时中完成,开销极小。

[性能] 和功能正在逐步完善,但改进仍在进行中。仓库中包含 Godot、Unreal、Unity、Sokol、Raylib、SDL3 和 ThreeJS 的示例集成,而且在其他库/引擎上使用也相对容易。

当前 [演示] 在所有集成中使用,为帧渲染添加约 +0.04 / +0.08 ms 的开销。

这主要是为了我的个人使用,但如果其他人能找到用途我也很高兴。欢迎贡献。