使用杂波进行游戏开发

时间:2010-08-26 09:25:30

标签: c++ clutter

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

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

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

我应该注意哪些性能问题?有没有其他人有经验做杂乱的图形?

3 个答案:

答案 0 :(得分: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中的焦油,所以如果你正在做一些奇特的事情,那么便宜的笔记本电脑和上网本中使用的一些低端英特尔芯片的帧速率可能是平庸的。
  7. 那就是说,你可以用它做出惊人的事情。我非常喜欢使用它,一旦你理解了如何做到这一点,与C ++的混合和匹配就会很有趣。

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

答案 1 :(得分:1)

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

从它的外观来看,Clutter 可能是一个不错的选择,它看起来似乎功能齐全。但有时候,较大框架的问题在于它们会成为一个有围墙的花园,并且很难整合你可能需要的额外位 - 例如,我不知道输入可能有多好用。

使用鲜为人知的引擎的另一个问题是,如果你转到https://gamedev.stackexchange.com/http://www.gamedev.net并提出问题,社区将无法提供帮助,因为它们不是熟悉您正在使用的技术。你必须平衡成本与使用不受欢迎但实际上非常称职的图书馆的潜在收益。 (以及这些其他人知道你不知道的事情的可能性......)

答案 2 :(得分:0)

Clutter相对较新,目前使用它的应用程序并不多。特别是游戏。所以你很难找到一个有游戏用途经验的人。

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

我想为您提供另一个有趣的2D游戏图形选项:来自诺基亚的Qt。

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

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

this example。请注意,您可以将原生GL绘图与Qt的Painter功能自由混合(如果您处理GL矩阵堆栈)。