我有过Pygame的一些经验,但是这些天似乎有很多关于Pyglet的嗡嗡声.
这两个库如何比较?在功能和易用性方面,使用一个优于另一个的优势是什么?
最后,你会说一个比另一个更Pythonic吗?
Pygame:LGPL许可证
Pyglet:BSD许可证
Pygame严重依赖SDL库
Pyglet是一个纯粹的python库,具有较少的依赖性,我认为它需要更好地理解OpenGL
Pygame在这附近很长一段时间,很多人都在使用它
Pyglet是一个新的lib
Pygame面向游戏开发(游标,精灵,操纵杆/游戏手柄支持)
Pyglet更通用(尽管它有一个Sprite类)
我在pyglet-users邮件列表上也发现了这个讨论:从pygame + pyopengl到pyglet
免责声明:我还没有使用过,只试过一些教程;-)
我正在考虑使用Pygame和Pyglet作为一个小型2D射击游戏,在查看源代码之后,一些教程与Pyglet一起进行.我对结果非常满意.
Pyglet立即工作,很愉快,并且在概念上非常干净.它对我来说当然有一种Pythonic的感觉:你可以很快得到一个简单易懂的例子,它使用装饰器来很好地处理事件.它也没有强制使用特定的程序结构,这使我很容易混合使用Pymunk的物理建模(http://code.google.com/p/pymunk/).
虽然它基于OpenGL并且您可以将这些功能用于特殊效果,但我能够在不知道它们的情况下做得很好.
它也适用于py2exe和py2app,这很重要,因为很多人没有安装Python解释器.
不利的一面是,它在网络上的信息较少,因为它更新,以及更少的示例游戏.
此外,它与以前的版本相比发生了很大的变化,因此现在的一些教程已经过时了(有"新风格事件循环"和Sprite类作为主要补充.)
我建议下载这些例子(包括一个名为Astraea的漂亮的Asteroids克隆)并看看你是否喜欢这种风格.
如果您从未打算在游戏本身中绘制任何矢量图形或基元,并且只是坚持从磁盘加载图像,那么Pyglet是很好的(对于2D游戏).它也更清洁,因为没有必要编写自己的游戏循环,不得不担心速度,时间和响应能力.
但是,如果你必须在运行中生成图形,然后将它们保存为变量或文件,那么pyglet会变得相当复杂,因为你开始不得不使用低级OpenGL函数.在这些场景中,pygame更加用户友好,其软件渲染和Surface类.或者您可以使用Python Imaging Library并将其与pyglet连接.
显然,对于3D游戏,无论如何你都不得不使用OpenGL函数,在这种情况下我推荐pyglet而不是pygame + PyOpenGL.
我想补充一点,有一个快速精灵库Rabbyt可能是Pyglet的一个很好的补充.