46

我有一些使用 Pygame 的经验,但这些天似乎有很多关于 Pyglet 的嗡嗡声。

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

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

4

5 回答 5

31

执照:

  • Pygame:LGPL 许可证
  • Pyglet:BSD 许可证

库依赖:

  • Pygame 严重依赖 SDL 库
  • Pyglet是一个依赖较少的纯python库,我认为它需要更好地理解OpenGL

社区:

  • Pygame 已经存在很久了,很多人都用过
  • Pyglet 是一个新的库

观众:

  • Pygame 面向游戏开发(光标、精灵、操纵杆/游戏手柄支持)
  • Pyglet 更通用(尽管它有一个 Sprite 类)

我还在 pyglet-users 邮件列表上找到了这个讨论:从 pygame+pyopengl 到 pyglet

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

于 2008-12-16T13:08:52.373 回答
31

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

Pyglet 立即工作,使用起来很愉快,并且在概念上非常干净。它确实给我一种 Pythonic 的感觉:你可以很快地得到一个简单易读的示例,并且它使用装饰器来很好地处理事件。它也没有强制使用特定的程序结构,这让我很容易融入 Pymunk 的物理建模 ( http://code.google.com/p/pymunk/ )。

虽然它基于 OpenGL,并且您可以将这些功能用于特殊效果,但我能够在不了解它们的情况下做得很好。

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

不利的一面是,由于它较新,因此网络上有关它的信息较少,而且可供查看的示例游戏也较少。

此外,它与以前的版本相比发生了很大变化,因此其中的一些教程现在已经过时(有“新样式事件循环”和 Sprite 类作为主要添加内容。)

我建议下载示例(包括一个不错的 Asteroids 克隆,名为 Astraea),看看你是否喜欢这种风格。

于 2008-12-29T02:40:06.980 回答
15

如果您从不打算在游戏本身中绘制任何矢量图形或图元,并且只坚持从磁盘加载图像,那么 Pyglet 是很好的(对于 2D 游戏)。它也更干净,因为无需编写自己的游戏循环,也无需担心速度、时间和响应能力。

但是,如果您必须即时生成图形,然后将它们保存为变量或文件,那么 pyglet 会变得相当复杂,因为您开始不得不处理低级 OpenGL 函数。在这些场景中,pygame 的软件渲染和 Surface 类更加用户友好。或者您可以使用 Python Imaging Library 并将其与 pyglet 接口。

显然,对于 3D 游戏,无论如何您都将不得不使用 OpenGL 函数,在这种情况下,我建议使用 pyglet 而不是 pygame + PyOpenGL。

于 2010-12-23T16:08:56.957 回答
5

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

于 2009-01-05T18:59:37.660 回答
3

在查看了 pygame 和 pyglet 之后,我发现 pyglet 更容易上手,并且能够在几天内编写一个简单的突围风格游戏。

于 2010-03-19T14:00:39.233 回答