pygame和pyglet的优缺点

44 投票
3 回答
47460 浏览
提问于 2025-04-15 13:31

我想知道应该先从哪个开始,pyglet还是pygame?哪个更快,哪个更新更活跃?

我还想知道pyglet是否会支持Python 3,因为我在这里看到过,可能不太可能或者需要很长时间。

谢谢。

3 个回答

8

这看起来和这个问题重复了:Python游戏库Pygame和Pyglet之间的区别是什么?

这是一个可以寻找更多答案的地方。

我参加了Steve Johnson在PyOhio的关于pyglet的演讲(演讲编号#18,链接在这里:http://pyohio.org/2009/Talks/),我对代码量之少感到非常惊讶。相比之下,pygame看起来比较复杂,我个人不太喜欢那些额外的依赖。

不过,我还没有为这两个库写过任何代码。我的计划是先从pyglet开始,等我熟悉了之后,再试试pygame,看看它们之间有什么不同。

我同意Alex的看法,如果你在网上搜索“pygame和pyglet的比较”,你会发现很多人有自己的偏好。唯一我看到的客观区别就是支持的显卡数量不同(pygame不需要OpenGL,所以pygame可以支持更多的显卡)。

15

我不能对其他回答评论,所以只好发这个新帖,抱歉。

从速度上看,Pyglet 绝对比 pygame 更快,尤其是刚开始使用的时候。速度在用pygame开发时总是个问题,因为你需要更新屏幕上最小的部分,而且记住哪些地方发生了变化可能会很麻烦。而使用pyglet就没有这个问题。

如果你使用 cocos2d(这是在pyglet之上的一个框架),那么加速就更简单了,只需要把精灵(sprites)放到一个BatchNode里,就能看到帧率(FPS)上升。

正如评论中所说,pyglet支持python3。

这只是我个人的偏好,我更喜欢Pyglet,而且加上cocos2d后,学习起来真的很简单。缺点是社区相对较小。

38

pygame 是一个非常活跃的项目,最近在八月份发布了1.9版本,增加了对诺基亚 S60 的支持,还增强了对 py2app 和 py2exe 的支持,并且加入了一堆实验性的新功能(比如支持 Python 3.1、网络摄像头、图形等)。像 Hello World 这样的书籍,以及定期举行的有趣比赛,比如 ludumdarepyweek,都显示了这个社区和生态系统的活力。

pyglet 则有一个简洁、更新的接口,使用起来很方便(纯 Python,采用 BSD 许可证,而不是 LGPL)。

至于速度,我没有做过基准测试,但我了解到,pyglet 在利用先进的硬件加速进行 3D 工作方面表现更好,而 pygame 在 2D 工作和一些不那么先进的硬件上表现更佳(比如智能手机、上网本等,它们没有强大的 3D 硬件加速器)。不过,你可以通过插件来提升这两个框架的速度,但这样会失去一些便利性。

在 Python 3 的支持等方面,我认为问题在于 pygame 更成熟、更受欢迎,核心开发团队也大得多,所以它能更早地支持像 Python 3 这样的新特性。

如果以上这些问题对你来说都不是决定性的(你对 LGPL 和 BSD 没有太大偏好,不太关心智能手机,不需要书籍等等),那么最合理的做法就是下载这两个框架,尝试在你感兴趣的机器上完成相同的基础任务——这样你就能知道哪个更适合你,满足你的速度需求、便利性等等。

撰写回答