使用Kivy创建模拟器前端是否可行?

时间:2016-11-01 07:38:15

标签: python c++ kivy

我已经使用C ++创建了一个gameboy颜色模拟器,并准备开始开发前端,该前端将显示模拟器的视口,发出音频,并显示一些调试信息。

我正在研究使用Kivy来创建UI前端和boost.python(看起来非常有前途)来在C ++核心和python UI之间进行交互。

我希望在我的前端拥有:

  • 显示模拟器图形的窗口。更具体地说,让我更新每个帧上的原始位图(即原始像素数据)。
  • 显示一些调试信息的窗口。更具体地说,我想要一个大的可滚动文本框来显示反汇编的代码,另一个用于显示内存。
  • 发出模拟器生成的音频的方法。核心并不支持音频,所以我不确定它在C ++方面会是什么样子。
  • 接受键盘输入以控制游戏。

Kivy会允许我做这一切吗?我看到它依赖于glew和sdl2,这应该照顾图形和音频要求,对吧?是否有可以让我创建反汇编和内存查看器的小部件?

1 个答案:

答案 0 :(得分:1)

  

显示模拟器图形的窗口,在每个帧上更新原始位图

不确定究竟是多少,但是你可以通过Kivy和Python访问纹理和OpenGL的很大一部分,所以这可能是可行的。

  

显示一些调试信息的窗口,大型可滚动文本框

使用RecycleView和Label的核心。 ListView有一个例子,但是由于新的更改它有点破碎。但是,以类似的方式可以为RecycleView

完成
  

发出由模拟器生成的音频的方法

如果可以将其传递给提供者,应该没有问题。我在Kivy中看到内置音频支持的唯一问题是暂停和搜索,因为那些afaik未实现(最有可能)或被破坏。但是对于Gstreamer它应该可以工作。

  

接受键盘输入以控制游戏。

键盘和多点触控开箱即用Kivy,你只需要(用于键盘)扩展一个方法和(用于触摸)检查与小部件的碰撞

  

是否有可以让我创建反汇编和内存查看器的小部件?

没有。至少我所知道的都不会开箱即用。如果通过反汇编表示文本,则将其转储到可以处理文本的小部件中。然而,内存查看器不存在,您需要创建自己的小部件。如果你和Kivy一起工作至少一段时间并不难。

Kivy默认不做3D。有“插件”可以允许你这样的事情,但我没有看到任何仍然保持,所以有这个东西。另外我看到代码不是C,而是C ++所以我不确定如何将它们绑定在一起。 Cython应该是这里的救援^^