3

我是一个相对较新的开发人员,我正在寻找学习 C++。我有使用 java、javascript、actionscript 和 python 编码的经验,但我想要一些足够快的东西来完成一些高性能的 2D 和 3D 游戏。

当我最终学习基础知识(控制结构、类等)时,我想开发一个 2D 游戏。我探索了各种用于 2D 图形的库(cairo、sdl、openframeworks、clutter),但clutter似乎是针对加速图形和矢量绘图最优化的。

混乱是否适合 2D 游戏?我意识到它与其他库不同,它维护自己的场景图,但我过去开发过一个 Flash 游戏,所以我应该习惯它。

是否有任何我应该注意的性能问题?有没有其他人有过在杂乱无章的情况下制作繁重图形的经验?

4

3 回答 3

7

我已经使用 Clutter 完成了很多嵌入式系统工作,现在正在用它做一个桌面项目。对于基于桌面的 2D 游戏来说,它可能会很棒,但有一些注意事项:

  1. 该工具包的主线开发非常面向 Linux。我不确定 Windows、Mac 或 iOS(“果味”)端口的维护情况如何。
  2. 文档很少,而且没有书籍。(我正在考虑写一个。)
  3. 它是用 C 编写的,并且本机公开了 C 语言绑定。虽然包括 C++ 在内的许多语言都有 Clutter 绑定,但您仍然需要了解 C 语言绑定。
  4. 它本身并不使用 C++ 对象。相反,它将基于 C 的 GObject 系统用于单继承对象,即使您使用 C++ 绑定对其进行写入,您也需要了解一些 GObject。
  5. 如果你想将它与线程一起使用,你必须使用它的线程系统——而不是POSIX 线程、Boost 线程或其他任何东西。
  6. 它确实可以击败 GPU 的焦油,因此,如果您正在做一些花哨的事情,那么在廉价笔记本电脑和上网本中使用的一些低端英特尔芯片上,帧速率可能是平庸的。

也就是说,你可以用它做惊人的事情。我真的很喜欢使用它,一旦你了解了如何去做,与 C++ 混合和匹配就会很有趣。

此外,还有一个名为 GUADEC 的真正摇滚的开源会议,Clutter 的人们挂在那里。如果你在 2011 年 7 月带着一款非常有趣的基于 Clutter 的游戏出现在柏林,人们会为你买很多饮料。

于 2010-11-11T02:25:59.563 回答
1

我必须承认我以前从未听说过 Clutter,可能是因为它不是 Windows 库,而且大多数游戏开发人员都在 Windows 平台上工作。同样,大多数游戏开发者(甚至是独立/业余爱好者)也没有考虑 Cairo 或 Openframeworks。到目前为止,更常见的是使用 SDL,尽管它不是完全硬件加速的,因此对于现代游戏来说不是一个好的选择。SFML是一种越来越受欢迎的替代方案,但如今大多数游戏开发人员可能都在 SDL 之类的基础上推出自己的 OpenGL 渲染。

从外观上看,Clutter可能是一个不错的选择,而且它看起来确实功能齐全。但有时较大框架的问题在于它们会变成一个有围墙的花园,并且很难集成您可能需要的额外部分 - 例如,我不知道输入的效果如何。

使用不太知名的引擎的另一个问题是,如果您访问https://gamedev.stackexchange.com/http://www.gamedev.net并提出问题,社区将无法提供帮助因为他们不熟悉您使用的技术。您必须在成本与使用不受欢迎但实际上非常有能力的库所带来的潜在收益之间取得平衡。(以及这些其他人知道你不知道的事情的可能性......)

于 2010-08-26T10:12:32.617 回答
0

Clutter 相对较新,目前使用它的应用程序并不多。尤其是游戏。因此,您将很难找到具有游戏经验的人。

也就是说,clutter 确实有一些有趣的特性,使它看起来很有吸引力,我什至声称对于许多类型的游戏玩法,内部场景图甚至可以成为游戏开发者的优势。

我想向您推荐另一个有趣的 2D 游戏图形选择:诺基亚的 Qt。

虽然它主要是一个通用的 GUI 工具包,但它的比例很好,并不是每个游戏开发人员都会首先意识到的。事实上,它有一个成熟的 OpenGL 绘图后端,可用于绘制任何小部件,并使用Qt 的任何画布绘图操作。

一旦你开始明确地使用 QGLWidget,事情就会变得疯狂,它不仅强制执行 GL 绘图模式(这不是默认模式),而且还允许你在同一上下文中将自己的 GL 绘图与 Qt 的绘图操作混合。您不仅可以使用简单易用的高级绘图操作,还可以使用强大的事件队列和高效的输入处理;此外,您将来可以自由地内置更高级的低级图形。

请参阅此示例。请注意,您可以将原生 GL 绘图与 Qt 的 Painter 功能自由混合(如果您注意 GL 矩阵堆栈)。

于 2010-08-26T10:39:41.900 回答