【问题标题】:Differences between Python game libraries Pygame and Pyglet?Python游戏库Pygame和Pyglet的区别?
【发布时间】:2020-05-02 16:42:56
【问题描述】:

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

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

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

【问题讨论】:

    标签: python pygame pyglet


    【解决方案1】:

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

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

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

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

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

    另外,它与以前的版本相比有很大的变化,所以现在有些教程已经过时了(有“新样式的事件循环” 和 Sprite 类作为主要补充。)

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

    【讨论】:

      【解决方案2】:

      许可证:

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

      库依赖:

      • Pygame 严重依赖 SDL 库
      • Pyglet是一个依赖较少的纯python库,我觉得需要对OpenGL有更好的理解

      社区:

      • Pygame 出现很久了,很多人都用过
      • Pyglet 是一个新的库

      观众:

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

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

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

      【讨论】:

      • Pyglet 必须依赖 OpenGL,就像 Pygame 依赖 SFL 一样
      • 没错,但据我了解,它通过操作系统API访问GL调用,而SDL在大多数情况下需要安装。公平地说,为了更好的 A/V 支持,Pyglet 需要 AVbin。
      【解决方案3】:

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

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

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

      【讨论】:

        【解决方案4】:

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

        【讨论】:

        【解决方案5】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2016-05-04
          • 2020-07-26
          • 2015-06-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-03-20
          相关资源
          最近更新 更多