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