最近在研究libgodot,发现它将会在4.6版本集成libgodot,届时可以编译成c的静态库,libgodot.h,所以,我想着讨论一下是否可行:可以给Emacs的Dynamic Modules添加libgodot功能,这样就可以在emacs玩游戏了,不过应用估计远不止游戏,还能当成一个新的UI来用,跟Emacs互传数据之类的,开辟全新的UI之路。通过 GitHub - migeran/libgodot at libgodot_migeran_45 已可以下载相对应的库。
8 个赞
如果要写 UI,iced 和 qt 应该已经可以用了……?
我想了想,一个大问题是原生模块不方便读取 buffer 内容,拿不到指针,只能复制,为了性能就需要复杂的局部更新的同步方法。
不只是游戏,就一般的gui应用也能用godot开发,也许可以用libgodot给emacs写一个类似Lorien的白板/图像编辑器啥的,这样用org就能直接记手写笔记了。
跑去看了下今年 GodotCon 相关的演讲:
里面提到了两种使用方法:
- 直接调用,此时 LibGodot 会自行打开另外的窗口。这种方法和 LibGodot 其实没有太多关系——不用 LibGodot,另起一个进程用进程间通讯也可以(等下,这好像就和 EAF 差不多了诶……)。因此演讲基本直接跳过了这个场景的说明。
- 另一种方法就是让 LibGodot 渲染到程序提供的 surface 上去。但问题是,在 Emacs 里我们没有一个比较好的方法来获取什么 surface,也就自然没法嵌入画面。
当然,和 Qt 比的话,Godot 的 GDExtention 的优势看起来是它可能更容易生成跨语言绑定,按 extension_api.json 来即可。今年 GodotCon 还有另一个演讲介绍如何给语言添加绑定的:Adding new Script Languages to Godot。当然,这 API 看起来数量比 Emacs 的内置 C 函数还要多了,大概弄起来还是会非常累的。
4 个赞