如何在游戏引擎中使用 moonbit 或 在 moonbit 中引入 OpenVR SDK?

1、moonbit 有没有可能【导入 c++ 库】,或者跟 c++ 混合着用,如果可以的话,那么很多现有的 AR、VR 的 sdk 都可以拿来用。

2、如果是反过来操作的话,比如在 c++ 项目中放一个 moonbit 或 wasm 虚拟机,就比较麻烦了,需要配置各种复杂的环境,而且还需要自己编写类型声明。当然,如果 moobit 团队能提供 c++ 和 wasm 虚拟机相关的【工程模板】,那也不错。

3、最痛的地方是,跨语言时需要额外写类型声明,而 moonbit 又必然要引入外部的类型,如果是少量类型还好,但如果是游戏引擎的类型或者某种 VR SDK 的类型声明,就很庞大了,有没有什么途径来根据某个 c++ 工程【自动生成 moonbit 可以使用的类型声明文件 】

虽然最近我也关注到了 moonbit 团队有在做 ui 方面的努力,并且语言还在初期,不过还是想尽早问一问上面这些问题。

可参考的项目是 GitHub - Tencent/puerts: PUER(普洱) Typescript. Let's write your game in UE or Unity with TypeScript. ,这个项目从 虚幻5 引擎中自动导出类型声明,ts 或 js 程序员则可以直接在虚拟机中直接使用这些类型声明进行编程。

也许还有更好的办法,比如:

自动把某个游戏引擎(如 Godot)或底层库(OpenVR)转到 moonbit 语言,我们可以在 moon 环境下直接调用,不用编写类型声明。

以上都需要大量人力,我只是轻轻的问一问,不敢奢求。

1 个赞

Moonbit 还处在项目早期,目前主要提供和 JavaScript FFI 的直接互操作。

C++的话取决于你的使用需求,如果你可以用 emscripten 或者其他工具把 C++ 的库编译到 wasm 再进行调用的话,这个需求我们可能会作为中期计划进行考虑;如果需要像 Rust 那样支持 [#repr(C)] 这种形式的内存布局以及更多直接的互操作并且编译到 native 的话,那可能不在我们中短期的计划之内。

3 个赞

puerts还一直在更新啊,赞。之前看过puerts的UE部分的源码(但是已经很久了,看的时候UE还是4),并不算很复杂,感觉moonbit到了beta之后我们自力更生搞一个也行吧?UObject已经相当完善了,又有puerts代码可以参考,做一个UE+moonbit的应该不难。对于自己的其他c++项目,只要有一定的反射功能,用moonbit应该也不复杂。不过还要看moonbit明年是否会支持native,对于gamedev来说区别还挺大?这个话题我也有兴趣,以后还可以再讨论哈

1 个赞