【发布时间】:2020-05-02 16:42:56
【问题描述】:
我有一些使用 Pygame 的经验,但这些天似乎有很多关于 Pyglet 的讨论。
这两个库如何比较?在功能和易用性方面,使用其中一种比另一种有什么优势?
最后,你会说一个比另一个更Pythonic吗?
【问题讨论】:
我有一些使用 Pygame 的经验,但这些天似乎有很多关于 Pyglet 的讨论。
这两个库如何比较?在功能和易用性方面,使用其中一种比另一种有什么优势?
最后,你会说一个比另一个更Pythonic吗?
【问题讨论】:
我正在考虑将 Pygame 和 Pyglet 都用于小型 2D 射击游戏,在查看了源代码和一些教程之后,我选择了 Pyglet。我对结果非常满意。
Pyglet 立即工作,使用起来很愉快,并且在概念上非常干净。它确实给我一种 Pythonic 的感觉:你可以很快得到一个简单易读的示例,并且它使用装饰器来很好地处理事件。它也没有强制使用特定的程序结构,这让我很容易融入 Pymunk 的物理建模 (http://code.google.com/p/pymunk/)。
虽然它基于 OpenGL,并且您可以将这些功能用于特殊效果,但我能够在不了解它们的情况下做得很好。
它也适用于 py2exe 和 py2app,这很重要,因为很多人没有安装 Python 解释器。
不利的一面是,网络上关于它的信息较少,因为它较新,而且可供查看的示例游戏也较少。
另外,它与以前的版本相比有很大的变化,所以现在有些教程已经过时了(有“新样式的事件循环” 和 Sprite 类作为主要补充。)
我建议下载示例(其中包含一个不错的 Asteroids 克隆,名为 Astraea),看看你是否喜欢这种风格。
【讨论】:
我还在 pyglet-users 邮件列表上找到了这个讨论:from pygame+pyopengl to pyglet
免责声明:我还没有使用过,只是尝试了一些教程;-)
【讨论】:
如果您从不打算在游戏本身中绘制任何矢量图形或图元,而只是坚持从磁盘加载图像,那么 Pyglet 是很好的(用于 2D 游戏)。它也更简洁,因为无需编写自己的游戏循环,也不必担心速度、时间和响应能力。
但是,如果您必须即时生成图形,然后将它们保存为变量或文件,那么 pyglet 会变得相当复杂,因为您开始不得不处理低级OpenGL 函数。在这些场景中,pygame 的软件渲染和 Surface 类更加用户友好。或者您可以使用 Python Imaging Library 并将其与 pyglet 接口。
显然,对于 3D 游戏,无论如何您都将不得不使用 OpenGL 函数,在这种情况下,我建议使用 pyglet 而不是 pygame + PyOpenGL。
【讨论】:
我想补充一点,有一个快速精灵库Rabbyt,它可能是 Pyglet 的一个很好的补充。
【讨论】:
在查看了 pygame 和 pyglet 之后,我发现 pyglet 更容易上手,并且能够在几天内编写一个简单的突围风格游戏。
【讨论】: