8

正在考虑使用 Qt 制作游戏,并且想知道 QML 是否已经到了可以在桌面上用作重要工具的地步。已经看到 Qt 的一些帖子说他们最终会将大多数东西转换到 QML,所以这似乎是要走的路,至少根据 Qt 来说。

编辑:我意识到 QML 可能不是具有大量图形的 3D 游戏的最佳选择。正在寻找更多的东西,主要是 2D 的东西,比如平台类型的游戏。

看到这个http://labs.qt.nokia.com/2010/08/12/a-guide-to-writing-games-with-qml/。所以在某种程度上它显然是可能的。我还看到了一些仅使用 java 脚本制作的令人印象深刻的游戏,我相信这是 QML 的基础。我只是好奇目前使用 Qt 的最佳方式是什么,因为最近情况正在发生变化......

4

3 回答 3

11

这可能取决于您希望在发布游戏之前等待“多长时间”。

Trolls/Qt 现在正在重新构建它的“图形堆栈”:他们正在重新实现一个单一的渲染整个界面的图形堆栈,其中“小部件”本身只是提供给渲染的数据集。简而言之,我们的目标是使桌面/移动应用程序的性能与数十年来高端游戏完全相同(它们自己的图形堆栈看起来与典型的X/Xlib/Motif/Xvt/Win/MFC/Qt应用程序图形堆栈完全不同)。此外,Qt5 计划(现在正在计划/开发中,他们声称明年某个时候发布)依赖于 OpenGL 来实现这个图形堆栈。

在这项工作之后,管道将是: Widgets==>QML==>(C++ Graphics Stack)==>Hardware. 当前(Qt 4 和以前的版本)它是: QML==>Widgets==>(C++ Graphics Stack)==>Hardware.

您可以在谷歌上搜索各种帖子/讨论,或者这是一个关于这些努力的长篇演讲:http: //qt.nokia.com/developer/learning/online/talks/developerdays2010/tech-talks/performance-以正确的方式做图形/

恕我直言,QML 对游戏更有意义,因为界面组件是“独立参与者”(例如,不通过布局相互关联)。这也是为什么 QML 对移动(房地产是溢价的)和非常华丽的桌面应用程序(尽管它仍然相对年轻且未经证实)更有意义的原因。

QML 已经有很多渲染/动画选项,但它们大多是非常丰富的 2D(但您可以很好地模拟 3D)。QML 3D 现在正在进行重大修订,但新的东西看起来非常好(并且位于 OpenGL 上)。因此,如果您想要重度 3D,目前可能是试验时间,直到您看到新的 Qt5 接口并可以利用硬件加速(取决于您需要多少 3D)。

我从带有新图形堆栈(在原型开发中)的新 Qt5 产品中看到的性能规格非常令人印象深刻,以至于我一直在考虑用 QML 编写一些游戏来玩它。如果这是从现在开始的 12 个月(或者在 Qt5 发布之后),我敢打赌 QML 将是游戏的最佳/最简单的决定(因为组件是独立的参与者,它使用起来非常简单,并且我会将所有特定于游戏的繁重东西都推到 C++ 中,这在 QML 之上真的很容易做到)。

于 2011-06-21T15:23:31.033 回答
7

QML 绝对是设计 2D 游戏的可行选择,可以为您节省大量时间和代码行数。 V-Play (v-play.net) 是一个基于 Qt/QML 的跨平台 2D 游戏引擎,具有许多有用的 V-Play QML 游戏组件,用于处理多种显示分辨率和纵横比、动画、粒子、物理、多点触控、手势、路径查找等(API 参考)。

如果您对使用 V-Play 制作的游戏感到好奇,以下是它们的快速选择:

于 2013-06-11T08:50:43.330 回答
4

请记住,QML 仅用于布局 UI。从根本上说,它充当具有许多实用功能的 QGraphicsView(QML 中的代码至少比 Qt/C++ 等效代码短三倍,至少,我是这么认为的)

应用程序的核心仍然由 javascript 文件(如果事情不太复杂)或 C++/Qt 文件(如果您想要 Qt 的全部可能性)处理

正如 Jeremy Salwen 所说,对于一款看起来像智能手机应用游戏的游戏(带有漂亮过渡的大精灵,背后有简单的逻辑),那么 QML 就绰绰有余了。

但是,如果您想要一些复杂的东西,那么您最终将在 QML 中仅使用您之前在 C++ 中定义的 QDeclarativeItem 类。没那么有用。

于 2011-06-21T09:47:59.200 回答