Python游戏库Pygame和Pyglet之间的区别?

我对Pygame有过一些经验,但是现在Pyglet似乎有很多嗡嗡声。

这两个库如何比较? 在function和易用性方面,使用其中一个的优势是什么?

最后,你会说一个比另一个更Pythonic?

我正在考虑Pygame和Pyglet一个小型的2D射击游戏,在查看源代码之后,Pyglet学习了一些教程。 我对结果非常满意。

Pyglet立即工作,很高兴与之合作,概念上非常干净。 对我来说,这确实有Pythonic的感觉:你可以很快得到一个简单易读的例子,它使用装饰器来处理事件。 它也没有强制一个特定的程序结构,这使得我可以很容易地混合在Pymunk( http://code.google.com/p/pymunk/ )的物理build模中。

虽然它基于OpenGL,你可以使用这些function的特殊效果,我能够做得很好,没有任何他们的知识。

它也适用于py2exe和py2app,这很重要,因为很多人没有安装Python解释器。

缺点是,networking上的信息较less,因为它比较新,而且样本游戏也较less。

另外,它和以前的版本有很大的不同,所以现在有一些教程已经过时了(还有“新风格的事件循环”和Sprite类作为主要的补充)。

我会build议下载的例子(有一个很好的小行星包括阿斯特拉然克隆),看看你是否喜欢的风格。

Pygame:LGPL许可证

Pyglet:BSD许可证

Pygame严重依赖于SDL库

Pyglet是一个纯粹的python库,具有较less的依赖关系,我认为它需要更好的理解OpenGL

Pygame在这里已经很久了,很多人都用它

Pyglet是一个新的lib

Pygame面向游戏开发(游标,精灵,游戏杆/游戏手柄支持)

Pyglet更通用(尽pipe它有一个Sprite类)

我也发现了pyglet-users邮件列表上的这个讨论: 从pygame + pyopengl到pyglet

免责声明:我还没有使用,只尝试了一些教程;-)

如果你不打算在游戏本身中绘制任何vectorgraphics或图元,只要坚持从磁盘加载图像,Pyglet就是好的(对于2D游戏)。 它也更清洁,因为不需要编写自己的游戏循环,不用担心速度,时间和响应速度。

但是,如果您必须即时生成graphics,然后将其保存(无论是作为variables还是作为文件),则pyglet变得相当复杂,因为开始不得不使用低级别的OpenGL函数。 在这些场景中,pygame用户友好得多,软件渲染和Surface类。 或者你可以使用Python图像库,并与pyglet接口。

显然,对于3D游戏来说,无论如何你都必须使用OpenGL函数,在这种情况下,我推荐pyglet + PyOpenGL。

我想补充一点,有一个快速的精灵库Rabbyt可能是Pyglet的一个很好的补充。

看了pygame和pyglet,我发现pyglet更容易拾取,并能够在几天内写出一个简单的突破风格的游戏。