pygame和pyglet的优缺点
3 个回答
这看起来和这个问题重复了:Python游戏库Pygame和Pyglet之间的区别是什么?
这是一个可以寻找更多答案的地方。
我参加了Steve Johnson在PyOhio的关于pyglet的演讲(演讲编号#18,链接在这里:http://pyohio.org/2009/Talks/),我对代码量之少感到非常惊讶。相比之下,pygame看起来比较复杂,我个人不太喜欢那些额外的依赖。
不过,我还没有为这两个库写过任何代码。我的计划是先从pyglet开始,等我熟悉了之后,再试试pygame,看看它们之间有什么不同。
我同意Alex的看法,如果你在网上搜索“pygame和pyglet的比较”,你会发现很多人有自己的偏好。唯一我看到的客观区别就是支持的显卡数量不同(pygame不需要OpenGL,所以pygame可以支持更多的显卡)。
我不能对其他回答评论,所以只好发这个新帖,抱歉。
从速度上看,Pyglet 绝对比 pygame 更快,尤其是刚开始使用的时候。速度在用pygame开发时总是个问题,因为你需要更新屏幕上最小的部分,而且记住哪些地方发生了变化可能会很麻烦。而使用pyglet就没有这个问题。
如果你使用 cocos2d(这是在pyglet之上的一个框架),那么加速就更简单了,只需要把精灵(sprites)放到一个BatchNode里,就能看到帧率(FPS)上升。
正如评论中所说,pyglet支持python3。
这只是我个人的偏好,我更喜欢Pyglet,而且加上cocos2d后,学习起来真的很简单。缺点是社区相对较小。
pygame 是一个非常活跃的项目,最近在八月份发布了1.9版本,增加了对诺基亚 S60 的支持,还增强了对 py2app 和 py2exe 的支持,并且加入了一堆实验性的新功能(比如支持 Python 3.1、网络摄像头、图形等)。像 Hello World 这样的书籍,以及定期举行的有趣比赛,比如 ludumdare 和 pyweek,都显示了这个社区和生态系统的活力。
pyglet 则有一个简洁、更新的接口,使用起来很方便(纯 Python,采用 BSD 许可证,而不是 LGPL)。
至于速度,我没有做过基准测试,但我了解到,pyglet 在利用先进的硬件加速进行 3D 工作方面表现更好,而 pygame 在 2D 工作和一些不那么先进的硬件上表现更佳(比如智能手机、上网本等,它们没有强大的 3D 硬件加速器)。不过,你可以通过插件来提升这两个框架的速度,但这样会失去一些便利性。
在 Python 3 的支持等方面,我认为问题在于 pygame 更成熟、更受欢迎,核心开发团队也大得多,所以它能更早地支持像 Python 3 这样的新特性。
如果以上这些问题对你来说都不是决定性的(你对 LGPL 和 BSD 没有太大偏好,不太关心智能手机,不需要书籍等等),那么最合理的做法就是下载这两个框架,尝试在你感兴趣的机器上完成相同的基础任务——这样你就能知道哪个更适合你,满足你的速度需求、便利性等等。