当我掌握了基础知识(控制结构、类等),我想开发一个2D游戏。我已经尝试过各种2D图形库(cairo、sdl、openframeworks、clutter),但是clutter似乎是最优化的加速图形和矢量绘图库。
clutter是否适合2D游戏?我意识到它与其他库不同,它保持自己的场景图,但我以前开发过Flash游戏,所以我应该习惯这个。
是否存在任何性能问题需要注意?是否有其他人在使用clutter进行大量图形处理方面有经验?
我曾经使用Clutter进行过很多嵌入式系统工作,并且现在正在使用它进行桌面项目。它可能非常适合基于桌面的2D游戏,但需要注意以下几点:
尽管如此,您可以用它实现惊人的效果。我非常喜欢使用它,一旦您了解了如何使用它,与C++混合使用将会很有趣。
此外,有一个名为GUADEC的真正激动人心的开源大会,Clutter的开发人员都在那里。如果您在2011年7月的柏林展示一个真正有趣的基于Clutter的游戏,人们会给您买很多饮料。
我必须承认我以前从未听过Clutter,这可能是因为它不是一个Windows库,而大多数游戏开发者都在Windows平台上工作。同样,大多数游戏开发者(即使是业余爱好者)也没有考虑使用Cairo或Openframeworks。更常见的是使用SDL,尽管它不是完全硬件加速的,因此对于现代游戏而言并不是一个好选择。SFML 是一种备受欢迎的替代方案,但现在大多数游戏开发者可能都在SDL之上自行开发他们自己的OpenGL渲染。
看起来,Clutter可能是一个不错的选择,而且它似乎功能齐全。但有时较大的框架的问题在于它们变成了一种封闭的环境,很难集成您可能需要的额外模块 - 例如,我不知道输入如何工作。
使用不太知名的引擎的另一个问题是,如果您去https://gamedev.stackexchange.com/或http://www.gamedev.net提问,社区可能无法提供太多帮助,因为他们不熟悉您正在使用的技术。您必须权衡这种成本与使用不受欢迎但实际上非常有能力的库所带来的潜在收益之间的关系。(以及这些其他人是否知道您不知道的东西...)
Clutter是相对较新的技术,目前使用它的应用程序并不多,特别是游戏方面。因此,你很难找到有游戏开发经验的人。
尽管如此,Clutter确实具有一些有趣的功能,使其在某些情况下看起来非常吸引人,我甚至认为,在许多类型的游戏中,内部场景图甚至可以成为游戏开发者的优势。
我想向您提出另一个有趣的2D游戏图形选项:诺基亚的Qt。
虽然它主要是一个通用GUI工具包,但它具有一些不是每个游戏开发者都会意识到的好处。事实上,它有一个完整的OpenGL绘图后端,可以用于绘制任何小部件,并使用任何Qt的画布绘图操作。
当您开始显式使用QGLWidget时,情况就变得疯狂了,它不仅强制执行GL绘图模式(这不是默认值),而且还允许您将自己的GL绘图与Qt的绘图操作混合在同一上下文中。您不仅获得了使用简单易用、高级别绘图操作配合强大的事件队列和高效的输入处理的可能性,而且还保持了在未来内置更高级别的低级别图形的自由。
请查看此示例。请注意,您可以自由混合本地GL绘图与Qt的Painter功能(如果您注意GL矩阵堆栈)。